text: /* Code generated by IfcQuery EXPRESS generator, www.ifcquery.com */
  
  #include <map>
  #include <functional>
  #include "ifcpp/model/BasicTypes.h"
  #include "ifcpp/IFC4/include/IfcActionRequest.h"
  #include "ifcpp/IFC4/include/IfcActor.h"
  #include "ifcpp/IFC4/include/IfcActorRole.h"
  #include "ifcpp/IFC4/include/IfcActuator.h"
  #include "ifcpp/IFC4/include/IfcActuatorType.h"
  #include "ifcpp/IFC4/include/IfcAddress.h"
  #include "ifcpp/IFC4/include/IfcAdvancedBrep.h"
  #include "ifcpp/IFC4/include/IfcAdvancedBrepWithVoids.h"
  #include "ifcpp/IFC4/include/IfcAdvancedFace.h"
  #include "ifcpp/IFC4/include/IfcAirTerminal.h"
  #include "ifcpp/IFC4/include/IfcAirTerminalBox.h"
  #include "ifcpp/IFC4/include/IfcAirTerminalBoxType.h"
  #include "ifcpp/IFC4/include/IfcAirTerminalType.h"
  #include "ifcpp/IFC4/include/IfcAirToAirHeatRecovery.h"
  #include "ifcpp/IFC4/include/IfcAirToAirHeatRecoveryType.h"
  #include "ifcpp/IFC4/include/IfcAlarm.h"
  #include "ifcpp/IFC4/include/IfcAlarmType.h"
  #include "ifcpp/IFC4/include/IfcAlignment.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DHorizontal.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DHorizontalSegment.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DSegment.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DVerSegCircularArc.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DVerSegLine.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DVerSegParabolicArc.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DVertical.h"
  #include "ifcpp/IFC4/include/IfcAlignment2DVerticalSegment.h"
  #include "ifcpp/IFC4/include/IfcAlignmentCurve.h"
  #include "ifcpp/IFC4/include/IfcAnnotation.h"
  #include "ifcpp/IFC4/include/IfcAnnotationFillArea.h"
  #include "ifcpp/IFC4/include/IfcApplication.h"
  #include "ifcpp/IFC4/include/IfcAppliedValue.h"
  #include "ifcpp/IFC4/include/IfcApproval.h"
  #include "ifcpp/IFC4/include/IfcApprovalRelationship.h"
  #include "ifcpp/IFC4/include/IfcArbitraryClosedProfileDef.h"
  #include "ifcpp/IFC4/include/IfcArbitraryOpenProfileDef.h"
  #include "ifcpp/IFC4/include/IfcArbitraryProfileDefWithVoids.h"
  #include "ifcpp/IFC4/include/IfcAsset.h"
  #include "ifcpp/IFC4/include/IfcAsymmetricIShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcAudioVisualAppliance.h"
  #include "ifcpp/IFC4/include/IfcAudioVisualApplianceType.h"
  #include "ifcpp/IFC4/include/IfcAxis1Placement.h"
  #include "ifcpp/IFC4/include/IfcAxis2Placement2D.h"
  #include "ifcpp/IFC4/include/IfcAxis2Placement3D.h"
  #include "ifcpp/IFC4/include/IfcBSplineCurve.h"
  #include "ifcpp/IFC4/include/IfcBSplineCurveWithKnots.h"
  #include "ifcpp/IFC4/include/IfcBSplineSurface.h"
  #include "ifcpp/IFC4/include/IfcBSplineSurfaceWithKnots.h"
  #include "ifcpp/IFC4/include/IfcBeam.h"
  #include "ifcpp/IFC4/include/IfcBeamStandardCase.h"
  #include "ifcpp/IFC4/include/IfcBeamType.h"
  #include "ifcpp/IFC4/include/IfcBlobTexture.h"
  #include "ifcpp/IFC4/include/IfcBlock.h"
  #include "ifcpp/IFC4/include/IfcBoiler.h"
  #include "ifcpp/IFC4/include/IfcBoilerType.h"
  #include "ifcpp/IFC4/include/IfcBooleanClippingResult.h"
  #include "ifcpp/IFC4/include/IfcBooleanResult.h"
  #include "ifcpp/IFC4/include/IfcBoundaryCondition.h"
  #include "ifcpp/IFC4/include/IfcBoundaryCurve.h"
  #include "ifcpp/IFC4/include/IfcBoundaryEdgeCondition.h"
  #include "ifcpp/IFC4/include/IfcBoundaryFaceCondition.h"
  #include "ifcpp/IFC4/include/IfcBoundaryNodeCondition.h"
  #include "ifcpp/IFC4/include/IfcBoundaryNodeConditionWarping.h"
  #include "ifcpp/IFC4/include/IfcBoundedCurve.h"
  #include "ifcpp/IFC4/include/IfcBoundedSurface.h"
  #include "ifcpp/IFC4/include/IfcBoundingBox.h"
  #include "ifcpp/IFC4/include/IfcBoxedHalfSpace.h"
  #include "ifcpp/IFC4/include/IfcBuilding.h"
  #include "ifcpp/IFC4/include/IfcBuildingElement.h"
  #include "ifcpp/IFC4/include/IfcBuildingElementPart.h"
  #include "ifcpp/IFC4/include/IfcBuildingElementPartType.h"
  #include "ifcpp/IFC4/include/IfcBuildingElementProxy.h"
  #include "ifcpp/IFC4/include/IfcBuildingElementProxyType.h"
  #include "ifcpp/IFC4/include/IfcBuildingElementType.h"
  #include "ifcpp/IFC4/include/IfcBuildingStorey.h"
  #include "ifcpp/IFC4/include/IfcBuildingSystem.h"
  #include "ifcpp/IFC4/include/IfcBurner.h"
  #include "ifcpp/IFC4/include/IfcBurnerType.h"
  #include "ifcpp/IFC4/include/IfcCShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcCableCarrierFitting.h"
  #include "ifcpp/IFC4/include/IfcCableCarrierFittingType.h"
  #include "ifcpp/IFC4/include/IfcCableCarrierSegment.h"
  #include "ifcpp/IFC4/include/IfcCableCarrierSegmentType.h"
  #include "ifcpp/IFC4/include/IfcCableFitting.h"
  #include "ifcpp/IFC4/include/IfcCableFittingType.h"
  #include "ifcpp/IFC4/include/IfcCableSegment.h"
  #include "ifcpp/IFC4/include/IfcCableSegmentType.h"
  #include "ifcpp/IFC4/include/IfcCartesianPoint.h"
  #include "ifcpp/IFC4/include/IfcCartesianPointList.h"
  #include "ifcpp/IFC4/include/IfcCartesianPointList2D.h"
  #include "ifcpp/IFC4/include/IfcCartesianPointList3D.h"
  #include "ifcpp/IFC4/include/IfcCartesianTransformationOperator.h"
  #include "ifcpp/IFC4/include/IfcCartesianTransformationOperator2D.h"
  #include "ifcpp/IFC4/include/IfcCartesianTransformationOperator2DnonUniform.h"
  #include "ifcpp/IFC4/include/IfcCartesianTransformationOperator3D.h"
  #include "ifcpp/IFC4/include/IfcCartesianTransformationOperator3DnonUniform.h"
  #include "ifcpp/IFC4/include/IfcCenterLineProfileDef.h"
  #include "ifcpp/IFC4/include/IfcChiller.h"
  #include "ifcpp/IFC4/include/IfcChillerType.h"
  #include "ifcpp/IFC4/include/IfcChimney.h"
  #include "ifcpp/IFC4/include/IfcChimneyType.h"
  #include "ifcpp/IFC4/include/IfcCircle.h"
  #include "ifcpp/IFC4/include/IfcCircleHollowProfileDef.h"
  #include "ifcpp/IFC4/include/IfcCircleProfileDef.h"
  #include "ifcpp/IFC4/include/IfcCircularArcSegment2D.h"
  #include "ifcpp/IFC4/include/IfcCivilElement.h"
  #include "ifcpp/IFC4/include/IfcCivilElementType.h"
  #include "ifcpp/IFC4/include/IfcClassification.h"
  #include "ifcpp/IFC4/include/IfcClassificationReference.h"
  #include "ifcpp/IFC4/include/IfcClosedShell.h"
  #include "ifcpp/IFC4/include/IfcCoil.h"
  #include "ifcpp/IFC4/include/IfcCoilType.h"
  #include "ifcpp/IFC4/include/IfcColourRgb.h"
  #include "ifcpp/IFC4/include/IfcColourRgbList.h"
  #include "ifcpp/IFC4/include/IfcColourSpecification.h"
  #include "ifcpp/IFC4/include/IfcColumn.h"
  #include "ifcpp/IFC4/include/IfcColumnStandardCase.h"
  #include "ifcpp/IFC4/include/IfcColumnType.h"
  #include "ifcpp/IFC4/include/IfcCommunicationsAppliance.h"
  #include "ifcpp/IFC4/include/IfcCommunicationsApplianceType.h"
  #include "ifcpp/IFC4/include/IfcComplexProperty.h"
  #include "ifcpp/IFC4/include/IfcComplexPropertyTemplate.h"
  #include "ifcpp/IFC4/include/IfcCompositeCurve.h"
  #include "ifcpp/IFC4/include/IfcCompositeCurveOnSurface.h"
  #include "ifcpp/IFC4/include/IfcCompositeCurveSegment.h"
  #include "ifcpp/IFC4/include/IfcCompositeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcCompressor.h"
  #include "ifcpp/IFC4/include/IfcCompressorType.h"
  #include "ifcpp/IFC4/include/IfcCondenser.h"
  #include "ifcpp/IFC4/include/IfcCondenserType.h"
  #include "ifcpp/IFC4/include/IfcConic.h"
  #include "ifcpp/IFC4/include/IfcConnectedFaceSet.h"
  #include "ifcpp/IFC4/include/IfcConnectionCurveGeometry.h"
  #include "ifcpp/IFC4/include/IfcConnectionGeometry.h"
  #include "ifcpp/IFC4/include/IfcConnectionPointEccentricity.h"
  #include "ifcpp/IFC4/include/IfcConnectionPointGeometry.h"
  #include "ifcpp/IFC4/include/IfcConnectionSurfaceGeometry.h"
  #include "ifcpp/IFC4/include/IfcConnectionVolumeGeometry.h"
  #include "ifcpp/IFC4/include/IfcConstraint.h"
  #include "ifcpp/IFC4/include/IfcConstructionEquipmentResource.h"
  #include "ifcpp/IFC4/include/IfcConstructionEquipmentResourceType.h"
  #include "ifcpp/IFC4/include/IfcConstructionMaterialResource.h"
  #include "ifcpp/IFC4/include/IfcConstructionMaterialResourceType.h"
  #include "ifcpp/IFC4/include/IfcConstructionProductResource.h"
  #include "ifcpp/IFC4/include/IfcConstructionProductResourceType.h"
  #include "ifcpp/IFC4/include/IfcConstructionResource.h"
  #include "ifcpp/IFC4/include/IfcConstructionResourceType.h"
  #include "ifcpp/IFC4/include/IfcContext.h"
  #include "ifcpp/IFC4/include/IfcContextDependentUnit.h"
  #include "ifcpp/IFC4/include/IfcControl.h"
  #include "ifcpp/IFC4/include/IfcController.h"
  #include "ifcpp/IFC4/include/IfcControllerType.h"
  #include "ifcpp/IFC4/include/IfcConversionBasedUnit.h"
  #include "ifcpp/IFC4/include/IfcConversionBasedUnitWithOffset.h"
  #include "ifcpp/IFC4/include/IfcCooledBeam.h"
  #include "ifcpp/IFC4/include/IfcCooledBeamType.h"
  #include "ifcpp/IFC4/include/IfcCoolingTower.h"
  #include "ifcpp/IFC4/include/IfcCoolingTowerType.h"
  #include "ifcpp/IFC4/include/IfcCoordinateOperation.h"
  #include "ifcpp/IFC4/include/IfcCoordinateReferenceSystem.h"
  #include "ifcpp/IFC4/include/IfcCostItem.h"
  #include "ifcpp/IFC4/include/IfcCostSchedule.h"
  #include "ifcpp/IFC4/include/IfcCostValue.h"
  #include "ifcpp/IFC4/include/IfcCovering.h"
  #include "ifcpp/IFC4/include/IfcCoveringType.h"
  #include "ifcpp/IFC4/include/IfcCrewResource.h"
  #include "ifcpp/IFC4/include/IfcCrewResourceType.h"
  #include "ifcpp/IFC4/include/IfcCsgPrimitive3D.h"
  #include "ifcpp/IFC4/include/IfcCsgSolid.h"
  #include "ifcpp/IFC4/include/IfcCurrencyRelationship.h"
  #include "ifcpp/IFC4/include/IfcCurtainWall.h"
  #include "ifcpp/IFC4/include/IfcCurtainWallType.h"
  #include "ifcpp/IFC4/include/IfcCurve.h"
  #include "ifcpp/IFC4/include/IfcCurveBoundedPlane.h"
  #include "ifcpp/IFC4/include/IfcCurveBoundedSurface.h"
  #include "ifcpp/IFC4/include/IfcCurveSegment2D.h"
  #include "ifcpp/IFC4/include/IfcCurveStyle.h"
  #include "ifcpp/IFC4/include/IfcCurveStyleFont.h"
  #include "ifcpp/IFC4/include/IfcCurveStyleFontAndScaling.h"
  #include "ifcpp/IFC4/include/IfcCurveStyleFontPattern.h"
  #include "ifcpp/IFC4/include/IfcCylindricalSurface.h"
  #include "ifcpp/IFC4/include/IfcDamper.h"
  #include "ifcpp/IFC4/include/IfcDamperType.h"
  #include "ifcpp/IFC4/include/IfcDerivedProfileDef.h"
  #include "ifcpp/IFC4/include/IfcDerivedUnit.h"
  #include "ifcpp/IFC4/include/IfcDerivedUnitElement.h"
  #include "ifcpp/IFC4/include/IfcDimensionalExponents.h"
  #include "ifcpp/IFC4/include/IfcDirection.h"
  #include "ifcpp/IFC4/include/IfcDiscreteAccessory.h"
  #include "ifcpp/IFC4/include/IfcDiscreteAccessoryType.h"
  #include "ifcpp/IFC4/include/IfcDistanceExpression.h"
  #include "ifcpp/IFC4/include/IfcDistributionChamberElement.h"
  #include "ifcpp/IFC4/include/IfcDistributionChamberElementType.h"
  #include "ifcpp/IFC4/include/IfcDistributionCircuit.h"
  #include "ifcpp/IFC4/include/IfcDistributionControlElement.h"
  #include "ifcpp/IFC4/include/IfcDistributionControlElementType.h"
  #include "ifcpp/IFC4/include/IfcDistributionElement.h"
  #include "ifcpp/IFC4/include/IfcDistributionElementType.h"
  #include "ifcpp/IFC4/include/IfcDistributionFlowElement.h"
  #include "ifcpp/IFC4/include/IfcDistributionFlowElementType.h"
  #include "ifcpp/IFC4/include/IfcDistributionPort.h"
  #include "ifcpp/IFC4/include/IfcDistributionSystem.h"
  #include "ifcpp/IFC4/include/IfcDocumentInformation.h"
  #include "ifcpp/IFC4/include/IfcDocumentInformationRelationship.h"
  #include "ifcpp/IFC4/include/IfcDocumentReference.h"
  #include "ifcpp/IFC4/include/IfcDoor.h"
  #include "ifcpp/IFC4/include/IfcDoorLiningProperties.h"
  #include "ifcpp/IFC4/include/IfcDoorPanelProperties.h"
  #include "ifcpp/IFC4/include/IfcDoorStandardCase.h"
  #include "ifcpp/IFC4/include/IfcDoorStyle.h"
  #include "ifcpp/IFC4/include/IfcDoorType.h"
  #include "ifcpp/IFC4/include/IfcDraughtingPreDefinedColour.h"
  #include "ifcpp/IFC4/include/IfcDraughtingPreDefinedCurveFont.h"
  #include "ifcpp/IFC4/include/IfcDuctFitting.h"
  #include "ifcpp/IFC4/include/IfcDuctFittingType.h"
  #include "ifcpp/IFC4/include/IfcDuctSegment.h"
  #include "ifcpp/IFC4/include/IfcDuctSegmentType.h"
  #include "ifcpp/IFC4/include/IfcDuctSilencer.h"
  #include "ifcpp/IFC4/include/IfcDuctSilencerType.h"
  #include "ifcpp/IFC4/include/IfcEdge.h"
  #include "ifcpp/IFC4/include/IfcEdgeCurve.h"
  #include "ifcpp/IFC4/include/IfcEdgeLoop.h"
  #include "ifcpp/IFC4/include/IfcElectricAppliance.h"
  #include "ifcpp/IFC4/include/IfcElectricApplianceType.h"
  #include "ifcpp/IFC4/include/IfcElectricDistributionBoard.h"
  #include "ifcpp/IFC4/include/IfcElectricDistributionBoardType.h"
  #include "ifcpp/IFC4/include/IfcElectricFlowStorageDevice.h"
  #include "ifcpp/IFC4/include/IfcElectricFlowStorageDeviceType.h"
  #include "ifcpp/IFC4/include/IfcElectricGenerator.h"
  #include "ifcpp/IFC4/include/IfcElectricGeneratorType.h"
  #include "ifcpp/IFC4/include/IfcElectricMotor.h"
  #include "ifcpp/IFC4/include/IfcElectricMotorType.h"
  #include "ifcpp/IFC4/include/IfcElectricTimeControl.h"
  #include "ifcpp/IFC4/include/IfcElectricTimeControlType.h"
  #include "ifcpp/IFC4/include/IfcElement.h"
  #include "ifcpp/IFC4/include/IfcElementAssembly.h"
  #include "ifcpp/IFC4/include/IfcElementAssemblyType.h"
  #include "ifcpp/IFC4/include/IfcElementComponent.h"
  #include "ifcpp/IFC4/include/IfcElementComponentType.h"
  #include "ifcpp/IFC4/include/IfcElementQuantity.h"
  #include "ifcpp/IFC4/include/IfcElementType.h"
  #include "ifcpp/IFC4/include/IfcElementarySurface.h"
  #include "ifcpp/IFC4/include/IfcEllipse.h"
  #include "ifcpp/IFC4/include/IfcEllipseProfileDef.h"
  #include "ifcpp/IFC4/include/IfcEnergyConversionDevice.h"
  #include "ifcpp/IFC4/include/IfcEnergyConversionDeviceType.h"
  #include "ifcpp/IFC4/include/IfcEngine.h"
  #include "ifcpp/IFC4/include/IfcEngineType.h"
  #include "ifcpp/IFC4/include/IfcEvaporativeCooler.h"
  #include "ifcpp/IFC4/include/IfcEvaporativeCoolerType.h"
  #include "ifcpp/IFC4/include/IfcEvaporator.h"
  #include "ifcpp/IFC4/include/IfcEvaporatorType.h"
  #include "ifcpp/IFC4/include/IfcEvent.h"
  #include "ifcpp/IFC4/include/IfcEventTime.h"
  #include "ifcpp/IFC4/include/IfcEventType.h"
  #include "ifcpp/IFC4/include/IfcExtendedProperties.h"
  #include "ifcpp/IFC4/include/IfcExternalInformation.h"
  #include "ifcpp/IFC4/include/IfcExternalReference.h"
  #include "ifcpp/IFC4/include/IfcExternalReferenceRelationship.h"
  #include "ifcpp/IFC4/include/IfcExternalSpatialElement.h"
  #include "ifcpp/IFC4/include/IfcExternalSpatialStructureElement.h"
  #include "ifcpp/IFC4/include/IfcExternallyDefinedHatchStyle.h"
  #include "ifcpp/IFC4/include/IfcExternallyDefinedSurfaceStyle.h"
  #include "ifcpp/IFC4/include/IfcExternallyDefinedTextFont.h"
  #include "ifcpp/IFC4/include/IfcExtrudedAreaSolid.h"
  #include "ifcpp/IFC4/include/IfcExtrudedAreaSolidTapered.h"
  #include "ifcpp/IFC4/include/IfcFace.h"
  #include "ifcpp/IFC4/include/IfcFaceBasedSurfaceModel.h"
  #include "ifcpp/IFC4/include/IfcFaceBound.h"
  #include "ifcpp/IFC4/include/IfcFaceOuterBound.h"
  #include "ifcpp/IFC4/include/IfcFaceSurface.h"
  #include "ifcpp/IFC4/include/IfcFacetedBrep.h"
  #include "ifcpp/IFC4/include/IfcFacetedBrepWithVoids.h"
  #include "ifcpp/IFC4/include/IfcFailureConnectionCondition.h"
  #include "ifcpp/IFC4/include/IfcFan.h"
  #include "ifcpp/IFC4/include/IfcFanType.h"
  #include "ifcpp/IFC4/include/IfcFastener.h"
  #include "ifcpp/IFC4/include/IfcFastenerType.h"
  #include "ifcpp/IFC4/include/IfcFeatureElement.h"
  #include "ifcpp/IFC4/include/IfcFeatureElementAddition.h"
  #include "ifcpp/IFC4/include/IfcFeatureElementSubtraction.h"
  #include "ifcpp/IFC4/include/IfcFillAreaStyle.h"
  #include "ifcpp/IFC4/include/IfcFillAreaStyleHatching.h"
  #include "ifcpp/IFC4/include/IfcFillAreaStyleTiles.h"
  #include "ifcpp/IFC4/include/IfcFilter.h"
  #include "ifcpp/IFC4/include/IfcFilterType.h"
  #include "ifcpp/IFC4/include/IfcFireSuppressionTerminal.h"
  #include "ifcpp/IFC4/include/IfcFireSuppressionTerminalType.h"
  #include "ifcpp/IFC4/include/IfcFixedReferenceSweptAreaSolid.h"
  #include "ifcpp/IFC4/include/IfcFlowController.h"
  #include "ifcpp/IFC4/include/IfcFlowControllerType.h"
  #include "ifcpp/IFC4/include/IfcFlowFitting.h"
  #include "ifcpp/IFC4/include/IfcFlowFittingType.h"
  #include "ifcpp/IFC4/include/IfcFlowInstrument.h"
  #include "ifcpp/IFC4/include/IfcFlowInstrumentType.h"
  #include "ifcpp/IFC4/include/IfcFlowMeter.h"
  #include "ifcpp/IFC4/include/IfcFlowMeterType.h"
  #include "ifcpp/IFC4/include/IfcFlowMovingDevice.h"
  #include "ifcpp/IFC4/include/IfcFlowMovingDeviceType.h"
  #include "ifcpp/IFC4/include/IfcFlowSegment.h"
  #include "ifcpp/IFC4/include/IfcFlowSegmentType.h"
  #include "ifcpp/IFC4/include/IfcFlowStorageDevice.h"
  #include "ifcpp/IFC4/include/IfcFlowStorageDeviceType.h"
  #include "ifcpp/IFC4/include/IfcFlowTerminal.h"
  #include "ifcpp/IFC4/include/IfcFlowTerminalType.h"
  #include "ifcpp/IFC4/include/IfcFlowTreatmentDevice.h"
  #include "ifcpp/IFC4/include/IfcFlowTreatmentDeviceType.h"
  #include "ifcpp/IFC4/include/IfcFooting.h"
  #include "ifcpp/IFC4/include/IfcFootingType.h"
  #include "ifcpp/IFC4/include/IfcFurnishingElement.h"
  #include "ifcpp/IFC4/include/IfcFurnishingElementType.h"
  #include "ifcpp/IFC4/include/IfcFurniture.h"
  #include "ifcpp/IFC4/include/IfcFurnitureType.h"
  #include "ifcpp/IFC4/include/IfcGeographicElement.h"
  #include "ifcpp/IFC4/include/IfcGeographicElementType.h"
  #include "ifcpp/IFC4/include/IfcGeometricCurveSet.h"
  #include "ifcpp/IFC4/include/IfcGeometricRepresentationContext.h"
  #include "ifcpp/IFC4/include/IfcGeometricRepresentationItem.h"
  #include "ifcpp/IFC4/include/IfcGeometricRepresentationSubContext.h"
  #include "ifcpp/IFC4/include/IfcGeometricSet.h"
  #include "ifcpp/IFC4/include/IfcGrid.h"
  #include "ifcpp/IFC4/include/IfcGridAxis.h"
  #include "ifcpp/IFC4/include/IfcGridPlacement.h"
  #include "ifcpp/IFC4/include/IfcGroup.h"
  #include "ifcpp/IFC4/include/IfcHalfSpaceSolid.h"
  #include "ifcpp/IFC4/include/IfcHeatExchanger.h"
  #include "ifcpp/IFC4/include/IfcHeatExchangerType.h"
  #include "ifcpp/IFC4/include/IfcHumidifier.h"
  #include "ifcpp/IFC4/include/IfcHumidifierType.h"
  #include "ifcpp/IFC4/include/IfcIShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcImageTexture.h"
  #include "ifcpp/IFC4/include/IfcIndexedColourMap.h"
  #include "ifcpp/IFC4/include/IfcIndexedPolyCurve.h"
  #include "ifcpp/IFC4/include/IfcIndexedPolygonalFace.h"
  #include "ifcpp/IFC4/include/IfcIndexedPolygonalFaceWithVoids.h"
  #include "ifcpp/IFC4/include/IfcIndexedTextureMap.h"
  #include "ifcpp/IFC4/include/IfcIndexedTriangleTextureMap.h"
  #include "ifcpp/IFC4/include/IfcInterceptor.h"
  #include "ifcpp/IFC4/include/IfcInterceptorType.h"
  #include "ifcpp/IFC4/include/IfcIntersectionCurve.h"
  #include "ifcpp/IFC4/include/IfcInventory.h"
  #include "ifcpp/IFC4/include/IfcIrregularTimeSeries.h"
  #include "ifcpp/IFC4/include/IfcIrregularTimeSeriesValue.h"
  #include "ifcpp/IFC4/include/IfcJunctionBox.h"
  #include "ifcpp/IFC4/include/IfcJunctionBoxType.h"
  #include "ifcpp/IFC4/include/IfcLShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcLaborResource.h"
  #include "ifcpp/IFC4/include/IfcLaborResourceType.h"
  #include "ifcpp/IFC4/include/IfcLagTime.h"
  #include "ifcpp/IFC4/include/IfcLamp.h"
  #include "ifcpp/IFC4/include/IfcLampType.h"
  #include "ifcpp/IFC4/include/IfcLibraryInformation.h"
  #include "ifcpp/IFC4/include/IfcLibraryReference.h"
  #include "ifcpp/IFC4/include/IfcLightDistributionData.h"
  #include "ifcpp/IFC4/include/IfcLightFixture.h"
  #include "ifcpp/IFC4/include/IfcLightFixtureType.h"
  #include "ifcpp/IFC4/include/IfcLightIntensityDistribution.h"
  #include "ifcpp/IFC4/include/IfcLightSource.h"
  #include "ifcpp/IFC4/include/IfcLightSourceAmbient.h"
  #include "ifcpp/IFC4/include/IfcLightSourceDirectional.h"
  #include "ifcpp/IFC4/include/IfcLightSourceGoniometric.h"
  #include "ifcpp/IFC4/include/IfcLightSourcePositional.h"
  #include "ifcpp/IFC4/include/IfcLightSourceSpot.h"
  #include "ifcpp/IFC4/include/IfcLine.h"
  #include "ifcpp/IFC4/include/IfcLineSegment2D.h"
  #include "ifcpp/IFC4/include/IfcLinearPlacement.h"
  #include "ifcpp/IFC4/include/IfcLinearPositioningElement.h"
  #include "ifcpp/IFC4/include/IfcLocalPlacement.h"
  #include "ifcpp/IFC4/include/IfcLoop.h"
  #include "ifcpp/IFC4/include/IfcManifoldSolidBrep.h"
  #include "ifcpp/IFC4/include/IfcMapConversion.h"
  #include "ifcpp/IFC4/include/IfcMappedItem.h"
  #include "ifcpp/IFC4/include/IfcMaterial.h"
  #include "ifcpp/IFC4/include/IfcMaterialClassificationRelationship.h"
  #include "ifcpp/IFC4/include/IfcMaterialConstituent.h"
  #include "ifcpp/IFC4/include/IfcMaterialConstituentSet.h"
  #include "ifcpp/IFC4/include/IfcMaterialDefinition.h"
  #include "ifcpp/IFC4/include/IfcMaterialDefinitionRepresentation.h"
  #include "ifcpp/IFC4/include/IfcMaterialLayer.h"
  #include "ifcpp/IFC4/include/IfcMaterialLayerSet.h"
  #include "ifcpp/IFC4/include/IfcMaterialLayerSetUsage.h"
  #include "ifcpp/IFC4/include/IfcMaterialLayerWithOffsets.h"
  #include "ifcpp/IFC4/include/IfcMaterialList.h"
  #include "ifcpp/IFC4/include/IfcMaterialProfile.h"
  #include "ifcpp/IFC4/include/IfcMaterialProfileSet.h"
  #include "ifcpp/IFC4/include/IfcMaterialProfileSetUsage.h"
  #include "ifcpp/IFC4/include/IfcMaterialProfileSetUsageTapering.h"
  #include "ifcpp/IFC4/include/IfcMaterialProfileWithOffsets.h"
  #include "ifcpp/IFC4/include/IfcMaterialProperties.h"
  #include "ifcpp/IFC4/include/IfcMaterialRelationship.h"
  #include "ifcpp/IFC4/include/IfcMaterialUsageDefinition.h"
  #include "ifcpp/IFC4/include/IfcMeasureWithUnit.h"
  #include "ifcpp/IFC4/include/IfcMechanicalFastener.h"
  #include "ifcpp/IFC4/include/IfcMechanicalFastenerType.h"
  #include "ifcpp/IFC4/include/IfcMedicalDevice.h"
  #include "ifcpp/IFC4/include/IfcMedicalDeviceType.h"
  #include "ifcpp/IFC4/include/IfcMember.h"
  #include "ifcpp/IFC4/include/IfcMemberStandardCase.h"
  #include "ifcpp/IFC4/include/IfcMemberType.h"
  #include "ifcpp/IFC4/include/IfcMetric.h"
  #include "ifcpp/IFC4/include/IfcMirroredProfileDef.h"
  #include "ifcpp/IFC4/include/IfcMonetaryUnit.h"
  #include "ifcpp/IFC4/include/IfcMotorConnection.h"
  #include "ifcpp/IFC4/include/IfcMotorConnectionType.h"
  #include "ifcpp/IFC4/include/IfcNamedUnit.h"
  #include "ifcpp/IFC4/include/IfcObject.h"
  #include "ifcpp/IFC4/include/IfcObjectDefinition.h"
  #include "ifcpp/IFC4/include/IfcObjectPlacement.h"
  #include "ifcpp/IFC4/include/IfcObjective.h"
  #include "ifcpp/IFC4/include/IfcOccupant.h"
  #include "ifcpp/IFC4/include/IfcOffsetCurve.h"
  #include "ifcpp/IFC4/include/IfcOffsetCurve2D.h"
  #include "ifcpp/IFC4/include/IfcOffsetCurve3D.h"
  #include "ifcpp/IFC4/include/IfcOffsetCurveByDistances.h"
  #include "ifcpp/IFC4/include/IfcOpenShell.h"
  #include "ifcpp/IFC4/include/IfcOpeningElement.h"
  #include "ifcpp/IFC4/include/IfcOpeningStandardCase.h"
  #include "ifcpp/IFC4/include/IfcOrganization.h"
  #include "ifcpp/IFC4/include/IfcOrganizationRelationship.h"
  #include "ifcpp/IFC4/include/IfcOrientationExpression.h"
  #include "ifcpp/IFC4/include/IfcOrientedEdge.h"
  #include "ifcpp/IFC4/include/IfcOuterBoundaryCurve.h"
  #include "ifcpp/IFC4/include/IfcOutlet.h"
  #include "ifcpp/IFC4/include/IfcOutletType.h"
  #include "ifcpp/IFC4/include/IfcOwnerHistory.h"
  #include "ifcpp/IFC4/include/IfcParameterizedProfileDef.h"
  #include "ifcpp/IFC4/include/IfcPath.h"
  #include "ifcpp/IFC4/include/IfcPcurve.h"
  #include "ifcpp/IFC4/include/IfcPerformanceHistory.h"
  #include "ifcpp/IFC4/include/IfcPermeableCoveringProperties.h"
  #include "ifcpp/IFC4/include/IfcPermit.h"
  #include "ifcpp/IFC4/include/IfcPerson.h"
  #include "ifcpp/IFC4/include/IfcPersonAndOrganization.h"
  #include "ifcpp/IFC4/include/IfcPhysicalComplexQuantity.h"
  #include "ifcpp/IFC4/include/IfcPhysicalQuantity.h"
  #include "ifcpp/IFC4/include/IfcPhysicalSimpleQuantity.h"
  #include "ifcpp/IFC4/include/IfcPile.h"
  #include "ifcpp/IFC4/include/IfcPileType.h"
  #include "ifcpp/IFC4/include/IfcPipeFitting.h"
  #include "ifcpp/IFC4/include/IfcPipeFittingType.h"
  #include "ifcpp/IFC4/include/IfcPipeSegment.h"
  #include "ifcpp/IFC4/include/IfcPipeSegmentType.h"
  #include "ifcpp/IFC4/include/IfcPixelTexture.h"
  #include "ifcpp/IFC4/include/IfcPlacement.h"
  #include "ifcpp/IFC4/include/IfcPlanarBox.h"
  #include "ifcpp/IFC4/include/IfcPlanarExtent.h"
  #include "ifcpp/IFC4/include/IfcPlane.h"
  #include "ifcpp/IFC4/include/IfcPlate.h"
  #include "ifcpp/IFC4/include/IfcPlateStandardCase.h"
  #include "ifcpp/IFC4/include/IfcPlateType.h"
  #include "ifcpp/IFC4/include/IfcPoint.h"
  #include "ifcpp/IFC4/include/IfcPointOnCurve.h"
  #include "ifcpp/IFC4/include/IfcPointOnSurface.h"
  #include "ifcpp/IFC4/include/IfcPolyLoop.h"
  #include "ifcpp/IFC4/include/IfcPolygonalBoundedHalfSpace.h"
  #include "ifcpp/IFC4/include/IfcPolygonalFaceSet.h"
  #include "ifcpp/IFC4/include/IfcPolyline.h"
  #include "ifcpp/IFC4/include/IfcPort.h"
  #include "ifcpp/IFC4/include/IfcPositioningElement.h"
  #include "ifcpp/IFC4/include/IfcPostalAddress.h"
  #include "ifcpp/IFC4/include/IfcPreDefinedColour.h"
  #include "ifcpp/IFC4/include/IfcPreDefinedCurveFont.h"
  #include "ifcpp/IFC4/include/IfcPreDefinedItem.h"
  #include "ifcpp/IFC4/include/IfcPreDefinedProperties.h"
  #include "ifcpp/IFC4/include/IfcPreDefinedPropertySet.h"
  #include "ifcpp/IFC4/include/IfcPreDefinedTextFont.h"
  #include "ifcpp/IFC4/include/IfcPresentationItem.h"
  #include "ifcpp/IFC4/include/IfcPresentationLayerAssignment.h"
  #include "ifcpp/IFC4/include/IfcPresentationLayerWithStyle.h"
  #include "ifcpp/IFC4/include/IfcPresentationStyle.h"
  #include "ifcpp/IFC4/include/IfcPresentationStyleAssignment.h"
  #include "ifcpp/IFC4/include/IfcProcedure.h"
  #include "ifcpp/IFC4/include/IfcProcedureType.h"
  #include "ifcpp/IFC4/include/IfcProcess.h"
  #include "ifcpp/IFC4/include/IfcProduct.h"
  #include "ifcpp/IFC4/include/IfcProductDefinitionShape.h"
  #include "ifcpp/IFC4/include/IfcProductRepresentation.h"
  #include "ifcpp/IFC4/include/IfcProfileDef.h"
  #include "ifcpp/IFC4/include/IfcProfileProperties.h"
  #include "ifcpp/IFC4/include/IfcProject.h"
  #include "ifcpp/IFC4/include/IfcProjectLibrary.h"
  #include "ifcpp/IFC4/include/IfcProjectOrder.h"
  #include "ifcpp/IFC4/include/IfcProjectedCRS.h"
  #include "ifcpp/IFC4/include/IfcProjectionElement.h"
  #include "ifcpp/IFC4/include/IfcProperty.h"
  #include "ifcpp/IFC4/include/IfcPropertyAbstraction.h"
  #include "ifcpp/IFC4/include/IfcPropertyBoundedValue.h"
  #include "ifcpp/IFC4/include/IfcPropertyDefinition.h"
  #include "ifcpp/IFC4/include/IfcPropertyDependencyRelationship.h"
  #include "ifcpp/IFC4/include/IfcPropertyEnumeratedValue.h"
  #include "ifcpp/IFC4/include/IfcPropertyEnumeration.h"
  #include "ifcpp/IFC4/include/IfcPropertyListValue.h"
  #include "ifcpp/IFC4/include/IfcPropertyReferenceValue.h"
  #include "ifcpp/IFC4/include/IfcPropertySet.h"
  #include "ifcpp/IFC4/include/IfcPropertySetDefinition.h"
  #include "ifcpp/IFC4/include/IfcPropertySetTemplate.h"
  #include "ifcpp/IFC4/include/IfcPropertySingleValue.h"
  #include "ifcpp/IFC4/include/IfcPropertyTableValue.h"
  #include "ifcpp/IFC4/include/IfcPropertyTemplate.h"
  #include "ifcpp/IFC4/include/IfcPropertyTemplateDefinition.h"
  #include "ifcpp/IFC4/include/IfcProtectiveDevice.h"
  #include "ifcpp/IFC4/include/IfcProtectiveDeviceTrippingUnit.h"
  #include "ifcpp/IFC4/include/IfcProtectiveDeviceTrippingUnitType.h"
  #include "ifcpp/IFC4/include/IfcProtectiveDeviceType.h"
  #include "ifcpp/IFC4/include/IfcProxy.h"
  #include "ifcpp/IFC4/include/IfcPump.h"
  #include "ifcpp/IFC4/include/IfcPumpType.h"
  #include "ifcpp/IFC4/include/IfcQuantityArea.h"
  #include "ifcpp/IFC4/include/IfcQuantityCount.h"
  #include "ifcpp/IFC4/include/IfcQuantityLength.h"
  #include "ifcpp/IFC4/include/IfcQuantitySet.h"
  #include "ifcpp/IFC4/include/IfcQuantityTime.h"
  #include "ifcpp/IFC4/include/IfcQuantityVolume.h"
  #include "ifcpp/IFC4/include/IfcQuantityWeight.h"
  #include "ifcpp/IFC4/include/IfcRailing.h"
  #include "ifcpp/IFC4/include/IfcRailingType.h"
  #include "ifcpp/IFC4/include/IfcRamp.h"
  #include "ifcpp/IFC4/include/IfcRampFlight.h"
  #include "ifcpp/IFC4/include/IfcRampFlightType.h"
  #include "ifcpp/IFC4/include/IfcRampType.h"
  #include "ifcpp/IFC4/include/IfcRationalBSplineCurveWithKnots.h"
  #include "ifcpp/IFC4/include/IfcRationalBSplineSurfaceWithKnots.h"
  #include "ifcpp/IFC4/include/IfcRectangleHollowProfileDef.h"
  #include "ifcpp/IFC4/include/IfcRectangleProfileDef.h"
  #include "ifcpp/IFC4/include/IfcRectangularPyramid.h"
  #include "ifcpp/IFC4/include/IfcRectangularTrimmedSurface.h"
  #include "ifcpp/IFC4/include/IfcRecurrencePattern.h"
  #include "ifcpp/IFC4/include/IfcReference.h"
  #include "ifcpp/IFC4/include/IfcReferent.h"
  #include "ifcpp/IFC4/include/IfcRegularTimeSeries.h"
  #include "ifcpp/IFC4/include/IfcReinforcementBarProperties.h"
  #include "ifcpp/IFC4/include/IfcReinforcementDefinitionProperties.h"
  #include "ifcpp/IFC4/include/IfcReinforcingBar.h"
  #include "ifcpp/IFC4/include/IfcReinforcingBarType.h"
  #include "ifcpp/IFC4/include/IfcReinforcingElement.h"
  #include "ifcpp/IFC4/include/IfcReinforcingElementType.h"
  #include "ifcpp/IFC4/include/IfcReinforcingMesh.h"
  #include "ifcpp/IFC4/include/IfcReinforcingMeshType.h"
  #include "ifcpp/IFC4/include/IfcRelAggregates.h"
  #include "ifcpp/IFC4/include/IfcRelAssigns.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToActor.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToControl.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToGroup.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToGroupByFactor.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToProcess.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToProduct.h"
  #include "ifcpp/IFC4/include/IfcRelAssignsToResource.h"
  #include "ifcpp/IFC4/include/IfcRelAssociates.h"
  #include "ifcpp/IFC4/include/IfcRelAssociatesApproval.h"
  #include "ifcpp/IFC4/include/IfcRelAssociatesClassification.h"
  #include "ifcpp/IFC4/include/IfcRelAssociatesConstraint.h"
  #include "ifcpp/IFC4/include/IfcRelAssociatesDocument.h"
  #include "ifcpp/IFC4/include/IfcRelAssociatesLibrary.h"
  #include "ifcpp/IFC4/include/IfcRelAssociatesMaterial.h"
  #include "ifcpp/IFC4/include/IfcRelConnects.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsElements.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsPathElements.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsPortToElement.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsPorts.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsStructuralActivity.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsStructuralMember.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsWithEccentricity.h"
  #include "ifcpp/IFC4/include/IfcRelConnectsWithRealizingElements.h"
  #include "ifcpp/IFC4/include/IfcRelContainedInSpatialStructure.h"
  #include "ifcpp/IFC4/include/IfcRelCoversBldgElements.h"
  #include "ifcpp/IFC4/include/IfcRelCoversSpaces.h"
  #include "ifcpp/IFC4/include/IfcRelDeclares.h"
  #include "ifcpp/IFC4/include/IfcRelDecomposes.h"
  #include "ifcpp/IFC4/include/IfcRelDefines.h"
  #include "ifcpp/IFC4/include/IfcRelDefinesByObject.h"
  #include "ifcpp/IFC4/include/IfcRelDefinesByProperties.h"
  #include "ifcpp/IFC4/include/IfcRelDefinesByTemplate.h"
  #include "ifcpp/IFC4/include/IfcRelDefinesByType.h"
  #include "ifcpp/IFC4/include/IfcRelFillsElement.h"
  #include "ifcpp/IFC4/include/IfcRelFlowControlElements.h"
  #include "ifcpp/IFC4/include/IfcRelInterferesElements.h"
  #include "ifcpp/IFC4/include/IfcRelNests.h"
  #include "ifcpp/IFC4/include/IfcRelProjectsElement.h"
  #include "ifcpp/IFC4/include/IfcRelReferencedInSpatialStructure.h"
  #include "ifcpp/IFC4/include/IfcRelSequence.h"
  #include "ifcpp/IFC4/include/IfcRelServicesBuildings.h"
  #include "ifcpp/IFC4/include/IfcRelSpaceBoundary.h"
  #include "ifcpp/IFC4/include/IfcRelSpaceBoundary1stLevel.h"
  #include "ifcpp/IFC4/include/IfcRelSpaceBoundary2ndLevel.h"
  #include "ifcpp/IFC4/include/IfcRelVoidsElement.h"
  #include "ifcpp/IFC4/include/IfcRelationship.h"
  #include "ifcpp/IFC4/include/IfcReparametrisedCompositeCurveSegment.h"
  #include "ifcpp/IFC4/include/IfcRepresentation.h"
  #include "ifcpp/IFC4/include/IfcRepresentationContext.h"
  #include "ifcpp/IFC4/include/IfcRepresentationItem.h"
  #include "ifcpp/IFC4/include/IfcRepresentationMap.h"
  #include "ifcpp/IFC4/include/IfcResource.h"
  #include "ifcpp/IFC4/include/IfcResourceApprovalRelationship.h"
  #include "ifcpp/IFC4/include/IfcResourceConstraintRelationship.h"
  #include "ifcpp/IFC4/include/IfcResourceLevelRelationship.h"
  #include "ifcpp/IFC4/include/IfcResourceTime.h"
  #include "ifcpp/IFC4/include/IfcRevolvedAreaSolid.h"
  #include "ifcpp/IFC4/include/IfcRevolvedAreaSolidTapered.h"
  #include "ifcpp/IFC4/include/IfcRightCircularCone.h"
  #include "ifcpp/IFC4/include/IfcRightCircularCylinder.h"
  #include "ifcpp/IFC4/include/IfcRoof.h"
  #include "ifcpp/IFC4/include/IfcRoofType.h"
  #include "ifcpp/IFC4/include/IfcRoot.h"
  #include "ifcpp/IFC4/include/IfcRoundedRectangleProfileDef.h"
  #include "ifcpp/IFC4/include/IfcSIUnit.h"
  #include "ifcpp/IFC4/include/IfcSanitaryTerminal.h"
  #include "ifcpp/IFC4/include/IfcSanitaryTerminalType.h"
  #include "ifcpp/IFC4/include/IfcSchedulingTime.h"
  #include "ifcpp/IFC4/include/IfcSeamCurve.h"
  #include "ifcpp/IFC4/include/IfcSectionProperties.h"
  #include "ifcpp/IFC4/include/IfcSectionReinforcementProperties.h"
  #include "ifcpp/IFC4/include/IfcSectionedSolid.h"
  #include "ifcpp/IFC4/include/IfcSectionedSolidHorizontal.h"
  #include "ifcpp/IFC4/include/IfcSectionedSpine.h"
  #include "ifcpp/IFC4/include/IfcSensor.h"
  #include "ifcpp/IFC4/include/IfcSensorType.h"
  #include "ifcpp/IFC4/include/IfcShadingDevice.h"
  #include "ifcpp/IFC4/include/IfcShadingDeviceType.h"
  #include "ifcpp/IFC4/include/IfcShapeAspect.h"
  #include "ifcpp/IFC4/include/IfcShapeModel.h"
  #include "ifcpp/IFC4/include/IfcShapeRepresentation.h"
  #include "ifcpp/IFC4/include/IfcShellBasedSurfaceModel.h"
  #include "ifcpp/IFC4/include/IfcSimpleProperty.h"
  #include "ifcpp/IFC4/include/IfcSimplePropertyTemplate.h"
  #include "ifcpp/IFC4/include/IfcSite.h"
  #include "ifcpp/IFC4/include/IfcSlab.h"
  #include "ifcpp/IFC4/include/IfcSlabElementedCase.h"
  #include "ifcpp/IFC4/include/IfcSlabStandardCase.h"
  #include "ifcpp/IFC4/include/IfcSlabType.h"
  #include "ifcpp/IFC4/include/IfcSlippageConnectionCondition.h"
  #include "ifcpp/IFC4/include/IfcSolarDevice.h"
  #include "ifcpp/IFC4/include/IfcSolarDeviceType.h"
  #include "ifcpp/IFC4/include/IfcSolidModel.h"
  #include "ifcpp/IFC4/include/IfcSpace.h"
  #include "ifcpp/IFC4/include/IfcSpaceHeater.h"
  #include "ifcpp/IFC4/include/IfcSpaceHeaterType.h"
  #include "ifcpp/IFC4/include/IfcSpaceType.h"
  #include "ifcpp/IFC4/include/IfcSpatialElement.h"
  #include "ifcpp/IFC4/include/IfcSpatialElementType.h"
  #include "ifcpp/IFC4/include/IfcSpatialStructureElement.h"
  #include "ifcpp/IFC4/include/IfcSpatialStructureElementType.h"
  #include "ifcpp/IFC4/include/IfcSpatialZone.h"
  #include "ifcpp/IFC4/include/IfcSpatialZoneType.h"
  #include "ifcpp/IFC4/include/IfcSphere.h"
  #include "ifcpp/IFC4/include/IfcSphericalSurface.h"
  #include "ifcpp/IFC4/include/IfcStackTerminal.h"
  #include "ifcpp/IFC4/include/IfcStackTerminalType.h"
  #include "ifcpp/IFC4/include/IfcStair.h"
  #include "ifcpp/IFC4/include/IfcStairFlight.h"
  #include "ifcpp/IFC4/include/IfcStairFlightType.h"
  #include "ifcpp/IFC4/include/IfcStairType.h"
  #include "ifcpp/IFC4/include/IfcStructuralAction.h"
  #include "ifcpp/IFC4/include/IfcStructuralActivity.h"
  #include "ifcpp/IFC4/include/IfcStructuralAnalysisModel.h"
  #include "ifcpp/IFC4/include/IfcStructuralConnection.h"
  #include "ifcpp/IFC4/include/IfcStructuralConnectionCondition.h"
  #include "ifcpp/IFC4/include/IfcStructuralCurveAction.h"
  #include "ifcpp/IFC4/include/IfcStructuralCurveConnection.h"
  #include "ifcpp/IFC4/include/IfcStructuralCurveMember.h"
  #include "ifcpp/IFC4/include/IfcStructuralCurveMemberVarying.h"
  #include "ifcpp/IFC4/include/IfcStructuralCurveReaction.h"
  #include "ifcpp/IFC4/include/IfcStructuralItem.h"
  #include "ifcpp/IFC4/include/IfcStructuralLinearAction.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoad.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadCase.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadConfiguration.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadGroup.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadLinearForce.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadOrResult.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadPlanarForce.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadSingleDisplacement.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadSingleDisplacementDistortion.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadSingleForce.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadSingleForceWarping.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadStatic.h"
  #include "ifcpp/IFC4/include/IfcStructuralLoadTemperature.h"
  #include "ifcpp/IFC4/include/IfcStructuralMember.h"
  #include "ifcpp/IFC4/include/IfcStructuralPlanarAction.h"
  #include "ifcpp/IFC4/include/IfcStructuralPointAction.h"
  #include "ifcpp/IFC4/include/IfcStructuralPointConnection.h"
  #include "ifcpp/IFC4/include/IfcStructuralPointReaction.h"
  #include "ifcpp/IFC4/include/IfcStructuralReaction.h"
  #include "ifcpp/IFC4/include/IfcStructuralResultGroup.h"
  #include "ifcpp/IFC4/include/IfcStructuralSurfaceAction.h"
  #include "ifcpp/IFC4/include/IfcStructuralSurfaceConnection.h"
  #include "ifcpp/IFC4/include/IfcStructuralSurfaceMember.h"
  #include "ifcpp/IFC4/include/IfcStructuralSurfaceMemberVarying.h"
  #include "ifcpp/IFC4/include/IfcStructuralSurfaceReaction.h"
  #include "ifcpp/IFC4/include/IfcStyleModel.h"
  #include "ifcpp/IFC4/include/IfcStyledItem.h"
  #include "ifcpp/IFC4/include/IfcStyledRepresentation.h"
  #include "ifcpp/IFC4/include/IfcSubContractResource.h"
  #include "ifcpp/IFC4/include/IfcSubContractResourceType.h"
  #include "ifcpp/IFC4/include/IfcSubedge.h"
  #include "ifcpp/IFC4/include/IfcSurface.h"
  #include "ifcpp/IFC4/include/IfcSurfaceCurve.h"
  #include "ifcpp/IFC4/include/IfcSurfaceCurveSweptAreaSolid.h"
  #include "ifcpp/IFC4/include/IfcSurfaceFeature.h"
  #include "ifcpp/IFC4/include/IfcSurfaceOfLinearExtrusion.h"
  #include "ifcpp/IFC4/include/IfcSurfaceOfRevolution.h"
  #include "ifcpp/IFC4/include/IfcSurfaceReinforcementArea.h"
  #include "ifcpp/IFC4/include/IfcSurfaceStyle.h"
  #include "ifcpp/IFC4/include/IfcSurfaceStyleLighting.h"
  #include "ifcpp/IFC4/include/IfcSurfaceStyleRefraction.h"
  #include "ifcpp/IFC4/include/IfcSurfaceStyleRendering.h"
  #include "ifcpp/IFC4/include/IfcSurfaceStyleShading.h"
  #include "ifcpp/IFC4/include/IfcSurfaceStyleWithTextures.h"
  #include "ifcpp/IFC4/include/IfcSurfaceTexture.h"
  #include "ifcpp/IFC4/include/IfcSweptAreaSolid.h"
  #include "ifcpp/IFC4/include/IfcSweptDiskSolid.h"
  #include "ifcpp/IFC4/include/IfcSweptDiskSolidPolygonal.h"
  #include "ifcpp/IFC4/include/IfcSweptSurface.h"
  #include "ifcpp/IFC4/include/IfcSwitchingDevice.h"
  #include "ifcpp/IFC4/include/IfcSwitchingDeviceType.h"
  #include "ifcpp/IFC4/include/IfcSystem.h"
  #include "ifcpp/IFC4/include/IfcSystemFurnitureElement.h"
  #include "ifcpp/IFC4/include/IfcSystemFurnitureElementType.h"
  #include "ifcpp/IFC4/include/IfcTShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcTable.h"
  #include "ifcpp/IFC4/include/IfcTableColumn.h"
  #include "ifcpp/IFC4/include/IfcTableRow.h"
  #include "ifcpp/IFC4/include/IfcTank.h"
  #include "ifcpp/IFC4/include/IfcTankType.h"
  #include "ifcpp/IFC4/include/IfcTask.h"
  #include "ifcpp/IFC4/include/IfcTaskTime.h"
  #include "ifcpp/IFC4/include/IfcTaskTimeRecurring.h"
  #include "ifcpp/IFC4/include/IfcTaskType.h"
  #include "ifcpp/IFC4/include/IfcTelecomAddress.h"
  #include "ifcpp/IFC4/include/IfcTendon.h"
  #include "ifcpp/IFC4/include/IfcTendonAnchor.h"
  #include "ifcpp/IFC4/include/IfcTendonAnchorType.h"
  #include "ifcpp/IFC4/include/IfcTendonType.h"
  #include "ifcpp/IFC4/include/IfcTessellatedFaceSet.h"
  #include "ifcpp/IFC4/include/IfcTessellatedItem.h"
  #include "ifcpp/IFC4/include/IfcTextLiteral.h"
  #include "ifcpp/IFC4/include/IfcTextLiteralWithExtent.h"
  #include "ifcpp/IFC4/include/IfcTextStyle.h"
  #include "ifcpp/IFC4/include/IfcTextStyleFontModel.h"
  #include "ifcpp/IFC4/include/IfcTextStyleForDefinedFont.h"
  #include "ifcpp/IFC4/include/IfcTextStyleTextModel.h"
  #include "ifcpp/IFC4/include/IfcTextureCoordinate.h"
  #include "ifcpp/IFC4/include/IfcTextureCoordinateGenerator.h"
  #include "ifcpp/IFC4/include/IfcTextureMap.h"
  #include "ifcpp/IFC4/include/IfcTextureVertex.h"
  #include "ifcpp/IFC4/include/IfcTextureVertexList.h"
  #include "ifcpp/IFC4/include/IfcTimePeriod.h"
  #include "ifcpp/IFC4/include/IfcTimeSeries.h"
  #include "ifcpp/IFC4/include/IfcTimeSeriesValue.h"
  #include "ifcpp/IFC4/include/IfcTopologicalRepresentationItem.h"
  #include "ifcpp/IFC4/include/IfcTopologyRepresentation.h"
  #include "ifcpp/IFC4/include/IfcToroidalSurface.h"
  #include "ifcpp/IFC4/include/IfcTransformer.h"
  #include "ifcpp/IFC4/include/IfcTransformerType.h"
  #include "ifcpp/IFC4/include/IfcTransitionCurveSegment2D.h"
  #include "ifcpp/IFC4/include/IfcTransportElement.h"
  #include "ifcpp/IFC4/include/IfcTransportElementType.h"
  #include "ifcpp/IFC4/include/IfcTrapeziumProfileDef.h"
  #include "ifcpp/IFC4/include/IfcTriangulatedFaceSet.h"
  #include "ifcpp/IFC4/include/IfcTriangulatedIrregularNetwork.h"
  #include "ifcpp/IFC4/include/IfcTrimmedCurve.h"
  #include "ifcpp/IFC4/include/IfcTubeBundle.h"
  #include "ifcpp/IFC4/include/IfcTubeBundleType.h"
  #include "ifcpp/IFC4/include/IfcTypeObject.h"
  #include "ifcpp/IFC4/include/IfcTypeProcess.h"
  #include "ifcpp/IFC4/include/IfcTypeProduct.h"
  #include "ifcpp/IFC4/include/IfcTypeResource.h"
  #include "ifcpp/IFC4/include/IfcUShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcUnitAssignment.h"
  #include "ifcpp/IFC4/include/IfcUnitaryControlElement.h"
  #include "ifcpp/IFC4/include/IfcUnitaryControlElementType.h"
  #include "ifcpp/IFC4/include/IfcUnitaryEquipment.h"
  #include "ifcpp/IFC4/include/IfcUnitaryEquipmentType.h"
  #include "ifcpp/IFC4/include/IfcValve.h"
  #include "ifcpp/IFC4/include/IfcValveType.h"
  #include "ifcpp/IFC4/include/IfcVector.h"
  #include "ifcpp/IFC4/include/IfcVertex.h"
  #include "ifcpp/IFC4/include/IfcVertexLoop.h"
  #include "ifcpp/IFC4/include/IfcVertexPoint.h"
  #include "ifcpp/IFC4/include/IfcVibrationIsolator.h"
  #include "ifcpp/IFC4/include/IfcVibrationIsolatorType.h"
  #include "ifcpp/IFC4/include/IfcVirtualElement.h"
  #include "ifcpp/IFC4/include/IfcVirtualGridIntersection.h"
  #include "ifcpp/IFC4/include/IfcVoidingFeature.h"
  #include "ifcpp/IFC4/include/IfcWall.h"
  #include "ifcpp/IFC4/include/IfcWallElementedCase.h"
  #include "ifcpp/IFC4/include/IfcWallStandardCase.h"
  #include "ifcpp/IFC4/include/IfcWallType.h"
  #include "ifcpp/IFC4/include/IfcWasteTerminal.h"
  #include "ifcpp/IFC4/include/IfcWasteTerminalType.h"
  #include "ifcpp/IFC4/include/IfcWindow.h"
  #include "ifcpp/IFC4/include/IfcWindowLiningProperties.h"
  #include "ifcpp/IFC4/include/IfcWindowPanelProperties.h"
  #include "ifcpp/IFC4/include/IfcWindowStandardCase.h"
  #include "ifcpp/IFC4/include/IfcWindowStyle.h"
  #include "ifcpp/IFC4/include/IfcWindowType.h"
  #include "ifcpp/IFC4/include/IfcWorkCalendar.h"
  #include "ifcpp/IFC4/include/IfcWorkControl.h"
  #include "ifcpp/IFC4/include/IfcWorkPlan.h"
  #include "ifcpp/IFC4/include/IfcWorkSchedule.h"
  #include "ifcpp/IFC4/include/IfcWorkTime.h"
  #include "ifcpp/IFC4/include/IfcZShapeProfileDef.h"
  #include "ifcpp/IFC4/include/IfcZone.h"
  #include "EntityFactory.h"
  
  	static std::map<std::string, std::function<BuildingEntity*( void )> > entity_factory_map = {
  { "IFCACTIONREQUEST", []()->BuildingEntity* { return new IfcActionRequest(); } },
  { "IFCACTOR", []()->BuildingEntity* { return new IfcActor(); } },
  { "IFCACTORROLE", []()->BuildingEntity* { return new IfcActorRole(); } },
  { "IFCACTUATOR", []()->BuildingEntity* { return new IfcActuator(); } },
  { "IFCACTUATORTYPE", []()->BuildingEntity* { return new IfcActuatorType(); } },
  { "IFCADDRESS", []()->BuildingEntity* { return new IfcAddress(); } },
  { "IFCADVANCEDBREP", []()->BuildingEntity* { return new IfcAdvancedBrep(); } },
  { "IFCADVANCEDBREPWITHVOIDS", []()->BuildingEntity* { return new IfcAdvancedBrepWithVoids(); } },
  { "IFCADVANCEDFACE", []()->BuildingEntity* { return new IfcAdvancedFace(); } },
  { "IFCAIRTERMINAL", []()->BuildingEntity* { return new IfcAirTerminal(); } },
  { "IFCAIRTERMINALBOX", []()->BuildingEntity* { return new IfcAirTerminalBox(); } },
  { "IFCAIRTERMINALBOXTYPE", []()->BuildingEntity* { return new IfcAirTerminalBoxType(); } },
  { "IFCAIRTERMINALTYPE", []()->BuildingEntity* { return new IfcAirTerminalType(); } },
  { "IFCAIRTOAIRHEATRECOVERY", []()->BuildingEntity* { return new IfcAirToAirHeatRecovery(); } },
  { "IFCAIRTOAIRHEATRECOVERYTYPE", []()->BuildingEntity* { return new IfcAirToAirHeatRecoveryType(); } },
  { "IFCALARM", []()->BuildingEntity* { return new IfcAlarm(); } },
  { "IFCALARMTYPE", []()->BuildingEntity* { return new IfcAlarmType(); } },
  { "IFCALIGNMENT", []()->BuildingEntity* { return new IfcAlignment(); } },
  { "IFCALIGNMENT2DHORIZONTAL", []()->BuildingEntity* { return new IfcAlignment2DHorizontal(); } },
  { "IFCALIGNMENT2DHORIZONTALSEGMENT", []()->BuildingEntity* { return new IfcAlignment2DHorizontalSegment(); } },
  { "IFCALIGNMENT2DSEGMENT", []()->BuildingEntity* { return new IfcAlignment2DSegment(); } },
  { "IFCALIGNMENT2DVERSEGCIRCULARARC", []()->BuildingEntity* { return new IfcAlignment2DVerSegCircularArc(); } },
  { "IFCALIGNMENT2DVERSEGLINE", []()->BuildingEntity* { return new IfcAlignment2DVerSegLine(); } },
  { "IFCALIGNMENT2DVERSEGPARABOLICARC", []()->BuildingEntity* { return new IfcAlignment2DVerSegParabolicArc(); } },
  { "IFCALIGNMENT2DVERTICAL", []()->BuildingEntity* { return new IfcAlignment2DVertical(); } },
  { "IFCALIGNMENT2DVERTICALSEGMENT", []()->BuildingEntity* { return new IfcAlignment2DVerticalSegment(); } },
  { "IFCALIGNMENTCURVE", []()->BuildingEntity* { return new IfcAlignmentCurve(); } },
  { "IFCANNOTATION", []()->BuildingEntity* { return new IfcAnnotation(); } },
  { "IFCANNOTATIONFILLAREA", []()->BuildingEntity* { return new IfcAnnotationFillArea(); } },
  { "IFCAPPLICATION", []()->BuildingEntity* { return new IfcApplication(); } },
  { "IFCAPPLIEDVALUE", []()->BuildingEntity* { return new IfcAppliedValue(); } },
  { "IFCAPPROVAL", []()->BuildingEntity* { return new IfcApproval(); } },
  { "IFCAPPROVALRELATIONSHIP", []()->BuildingEntity* { return new IfcApprovalRelationship(); } },
  { "IFCARBITRARYCLOSEDPROFILEDEF", []()->BuildingEntity* { return new IfcArbitraryClosedProfileDef(); } },
  { "IFCARBITRARYOPENPROFILEDEF", []()->BuildingEntity* { return new IfcArbitraryOpenProfileDef(); } },
  { "IFCARBITRARYPROFILEDEFWITHVOIDS", []()->BuildingEntity* { return new IfcArbitraryProfileDefWithVoids(); } },
  { "IFCASSET", []()->BuildingEntity* { return new IfcAsset(); } },
  { "IFCASYMMETRICISHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcAsymmetricIShapeProfileDef(); } },
  { "IFCAUDIOVISUALAPPLIANCE", []()->BuildingEntity* { return new IfcAudioVisualAppliance(); } },
  { "IFCAUDIOVISUALAPPLIANCETYPE", []()->BuildingEntity* { return new IfcAudioVisualApplianceType(); } },
  { "IFCAXIS1PLACEMENT", []()->BuildingEntity* { return new IfcAxis1Placement(); } },
  { "IFCAXIS2PLACEMENT2D", []()->BuildingEntity* { return new IfcAxis2Placement2D(); } },
  { "IFCAXIS2PLACEMENT3D", []()->BuildingEntity* { return new IfcAxis2Placement3D(); } },
  { "IFCBSPLINECURVE", []()->BuildingEntity* { return new IfcBSplineCurve(); } },
  { "IFCBSPLINECURVEWITHKNOTS", []()->BuildingEntity* { return new IfcBSplineCurveWithKnots(); } },
  { "IFCBSPLINESURFACE", []()->BuildingEntity* { return new IfcBSplineSurface(); } },
  { "IFCBSPLINESURFACEWITHKNOTS", []()->BuildingEntity* { return new IfcBSplineSurfaceWithKnots(); } },
  { "IFCBEAM", []()->BuildingEntity* { return new IfcBeam(); } },
  { "IFCBEAMSTANDARDCASE", []()->BuildingEntity* { return new IfcBeamStandardCase(); } },
  { "IFCBEAMTYPE", []()->BuildingEntity* { return new IfcBeamType(); } },
  { "IFCBLOBTEXTURE", []()->BuildingEntity* { return new IfcBlobTexture(); } },
  { "IFCBLOCK", []()->BuildingEntity* { return new IfcBlock(); } },
  { "IFCBOILER", []()->BuildingEntity* { return new IfcBoiler(); } },
  { "IFCBOILERTYPE", []()->BuildingEntity* { return new IfcBoilerType(); } },
  { "IFCBOOLEANCLIPPINGRESULT", []()->BuildingEntity* { return new IfcBooleanClippingResult(); } },
  { "IFCBOOLEANRESULT", []()->BuildingEntity* { return new IfcBooleanResult(); } },
  { "IFCBOUNDARYCONDITION", []()->BuildingEntity* { return new IfcBoundaryCondition(); } },
  { "IFCBOUNDARYCURVE", []()->BuildingEntity* { return new IfcBoundaryCurve(); } },
  { "IFCBOUNDARYEDGECONDITION", []()->BuildingEntity* { return new IfcBoundaryEdgeCondition(); } },
  { "IFCBOUNDARYFACECONDITION", []()->BuildingEntity* { return new IfcBoundaryFaceCondition(); } },
  { "IFCBOUNDARYNODECONDITION", []()->BuildingEntity* { return new IfcBoundaryNodeCondition(); } },
  { "IFCBOUNDARYNODECONDITIONWARPING", []()->BuildingEntity* { return new IfcBoundaryNodeConditionWarping(); } },
  { "IFCBOUNDEDCURVE", []()->BuildingEntity* { return new IfcBoundedCurve(); } },
  { "IFCBOUNDEDSURFACE", []()->BuildingEntity* { return new IfcBoundedSurface(); } },
  { "IFCBOUNDINGBOX", []()->BuildingEntity* { return new IfcBoundingBox(); } },
  { "IFCBOXEDHALFSPACE", []()->BuildingEntity* { return new IfcBoxedHalfSpace(); } },
  { "IFCBUILDING", []()->BuildingEntity* { return new IfcBuilding(); } },
  { "IFCBUILDINGELEMENT", []()->BuildingEntity* { return new IfcBuildingElement(); } },
  { "IFCBUILDINGELEMENTPART", []()->BuildingEntity* { return new IfcBuildingElementPart(); } },
  { "IFCBUILDINGELEMENTPARTTYPE", []()->BuildingEntity* { return new IfcBuildingElementPartType(); } },
  { "IFCBUILDINGELEMENTPROXY", []()->BuildingEntity* { return new IfcBuildingElementProxy(); } },
  { "IFCBUILDINGELEMENTPROXYTYPE", []()->BuildingEntity* { return new IfcBuildingElementProxyType(); } },
  { "IFCBUILDINGELEMENTTYPE", []()->BuildingEntity* { return new IfcBuildingElementType(); } },
  { "IFCBUILDINGSTOREY", []()->BuildingEntity* { return new IfcBuildingStorey(); } },
  { "IFCBUILDINGSYSTEM", []()->BuildingEntity* { return new IfcBuildingSystem(); } },
  { "IFCBURNER", []()->BuildingEntity* { return new IfcBurner(); } },
  { "IFCBURNERTYPE", []()->BuildingEntity* { return new IfcBurnerType(); } },
  { "IFCCSHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcCShapeProfileDef(); } },
  { "IFCCABLECARRIERFITTING", []()->BuildingEntity* { return new IfcCableCarrierFitting(); } },
  { "IFCCABLECARRIERFITTINGTYPE", []()->BuildingEntity* { return new IfcCableCarrierFittingType(); } },
  { "IFCCABLECARRIERSEGMENT", []()->BuildingEntity* { return new IfcCableCarrierSegment(); } },
  { "IFCCABLECARRIERSEGMENTTYPE", []()->BuildingEntity* { return new IfcCableCarrierSegmentType(); } },
  { "IFCCABLEFITTING", []()->BuildingEntity* { return new IfcCableFitting(); } },
  { "IFCCABLEFITTINGTYPE", []()->BuildingEntity* { return new IfcCableFittingType(); } },
  { "IFCCABLESEGMENT", []()->BuildingEntity* { return new IfcCableSegment(); } },
  { "IFCCABLESEGMENTTYPE", []()->BuildingEntity* { return new IfcCableSegmentType(); } },
  { "IFCCARTESIANPOINT", []()->BuildingEntity* { return new IfcCartesianPoint(); } },
  { "IFCCARTESIANPOINTLIST", []()->BuildingEntity* { return new IfcCartesianPointList(); } },
  { "IFCCARTESIANPOINTLIST2D", []()->BuildingEntity* { return new IfcCartesianPointList2D(); } },
  { "IFCCARTESIANPOINTLIST3D", []()->BuildingEntity* { return new IfcCartesianPointList3D(); } },
  { "IFCCARTESIANTRANSFORMATIONOPERATOR", []()->BuildingEntity* { return new IfcCartesianTransformationOperator(); } },
  { "IFCCARTESIANTRANSFORMATIONOPERATOR2D", []()->BuildingEntity* { return new IfcCartesianTransformationOperator2D(); } },
  { "IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM", []()->BuildingEntity* { return new IfcCartesianTransformationOperator2DnonUniform(); } },
  { "IFCCARTESIANTRANSFORMATIONOPERATOR3D", []()->BuildingEntity* { return new IfcCartesianTransformationOperator3D(); } },
  { "IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM", []()->BuildingEntity* { return new IfcCartesianTransformationOperator3DnonUniform(); } },
  { "IFCCENTERLINEPROFILEDEF", []()->BuildingEntity* { return new IfcCenterLineProfileDef(); } },
  { "IFCCHILLER", []()->BuildingEntity* { return new IfcChiller(); } },
  { "IFCCHILLERTYPE", []()->BuildingEntity* { return new IfcChillerType(); } },
  { "IFCCHIMNEY", []()->BuildingEntity* { return new IfcChimney(); } },
  { "IFCCHIMNEYTYPE", []()->BuildingEntity* { return new IfcChimneyType(); } },
  { "IFCCIRCLE", []()->BuildingEntity* { return new IfcCircle(); } },
  { "IFCCIRCLEHOLLOWPROFILEDEF", []()->BuildingEntity* { return new IfcCircleHollowProfileDef(); } },
  { "IFCCIRCLEPROFILEDEF", []()->BuildingEntity* { return new IfcCircleProfileDef(); } },
  { "IFCCIRCULARARCSEGMENT2D", []()->BuildingEntity* { return new IfcCircularArcSegment2D(); } },
  { "IFCCIVILELEMENT", []()->BuildingEntity* { return new IfcCivilElement(); } },
  { "IFCCIVILELEMENTTYPE", []()->BuildingEntity* { return new IfcCivilElementType(); } },
  { "IFCCLASSIFICATION", []()->BuildingEntity* { return new IfcClassification(); } },
  { "IFCCLASSIFICATIONREFERENCE", []()->BuildingEntity* { return new IfcClassificationReference(); } },
  { "IFCCLOSEDSHELL", []()->BuildingEntity* { return new IfcClosedShell(); } },
  { "IFCCOIL", []()->BuildingEntity* { return new IfcCoil(); } },
  { "IFCCOILTYPE", []()->BuildingEntity* { return new IfcCoilType(); } },
  { "IFCCOLOURRGB", []()->BuildingEntity* { return new IfcColourRgb(); } },
  { "IFCCOLOURRGBLIST", []()->BuildingEntity* { return new IfcColourRgbList(); } },
  { "IFCCOLOURSPECIFICATION", []()->BuildingEntity* { return new IfcColourSpecification(); } },
  { "IFCCOLUMN", []()->BuildingEntity* { return new IfcColumn(); } },
  { "IFCCOLUMNSTANDARDCASE", []()->BuildingEntity* { return new IfcColumnStandardCase(); } },
  { "IFCCOLUMNTYPE", []()->BuildingEntity* { return new IfcColumnType(); } },
  { "IFCCOMMUNICATIONSAPPLIANCE", []()->BuildingEntity* { return new IfcCommunicationsAppliance(); } },
  { "IFCCOMMUNICATIONSAPPLIANCETYPE", []()->BuildingEntity* { return new IfcCommunicationsApplianceType(); } },
  { "IFCCOMPLEXPROPERTY", []()->BuildingEntity* { return new IfcComplexProperty(); } },
  { "IFCCOMPLEXPROPERTYTEMPLATE", []()->BuildingEntity* { return new IfcComplexPropertyTemplate(); } },
  { "IFCCOMPOSITECURVE", []()->BuildingEntity* { return new IfcCompositeCurve(); } },
  { "IFCCOMPOSITECURVEONSURFACE", []()->BuildingEntity* { return new IfcCompositeCurveOnSurface(); } },
  { "IFCCOMPOSITECURVESEGMENT", []()->BuildingEntity* { return new IfcCompositeCurveSegment(); } },
  { "IFCCOMPOSITEPROFILEDEF", []()->BuildingEntity* { return new IfcCompositeProfileDef(); } },
  { "IFCCOMPRESSOR", []()->BuildingEntity* { return new IfcCompressor(); } },
  { "IFCCOMPRESSORTYPE", []()->BuildingEntity* { return new IfcCompressorType(); } },
  { "IFCCONDENSER", []()->BuildingEntity* { return new IfcCondenser(); } },
  { "IFCCONDENSERTYPE", []()->BuildingEntity* { return new IfcCondenserType(); } },
  { "IFCCONIC", []()->BuildingEntity* { return new IfcConic(); } },
  { "IFCCONNECTEDFACESET", []()->BuildingEntity* { return new IfcConnectedFaceSet(); } },
  { "IFCCONNECTIONCURVEGEOMETRY", []()->BuildingEntity* { return new IfcConnectionCurveGeometry(); } },
  { "IFCCONNECTIONGEOMETRY", []()->BuildingEntity* { return new IfcConnectionGeometry(); } },
  { "IFCCONNECTIONPOINTECCENTRICITY", []()->BuildingEntity* { return new IfcConnectionPointEccentricity(); } },
  { "IFCCONNECTIONPOINTGEOMETRY", []()->BuildingEntity* { return new IfcConnectionPointGeometry(); } },
  { "IFCCONNECTIONSURFACEGEOMETRY", []()->BuildingEntity* { return new IfcConnectionSurfaceGeometry(); } },
  { "IFCCONNECTIONVOLUMEGEOMETRY", []()->BuildingEntity* { return new IfcConnectionVolumeGeometry(); } },
  { "IFCCONSTRAINT", []()->BuildingEntity* { return new IfcConstraint(); } },
  { "IFCCONSTRUCTIONEQUIPMENTRESOURCE", []()->BuildingEntity* { return new IfcConstructionEquipmentResource(); } },
  { "IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE", []()->BuildingEntity* { return new IfcConstructionEquipmentResourceType(); } },
  { "IFCCONSTRUCTIONMATERIALRESOURCE", []()->BuildingEntity* { return new IfcConstructionMaterialResource(); } },
  { "IFCCONSTRUCTIONMATERIALRESOURCETYPE", []()->BuildingEntity* { return new IfcConstructionMaterialResourceType(); } },
  { "IFCCONSTRUCTIONPRODUCTRESOURCE", []()->BuildingEntity* { return new IfcConstructionProductResource(); } },
  { "IFCCONSTRUCTIONPRODUCTRESOURCETYPE", []()->BuildingEntity* { return new IfcConstructionProductResourceType(); } },
  { "IFCCONSTRUCTIONRESOURCE", []()->BuildingEntity* { return new IfcConstructionResource(); } },
  { "IFCCONSTRUCTIONRESOURCETYPE", []()->BuildingEntity* { return new IfcConstructionResourceType(); } },
  { "IFCCONTEXT", []()->BuildingEntity* { return new IfcContext(); } },
  { "IFCCONTEXTDEPENDENTUNIT", []()->BuildingEntity* { return new IfcContextDependentUnit(); } },
  { "IFCCONTROL", []()->BuildingEntity* { return new IfcControl(); } },
  { "IFCCONTROLLER", []()->BuildingEntity* { return new IfcController(); } },
  { "IFCCONTROLLERTYPE", []()->BuildingEntity* { return new IfcControllerType(); } },
  { "IFCCONVERSIONBASEDUNIT", []()->BuildingEntity* { return new IfcConversionBasedUnit(); } },
  { "IFCCONVERSIONBASEDUNITWITHOFFSET", []()->BuildingEntity* { return new IfcConversionBasedUnitWithOffset(); } },
  { "IFCCOOLEDBEAM", []()->BuildingEntity* { return new IfcCooledBeam(); } },
  { "IFCCOOLEDBEAMTYPE", []()->BuildingEntity* { return new IfcCooledBeamType(); } },
  { "IFCCOOLINGTOWER", []()->BuildingEntity* { return new IfcCoolingTower(); } },
  { "IFCCOOLINGTOWERTYPE", []()->BuildingEntity* { return new IfcCoolingTowerType(); } },
  { "IFCCOORDINATEOPERATION", []()->BuildingEntity* { return new IfcCoordinateOperation(); } },
  { "IFCCOORDINATEREFERENCESYSTEM", []()->BuildingEntity* { return new IfcCoordinateReferenceSystem(); } },
  { "IFCCOSTITEM", []()->BuildingEntity* { return new IfcCostItem(); } },
  { "IFCCOSTSCHEDULE", []()->BuildingEntity* { return new IfcCostSchedule(); } },
  { "IFCCOSTVALUE", []()->BuildingEntity* { return new IfcCostValue(); } },
  { "IFCCOVERING", []()->BuildingEntity* { return new IfcCovering(); } },
  { "IFCCOVERINGTYPE", []()->BuildingEntity* { return new IfcCoveringType(); } },
  { "IFCCREWRESOURCE", []()->BuildingEntity* { return new IfcCrewResource(); } },
  { "IFCCREWRESOURCETYPE", []()->BuildingEntity* { return new IfcCrewResourceType(); } },
  { "IFCCSGPRIMITIVE3D", []()->BuildingEntity* { return new IfcCsgPrimitive3D(); } },
  { "IFCCSGSOLID", []()->BuildingEntity* { return new IfcCsgSolid(); } },
  { "IFCCURRENCYRELATIONSHIP", []()->BuildingEntity* { return new IfcCurrencyRelationship(); } },
  { "IFCCURTAINWALL", []()->BuildingEntity* { return new IfcCurtainWall(); } },
  { "IFCCURTAINWALLTYPE", []()->BuildingEntity* { return new IfcCurtainWallType(); } },
  { "IFCCURVE", []()->BuildingEntity* { return new IfcCurve(); } },
  { "IFCCURVEBOUNDEDPLANE", []()->BuildingEntity* { return new IfcCurveBoundedPlane(); } },
  { "IFCCURVEBOUNDEDSURFACE", []()->BuildingEntity* { return new IfcCurveBoundedSurface(); } },
  { "IFCCURVESEGMENT2D", []()->BuildingEntity* { return new IfcCurveSegment2D(); } },
  { "IFCCURVESTYLE", []()->BuildingEntity* { return new IfcCurveStyle(); } },
  { "IFCCURVESTYLEFONT", []()->BuildingEntity* { return new IfcCurveStyleFont(); } },
  { "IFCCURVESTYLEFONTANDSCALING", []()->BuildingEntity* { return new IfcCurveStyleFontAndScaling(); } },
  { "IFCCURVESTYLEFONTPATTERN", []()->BuildingEntity* { return new IfcCurveStyleFontPattern(); } },
  { "IFCCYLINDRICALSURFACE", []()->BuildingEntity* { return new IfcCylindricalSurface(); } },
  { "IFCDAMPER", []()->BuildingEntity* { return new IfcDamper(); } },
  { "IFCDAMPERTYPE", []()->BuildingEntity* { return new IfcDamperType(); } },
  { "IFCDERIVEDPROFILEDEF", []()->BuildingEntity* { return new IfcDerivedProfileDef(); } },
  { "IFCDERIVEDUNIT", []()->BuildingEntity* { return new IfcDerivedUnit(); } },
  { "IFCDERIVEDUNITELEMENT", []()->BuildingEntity* { return new IfcDerivedUnitElement(); } },
  { "IFCDIMENSIONALEXPONENTS", []()->BuildingEntity* { return new IfcDimensionalExponents(); } },
  { "IFCDIRECTION", []()->BuildingEntity* { return new IfcDirection(); } },
  { "IFCDISCRETEACCESSORY", []()->BuildingEntity* { return new IfcDiscreteAccessory(); } },
  { "IFCDISCRETEACCESSORYTYPE", []()->BuildingEntity* { return new IfcDiscreteAccessoryType(); } },
  { "IFCDISTANCEEXPRESSION", []()->BuildingEntity* { return new IfcDistanceExpression(); } },
  { "IFCDISTRIBUTIONCHAMBERELEMENT", []()->BuildingEntity* { return new IfcDistributionChamberElement(); } },
  { "IFCDISTRIBUTIONCHAMBERELEMENTTYPE", []()->BuildingEntity* { return new IfcDistributionChamberElementType(); } },
  { "IFCDISTRIBUTIONCIRCUIT", []()->BuildingEntity* { return new IfcDistributionCircuit(); } },
  { "IFCDISTRIBUTIONCONTROLELEMENT", []()->BuildingEntity* { return new IfcDistributionControlElement(); } },
  { "IFCDISTRIBUTIONCONTROLELEMENTTYPE", []()->BuildingEntity* { return new IfcDistributionControlElementType(); } },
  { "IFCDISTRIBUTIONELEMENT", []()->BuildingEntity* { return new IfcDistributionElement(); } },
  { "IFCDISTRIBUTIONELEMENTTYPE", []()->BuildingEntity* { return new IfcDistributionElementType(); } },
  { "IFCDISTRIBUTIONFLOWELEMENT", []()->BuildingEntity* { return new IfcDistributionFlowElement(); } },
  { "IFCDISTRIBUTIONFLOWELEMENTTYPE", []()->BuildingEntity* { return new IfcDistributionFlowElementType(); } },
  { "IFCDISTRIBUTIONPORT", []()->BuildingEntity* { return new IfcDistributionPort(); } },
  { "IFCDISTRIBUTIONSYSTEM", []()->BuildingEntity* { return new IfcDistributionSystem(); } },
  { "IFCDOCUMENTINFORMATION", []()->BuildingEntity* { return new IfcDocumentInformation(); } },
  { "IFCDOCUMENTINFORMATIONRELATIONSHIP", []()->BuildingEntity* { return new IfcDocumentInformationRelationship(); } },
  { "IFCDOCUMENTREFERENCE", []()->BuildingEntity* { return new IfcDocumentReference(); } },
  { "IFCDOOR", []()->BuildingEntity* { return new IfcDoor(); } },
  { "IFCDOORLININGPROPERTIES", []()->BuildingEntity* { return new IfcDoorLiningProperties(); } },
  { "IFCDOORPANELPROPERTIES", []()->BuildingEntity* { return new IfcDoorPanelProperties(); } },
  { "IFCDOORSTANDARDCASE", []()->BuildingEntity* { return new IfcDoorStandardCase(); } },
  { "IFCDOORSTYLE", []()->BuildingEntity* { return new IfcDoorStyle(); } },
  { "IFCDOORTYPE", []()->BuildingEntity* { return new IfcDoorType(); } },
  { "IFCDRAUGHTINGPREDEFINEDCOLOUR", []()->BuildingEntity* { return new IfcDraughtingPreDefinedColour(); } },
  { "IFCDRAUGHTINGPREDEFINEDCURVEFONT", []()->BuildingEntity* { return new IfcDraughtingPreDefinedCurveFont(); } },
  { "IFCDUCTFITTING", []()->BuildingEntity* { return new IfcDuctFitting(); } },
  { "IFCDUCTFITTINGTYPE", []()->BuildingEntity* { return new IfcDuctFittingType(); } },
  { "IFCDUCTSEGMENT", []()->BuildingEntity* { return new IfcDuctSegment(); } },
  { "IFCDUCTSEGMENTTYPE", []()->BuildingEntity* { return new IfcDuctSegmentType(); } },
  { "IFCDUCTSILENCER", []()->BuildingEntity* { return new IfcDuctSilencer(); } },
  { "IFCDUCTSILENCERTYPE", []()->BuildingEntity* { return new IfcDuctSilencerType(); } },
  { "IFCEDGE", []()->BuildingEntity* { return new IfcEdge(); } },
  { "IFCEDGECURVE", []()->BuildingEntity* { return new IfcEdgeCurve(); } },
  { "IFCEDGELOOP", []()->BuildingEntity* { return new IfcEdgeLoop(); } },
  { "IFCELECTRICAPPLIANCE", []()->BuildingEntity* { return new IfcElectricAppliance(); } },
  { "IFCELECTRICAPPLIANCETYPE", []()->BuildingEntity* { return new IfcElectricApplianceType(); } },
  { "IFCELECTRICDISTRIBUTIONBOARD", []()->BuildingEntity* { return new IfcElectricDistributionBoard(); } },
  { "IFCELECTRICDISTRIBUTIONBOARDTYPE", []()->BuildingEntity* { return new IfcElectricDistributionBoardType(); } },
  { "IFCELECTRICFLOWSTORAGEDEVICE", []()->BuildingEntity* { return new IfcElectricFlowStorageDevice(); } },
  { "IFCELECTRICFLOWSTORAGEDEVICETYPE", []()->BuildingEntity* { return new IfcElectricFlowStorageDeviceType(); } },
  { "IFCELECTRICGENERATOR", []()->BuildingEntity* { return new IfcElectricGenerator(); } },
  { "IFCELECTRICGENERATORTYPE", []()->BuildingEntity* { return new IfcElectricGeneratorType(); } },
  { "IFCELECTRICMOTOR", []()->BuildingEntity* { return new IfcElectricMotor(); } },
  { "IFCELECTRICMOTORTYPE", []()->BuildingEntity* { return new IfcElectricMotorType(); } },
  { "IFCELECTRICTIMECONTROL", []()->BuildingEntity* { return new IfcElectricTimeControl(); } },
  { "IFCELECTRICTIMECONTROLTYPE", []()->BuildingEntity* { return new IfcElectricTimeControlType(); } },
  { "IFCELEMENT", []()->BuildingEntity* { return new IfcElement(); } },
  { "IFCELEMENTASSEMBLY", []()->BuildingEntity* { return new IfcElementAssembly(); } },
  { "IFCELEMENTASSEMBLYTYPE", []()->BuildingEntity* { return new IfcElementAssemblyType(); } },
  { "IFCELEMENTCOMPONENT", []()->BuildingEntity* { return new IfcElementComponent(); } },
  { "IFCELEMENTCOMPONENTTYPE", []()->BuildingEntity* { return new IfcElementComponentType(); } },
  { "IFCELEMENTQUANTITY", []()->BuildingEntity* { return new IfcElementQuantity(); } },
  { "IFCELEMENTTYPE", []()->BuildingEntity* { return new IfcElementType(); } },
  { "IFCELEMENTARYSURFACE", []()->BuildingEntity* { return new IfcElementarySurface(); } },
  { "IFCELLIPSE", []()->BuildingEntity* { return new IfcEllipse(); } },
  { "IFCELLIPSEPROFILEDEF", []()->BuildingEntity* { return new IfcEllipseProfileDef(); } },
  { "IFCENERGYCONVERSIONDEVICE", []()->BuildingEntity* { return new IfcEnergyConversionDevice(); } },
  { "IFCENERGYCONVERSIONDEVICETYPE", []()->BuildingEntity* { return new IfcEnergyConversionDeviceType(); } },
  { "IFCENGINE", []()->BuildingEntity* { return new IfcEngine(); } },
  { "IFCENGINETYPE", []()->BuildingEntity* { return new IfcEngineType(); } },
  { "IFCEVAPORATIVECOOLER", []()->BuildingEntity* { return new IfcEvaporativeCooler(); } },
  { "IFCEVAPORATIVECOOLERTYPE", []()->BuildingEntity* { return new IfcEvaporativeCoolerType(); } },
  { "IFCEVAPORATOR", []()->BuildingEntity* { return new IfcEvaporator(); } },
  { "IFCEVAPORATORTYPE", []()->BuildingEntity* { return new IfcEvaporatorType(); } },
  { "IFCEVENT", []()->BuildingEntity* { return new IfcEvent(); } },
  { "IFCEVENTTIME", []()->BuildingEntity* { return new IfcEventTime(); } },
  { "IFCEVENTTYPE", []()->BuildingEntity* { return new IfcEventType(); } },
  { "IFCEXTENDEDPROPERTIES", []()->BuildingEntity* { return new IfcExtendedProperties(); } },
  { "IFCEXTERNALINFORMATION", []()->BuildingEntity* { return new IfcExternalInformation(); } },
  { "IFCEXTERNALREFERENCE", []()->BuildingEntity* { return new IfcExternalReference(); } },
  { "IFCEXTERNALREFERENCERELATIONSHIP", []()->BuildingEntity* { return new IfcExternalReferenceRelationship(); } },
  { "IFCEXTERNALSPATIALELEMENT", []()->BuildingEntity* { return new IfcExternalSpatialElement(); } },
  { "IFCEXTERNALSPATIALSTRUCTUREELEMENT", []()->BuildingEntity* { return new IfcExternalSpatialStructureElement(); } },
  { "IFCEXTERNALLYDEFINEDHATCHSTYLE", []()->BuildingEntity* { return new IfcExternallyDefinedHatchStyle(); } },
  { "IFCEXTERNALLYDEFINEDSURFACESTYLE", []()->BuildingEntity* { return new IfcExternallyDefinedSurfaceStyle(); } },
  { "IFCEXTERNALLYDEFINEDTEXTFONT", []()->BuildingEntity* { return new IfcExternallyDefinedTextFont(); } },
  { "IFCEXTRUDEDAREASOLID", []()->BuildingEntity* { return new IfcExtrudedAreaSolid(); } },
  { "IFCEXTRUDEDAREASOLIDTAPERED", []()->BuildingEntity* { return new IfcExtrudedAreaSolidTapered(); } },
  { "IFCFACE", []()->BuildingEntity* { return new IfcFace(); } },
  { "IFCFACEBASEDSURFACEMODEL", []()->BuildingEntity* { return new IfcFaceBasedSurfaceModel(); } },
  { "IFCFACEBOUND", []()->BuildingEntity* { return new IfcFaceBound(); } },
  { "IFCFACEOUTERBOUND", []()->BuildingEntity* { return new IfcFaceOuterBound(); } },
  { "IFCFACESURFACE", []()->BuildingEntity* { return new IfcFaceSurface(); } },
  { "IFCFACETEDBREP", []()->BuildingEntity* { return new IfcFacetedBrep(); } },
  { "IFCFACETEDBREPWITHVOIDS", []()->BuildingEntity* { return new IfcFacetedBrepWithVoids(); } },
  { "IFCFAILURECONNECTIONCONDITION", []()->BuildingEntity* { return new IfcFailureConnectionCondition(); } },
  { "IFCFAN", []()->BuildingEntity* { return new IfcFan(); } },
  { "IFCFANTYPE", []()->BuildingEntity* { return new IfcFanType(); } },
  { "IFCFASTENER", []()->BuildingEntity* { return new IfcFastener(); } },
  { "IFCFASTENERTYPE", []()->BuildingEntity* { return new IfcFastenerType(); } },
  { "IFCFEATUREELEMENT", []()->BuildingEntity* { return new IfcFeatureElement(); } },
  { "IFCFEATUREELEMENTADDITION", []()->BuildingEntity* { return new IfcFeatureElementAddition(); } },
  { "IFCFEATUREELEMENTSUBTRACTION", []()->BuildingEntity* { return new IfcFeatureElementSubtraction(); } },
  { "IFCFILLAREASTYLE", []()->BuildingEntity* { return new IfcFillAreaStyle(); } },
  { "IFCFILLAREASTYLEHATCHING", []()->BuildingEntity* { return new IfcFillAreaStyleHatching(); } },
  { "IFCFILLAREASTYLETILES", []()->BuildingEntity* { return new IfcFillAreaStyleTiles(); } },
  { "IFCFILTER", []()->BuildingEntity* { return new IfcFilter(); } },
  { "IFCFILTERTYPE", []()->BuildingEntity* { return new IfcFilterType(); } },
  { "IFCFIRESUPPRESSIONTERMINAL", []()->BuildingEntity* { return new IfcFireSuppressionTerminal(); } },
  { "IFCFIRESUPPRESSIONTERMINALTYPE", []()->BuildingEntity* { return new IfcFireSuppressionTerminalType(); } },
  { "IFCFIXEDREFERENCESWEPTAREASOLID", []()->BuildingEntity* { return new IfcFixedReferenceSweptAreaSolid(); } },
  { "IFCFLOWCONTROLLER", []()->BuildingEntity* { return new IfcFlowController(); } },
  { "IFCFLOWCONTROLLERTYPE", []()->BuildingEntity* { return new IfcFlowControllerType(); } },
  { "IFCFLOWFITTING", []()->BuildingEntity* { return new IfcFlowFitting(); } },
  { "IFCFLOWFITTINGTYPE", []()->BuildingEntity* { return new IfcFlowFittingType(); } },
  { "IFCFLOWINSTRUMENT", []()->BuildingEntity* { return new IfcFlowInstrument(); } },
  { "IFCFLOWINSTRUMENTTYPE", []()->BuildingEntity* { return new IfcFlowInstrumentType(); } },
  { "IFCFLOWMETER", []()->BuildingEntity* { return new IfcFlowMeter(); } },
  { "IFCFLOWMETERTYPE", []()->BuildingEntity* { return new IfcFlowMeterType(); } },
  { "IFCFLOWMOVINGDEVICE", []()->BuildingEntity* { return new IfcFlowMovingDevice(); } },
  { "IFCFLOWMOVINGDEVICETYPE", []()->BuildingEntity* { return new IfcFlowMovingDeviceType(); } },
  { "IFCFLOWSEGMENT", []()->BuildingEntity* { return new IfcFlowSegment(); } },
  { "IFCFLOWSEGMENTTYPE", []()->BuildingEntity* { return new IfcFlowSegmentType(); } },
  { "IFCFLOWSTORAGEDEVICE", []()->BuildingEntity* { return new IfcFlowStorageDevice(); } },
  { "IFCFLOWSTORAGEDEVICETYPE", []()->BuildingEntity* { return new IfcFlowStorageDeviceType(); } },
  { "IFCFLOWTERMINAL", []()->BuildingEntity* { return new IfcFlowTerminal(); } },
  { "IFCFLOWTERMINALTYPE", []()->BuildingEntity* { return new IfcFlowTerminalType(); } },
  { "IFCFLOWTREATMENTDEVICE", []()->BuildingEntity* { return new IfcFlowTreatmentDevice(); } },
  { "IFCFLOWTREATMENTDEVICETYPE", []()->BuildingEntity* { return new IfcFlowTreatmentDeviceType(); } },
  { "IFCFOOTING", []()->BuildingEntity* { return new IfcFooting(); } },
  { "IFCFOOTINGTYPE", []()->BuildingEntity* { return new IfcFootingType(); } },
  { "IFCFURNISHINGELEMENT", []()->BuildingEntity* { return new IfcFurnishingElement(); } },
  { "IFCFURNISHINGELEMENTTYPE", []()->BuildingEntity* { return new IfcFurnishingElementType(); } },
  { "IFCFURNITURE", []()->BuildingEntity* { return new IfcFurniture(); } },
  { "IFCFURNITURETYPE", []()->BuildingEntity* { return new IfcFurnitureType(); } },
  { "IFCGEOGRAPHICELEMENT", []()->BuildingEntity* { return new IfcGeographicElement(); } },
  { "IFCGEOGRAPHICELEMENTTYPE", []()->BuildingEntity* { return new IfcGeographicElementType(); } },
  { "IFCGEOMETRICCURVESET", []()->BuildingEntity* { return new IfcGeometricCurveSet(); } },
  { "IFCGEOMETRICREPRESENTATIONCONTEXT", []()->BuildingEntity* { return new IfcGeometricRepresentationContext(); } },
  { "IFCGEOMETRICREPRESENTATIONITEM", []()->BuildingEntity* { return new IfcGeometricRepresentationItem(); } },
  { "IFCGEOMETRICREPRESENTATIONSUBCONTEXT", []()->BuildingEntity* { return new IfcGeometricRepresentationSubContext(); } },
  { "IFCGEOMETRICSET", []()->BuildingEntity* { return new IfcGeometricSet(); } },
  { "IFCGRID", []()->BuildingEntity* { return new IfcGrid(); } },
  { "IFCGRIDAXIS", []()->BuildingEntity* { return new IfcGridAxis(); } },
  { "IFCGRIDPLACEMENT", []()->BuildingEntity* { return new IfcGridPlacement(); } },
  { "IFCGROUP", []()->BuildingEntity* { return new IfcGroup(); } },
  { "IFCHALFSPACESOLID", []()->BuildingEntity* { return new IfcHalfSpaceSolid(); } },
  { "IFCHEATEXCHANGER", []()->BuildingEntity* { return new IfcHeatExchanger(); } },
  { "IFCHEATEXCHANGERTYPE", []()->BuildingEntity* { return new IfcHeatExchangerType(); } },
  { "IFCHUMIDIFIER", []()->BuildingEntity* { return new IfcHumidifier(); } },
  { "IFCHUMIDIFIERTYPE", []()->BuildingEntity* { return new IfcHumidifierType(); } },
  { "IFCISHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcIShapeProfileDef(); } },
  { "IFCIMAGETEXTURE", []()->BuildingEntity* { return new IfcImageTexture(); } },
  { "IFCINDEXEDCOLOURMAP", []()->BuildingEntity* { return new IfcIndexedColourMap(); } },
  { "IFCINDEXEDPOLYCURVE", []()->BuildingEntity* { return new IfcIndexedPolyCurve(); } },
  { "IFCINDEXEDPOLYGONALFACE", []()->BuildingEntity* { return new IfcIndexedPolygonalFace(); } },
  { "IFCINDEXEDPOLYGONALFACEWITHVOIDS", []()->BuildingEntity* { return new IfcIndexedPolygonalFaceWithVoids(); } },
  { "IFCINDEXEDTEXTUREMAP", []()->BuildingEntity* { return new IfcIndexedTextureMap(); } },
  { "IFCINDEXEDTRIANGLETEXTUREMAP", []()->BuildingEntity* { return new IfcIndexedTriangleTextureMap(); } },
  { "IFCINTERCEPTOR", []()->BuildingEntity* { return new IfcInterceptor(); } },
  { "IFCINTERCEPTORTYPE", []()->BuildingEntity* { return new IfcInterceptorType(); } },
  { "IFCINTERSECTIONCURVE", []()->BuildingEntity* { return new IfcIntersectionCurve(); } },
  { "IFCINVENTORY", []()->BuildingEntity* { return new IfcInventory(); } },
  { "IFCIRREGULARTIMESERIES", []()->BuildingEntity* { return new IfcIrregularTimeSeries(); } },
  { "IFCIRREGULARTIMESERIESVALUE", []()->BuildingEntity* { return new IfcIrregularTimeSeriesValue(); } },
  { "IFCJUNCTIONBOX", []()->BuildingEntity* { return new IfcJunctionBox(); } },
  { "IFCJUNCTIONBOXTYPE", []()->BuildingEntity* { return new IfcJunctionBoxType(); } },
  { "IFCLSHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcLShapeProfileDef(); } },
  { "IFCLABORRESOURCE", []()->BuildingEntity* { return new IfcLaborResource(); } },
  { "IFCLABORRESOURCETYPE", []()->BuildingEntity* { return new IfcLaborResourceType(); } },
  { "IFCLAGTIME", []()->BuildingEntity* { return new IfcLagTime(); } },
  { "IFCLAMP", []()->BuildingEntity* { return new IfcLamp(); } },
  { "IFCLAMPTYPE", []()->BuildingEntity* { return new IfcLampType(); } },
  { "IFCLIBRARYINFORMATION", []()->BuildingEntity* { return new IfcLibraryInformation(); } },
  { "IFCLIBRARYREFERENCE", []()->BuildingEntity* { return new IfcLibraryReference(); } },
  { "IFCLIGHTDISTRIBUTIONDATA", []()->BuildingEntity* { return new IfcLightDistributionData(); } },
  { "IFCLIGHTFIXTURE", []()->BuildingEntity* { return new IfcLightFixture(); } },
  { "IFCLIGHTFIXTURETYPE", []()->BuildingEntity* { return new IfcLightFixtureType(); } },
  { "IFCLIGHTINTENSITYDISTRIBUTION", []()->BuildingEntity* { return new IfcLightIntensityDistribution(); } },
  { "IFCLIGHTSOURCE", []()->BuildingEntity* { return new IfcLightSource(); } },
  { "IFCLIGHTSOURCEAMBIENT", []()->BuildingEntity* { return new IfcLightSourceAmbient(); } },
  { "IFCLIGHTSOURCEDIRECTIONAL", []()->BuildingEntity* { return new IfcLightSourceDirectional(); } },
  { "IFCLIGHTSOURCEGONIOMETRIC", []()->BuildingEntity* { return new IfcLightSourceGoniometric(); } },
  { "IFCLIGHTSOURCEPOSITIONAL", []()->BuildingEntity* { return new IfcLightSourcePositional(); } },
  { "IFCLIGHTSOURCESPOT", []()->BuildingEntity* { return new IfcLightSourceSpot(); } },
  { "IFCLINE", []()->BuildingEntity* { return new IfcLine(); } },
  { "IFCLINESEGMENT2D", []()->BuildingEntity* { return new IfcLineSegment2D(); } },
  { "IFCLINEARPLACEMENT", []()->BuildingEntity* { return new IfcLinearPlacement(); } },
  { "IFCLINEARPOSITIONINGELEMENT", []()->BuildingEntity* { return new IfcLinearPositioningElement(); } },
  { "IFCLOCALPLACEMENT", []()->BuildingEntity* { return new IfcLocalPlacement(); } },
  { "IFCLOOP", []()->BuildingEntity* { return new IfcLoop(); } },
  { "IFCMANIFOLDSOLIDBREP", []()->BuildingEntity* { return new IfcManifoldSolidBrep(); } },
  { "IFCMAPCONVERSION", []()->BuildingEntity* { return new IfcMapConversion(); } },
  { "IFCMAPPEDITEM", []()->BuildingEntity* { return new IfcMappedItem(); } },
  { "IFCMATERIAL", []()->BuildingEntity* { return new IfcMaterial(); } },
  { "IFCMATERIALCLASSIFICATIONRELATIONSHIP", []()->BuildingEntity* { return new IfcMaterialClassificationRelationship(); } },
  { "IFCMATERIALCONSTITUENT", []()->BuildingEntity* { return new IfcMaterialConstituent(); } },
  { "IFCMATERIALCONSTITUENTSET", []()->BuildingEntity* { return new IfcMaterialConstituentSet(); } },
  { "IFCMATERIALDEFINITION", []()->BuildingEntity* { return new IfcMaterialDefinition(); } },
  { "IFCMATERIALDEFINITIONREPRESENTATION", []()->BuildingEntity* { return new IfcMaterialDefinitionRepresentation(); } },
  { "IFCMATERIALLAYER", []()->BuildingEntity* { return new IfcMaterialLayer(); } },
  { "IFCMATERIALLAYERSET", []()->BuildingEntity* { return new IfcMaterialLayerSet(); } },
  { "IFCMATERIALLAYERSETUSAGE", []()->BuildingEntity* { return new IfcMaterialLayerSetUsage(); } },
  { "IFCMATERIALLAYERWITHOFFSETS", []()->BuildingEntity* { return new IfcMaterialLayerWithOffsets(); } },
  { "IFCMATERIALLIST", []()->BuildingEntity* { return new IfcMaterialList(); } },
  { "IFCMATERIALPROFILE", []()->BuildingEntity* { return new IfcMaterialProfile(); } },
  { "IFCMATERIALPROFILESET", []()->BuildingEntity* { return new IfcMaterialProfileSet(); } },
  { "IFCMATERIALPROFILESETUSAGE", []()->BuildingEntity* { return new IfcMaterialProfileSetUsage(); } },
  { "IFCMATERIALPROFILESETUSAGETAPERING", []()->BuildingEntity* { return new IfcMaterialProfileSetUsageTapering(); } },
  { "IFCMATERIALPROFILEWITHOFFSETS", []()->BuildingEntity* { return new IfcMaterialProfileWithOffsets(); } },
  { "IFCMATERIALPROPERTIES", []()->BuildingEntity* { return new IfcMaterialProperties(); } },
  { "IFCMATERIALRELATIONSHIP", []()->BuildingEntity* { return new IfcMaterialRelationship(); } },
  { "IFCMATERIALUSAGEDEFINITION", []()->BuildingEntity* { return new IfcMaterialUsageDefinition(); } },
  { "IFCMEASUREWITHUNIT", []()->BuildingEntity* { return new IfcMeasureWithUnit(); } },
  { "IFCMECHANICALFASTENER", []()->BuildingEntity* { return new IfcMechanicalFastener(); } },
  { "IFCMECHANICALFASTENERTYPE", []()->BuildingEntity* { return new IfcMechanicalFastenerType(); } },
  { "IFCMEDICALDEVICE", []()->BuildingEntity* { return new IfcMedicalDevice(); } },
  { "IFCMEDICALDEVICETYPE", []()->BuildingEntity* { return new IfcMedicalDeviceType(); } },
  { "IFCMEMBER", []()->BuildingEntity* { return new IfcMember(); } },
  { "IFCMEMBERSTANDARDCASE", []()->BuildingEntity* { return new IfcMemberStandardCase(); } },
  { "IFCMEMBERTYPE", []()->BuildingEntity* { return new IfcMemberType(); } },
  { "IFCMETRIC", []()->BuildingEntity* { return new IfcMetric(); } },
  { "IFCMIRROREDPROFILEDEF", []()->BuildingEntity* { return new IfcMirroredProfileDef(); } },
  { "IFCMONETARYUNIT", []()->BuildingEntity* { return new IfcMonetaryUnit(); } },
  { "IFCMOTORCONNECTION", []()->BuildingEntity* { return new IfcMotorConnection(); } },
  { "IFCMOTORCONNECTIONTYPE", []()->BuildingEntity* { return new IfcMotorConnectionType(); } },
  { "IFCNAMEDUNIT", []()->BuildingEntity* { return new IfcNamedUnit(); } },
  { "IFCOBJECT", []()->BuildingEntity* { return new IfcObject(); } },
  { "IFCOBJECTDEFINITION", []()->BuildingEntity* { return new IfcObjectDefinition(); } },
  { "IFCOBJECTPLACEMENT", []()->BuildingEntity* { return new IfcObjectPlacement(); } },
  { "IFCOBJECTIVE", []()->BuildingEntity* { return new IfcObjective(); } },
  { "IFCOCCUPANT", []()->BuildingEntity* { return new IfcOccupant(); } },
  { "IFCOFFSETCURVE", []()->BuildingEntity* { return new IfcOffsetCurve(); } },
  { "IFCOFFSETCURVE2D", []()->BuildingEntity* { return new IfcOffsetCurve2D(); } },
  { "IFCOFFSETCURVE3D", []()->BuildingEntity* { return new IfcOffsetCurve3D(); } },
  { "IFCOFFSETCURVEBYDISTANCES", []()->BuildingEntity* { return new IfcOffsetCurveByDistances(); } },
  { "IFCOPENSHELL", []()->BuildingEntity* { return new IfcOpenShell(); } },
  { "IFCOPENINGELEMENT", []()->BuildingEntity* { return new IfcOpeningElement(); } },
  { "IFCOPENINGSTANDARDCASE", []()->BuildingEntity* { return new IfcOpeningStandardCase(); } },
  { "IFCORGANIZATION", []()->BuildingEntity* { return new IfcOrganization(); } },
  { "IFCORGANIZATIONRELATIONSHIP", []()->BuildingEntity* { return new IfcOrganizationRelationship(); } },
  { "IFCORIENTATIONEXPRESSION", []()->BuildingEntity* { return new IfcOrientationExpression(); } },
  { "IFCORIENTEDEDGE", []()->BuildingEntity* { return new IfcOrientedEdge(); } },
  { "IFCOUTERBOUNDARYCURVE", []()->BuildingEntity* { return new IfcOuterBoundaryCurve(); } },
  { "IFCOUTLET", []()->BuildingEntity* { return new IfcOutlet(); } },
  { "IFCOUTLETTYPE", []()->BuildingEntity* { return new IfcOutletType(); } },
  { "IFCOWNERHISTORY", []()->BuildingEntity* { return new IfcOwnerHistory(); } },
  { "IFCPARAMETERIZEDPROFILEDEF", []()->BuildingEntity* { return new IfcParameterizedProfileDef(); } },
  { "IFCPATH", []()->BuildingEntity* { return new IfcPath(); } },
  { "IFCPCURVE", []()->BuildingEntity* { return new IfcPcurve(); } },
  { "IFCPERFORMANCEHISTORY", []()->BuildingEntity* { return new IfcPerformanceHistory(); } },
  { "IFCPERMEABLECOVERINGPROPERTIES", []()->BuildingEntity* { return new IfcPermeableCoveringProperties(); } },
  { "IFCPERMIT", []()->BuildingEntity* { return new IfcPermit(); } },
  { "IFCPERSON", []()->BuildingEntity* { return new IfcPerson(); } },
  { "IFCPERSONANDORGANIZATION", []()->BuildingEntity* { return new IfcPersonAndOrganization(); } },
  { "IFCPHYSICALCOMPLEXQUANTITY", []()->BuildingEntity* { return new IfcPhysicalComplexQuantity(); } },
  { "IFCPHYSICALQUANTITY", []()->BuildingEntity* { return new IfcPhysicalQuantity(); } },
  { "IFCPHYSICALSIMPLEQUANTITY", []()->BuildingEntity* { return new IfcPhysicalSimpleQuantity(); } },
  { "IFCPILE", []()->BuildingEntity* { return new IfcPile(); } },
  { "IFCPILETYPE", []()->BuildingEntity* { return new IfcPileType(); } },
  { "IFCPIPEFITTING", []()->BuildingEntity* { return new IfcPipeFitting(); } },
  { "IFCPIPEFITTINGTYPE", []()->BuildingEntity* { return new IfcPipeFittingType(); } },
  { "IFCPIPESEGMENT", []()->BuildingEntity* { return new IfcPipeSegment(); } },
  { "IFCPIPESEGMENTTYPE", []()->BuildingEntity* { return new IfcPipeSegmentType(); } },
  { "IFCPIXELTEXTURE", []()->BuildingEntity* { return new IfcPixelTexture(); } },
  { "IFCPLACEMENT", []()->BuildingEntity* { return new IfcPlacement(); } },
  { "IFCPLANARBOX", []()->BuildingEntity* { return new IfcPlanarBox(); } },
  { "IFCPLANAREXTENT", []()->BuildingEntity* { return new IfcPlanarExtent(); } },
  { "IFCPLANE", []()->BuildingEntity* { return new IfcPlane(); } },
  { "IFCPLATE", []()->BuildingEntity* { return new IfcPlate(); } },
  { "IFCPLATESTANDARDCASE", []()->BuildingEntity* { return new IfcPlateStandardCase(); } },
  { "IFCPLATETYPE", []()->BuildingEntity* { return new IfcPlateType(); } },
  { "IFCPOINT", []()->BuildingEntity* { return new IfcPoint(); } },
  { "IFCPOINTONCURVE", []()->BuildingEntity* { return new IfcPointOnCurve(); } },
  { "IFCPOINTONSURFACE", []()->BuildingEntity* { return new IfcPointOnSurface(); } },
  { "IFCPOLYLOOP", []()->BuildingEntity* { return new IfcPolyLoop(); } },
  { "IFCPOLYGONALBOUNDEDHALFSPACE", []()->BuildingEntity* { return new IfcPolygonalBoundedHalfSpace(); } },
  { "IFCPOLYGONALFACESET", []()->BuildingEntity* { return new IfcPolygonalFaceSet(); } },
  { "IFCPOLYLINE", []()->BuildingEntity* { return new IfcPolyline(); } },
  { "IFCPORT", []()->BuildingEntity* { return new IfcPort(); } },
  { "IFCPOSITIONINGELEMENT", []()->BuildingEntity* { return new IfcPositioningElement(); } },
  { "IFCPOSTALADDRESS", []()->BuildingEntity* { return new IfcPostalAddress(); } },
  { "IFCPREDEFINEDCOLOUR", []()->BuildingEntity* { return new IfcPreDefinedColour(); } },
  { "IFCPREDEFINEDCURVEFONT", []()->BuildingEntity* { return new IfcPreDefinedCurveFont(); } },
  { "IFCPREDEFINEDITEM", []()->BuildingEntity* { return new IfcPreDefinedItem(); } },
  { "IFCPREDEFINEDPROPERTIES", []()->BuildingEntity* { return new IfcPreDefinedProperties(); } },
  { "IFCPREDEFINEDPROPERTYSET", []()->BuildingEntity* { return new IfcPreDefinedPropertySet(); } },
  { "IFCPREDEFINEDTEXTFONT", []()->BuildingEntity* { return new IfcPreDefinedTextFont(); } },
  { "IFCPRESENTATIONITEM", []()->BuildingEntity* { return new IfcPresentationItem(); } },
  { "IFCPRESENTATIONLAYERASSIGNMENT", []()->BuildingEntity* { return new IfcPresentationLayerAssignment(); } },
  { "IFCPRESENTATIONLAYERWITHSTYLE", []()->BuildingEntity* { return new IfcPresentationLayerWithStyle(); } },
  { "IFCPRESENTATIONSTYLE", []()->BuildingEntity* { return new IfcPresentationStyle(); } },
  { "IFCPRESENTATIONSTYLEASSIGNMENT", []()->BuildingEntity* { return new IfcPresentationStyleAssignment(); } },
  { "IFCPROCEDURE", []()->BuildingEntity* { return new IfcProcedure(); } },
  { "IFCPROCEDURETYPE", []()->BuildingEntity* { return new IfcProcedureType(); } },
  { "IFCPROCESS", []()->BuildingEntity* { return new IfcProcess(); } },
  { "IFCPRODUCT", []()->BuildingEntity* { return new IfcProduct(); } },
  { "IFCPRODUCTDEFINITIONSHAPE", []()->BuildingEntity* { return new IfcProductDefinitionShape(); } },
  { "IFCPRODUCTREPRESENTATION", []()->BuildingEntity* { return new IfcProductRepresentation(); } },
  { "IFCPROFILEDEF", []()->BuildingEntity* { return new IfcProfileDef(); } },
  { "IFCPROFILEPROPERTIES", []()->BuildingEntity* { return new IfcProfileProperties(); } },
  { "IFCPROJECT", []()->BuildingEntity* { return new IfcProject(); } },
  { "IFCPROJECTLIBRARY", []()->BuildingEntity* { return new IfcProjectLibrary(); } },
  { "IFCPROJECTORDER", []()->BuildingEntity* { return new IfcProjectOrder(); } },
  { "IFCPROJECTEDCRS", []()->BuildingEntity* { return new IfcProjectedCRS(); } },
  { "IFCPROJECTIONELEMENT", []()->BuildingEntity* { return new IfcProjectionElement(); } },
  { "IFCPROPERTY", []()->BuildingEntity* { return new IfcProperty(); } },
  { "IFCPROPERTYABSTRACTION", []()->BuildingEntity* { return new IfcPropertyAbstraction(); } },
  { "IFCPROPERTYBOUNDEDVALUE", []()->BuildingEntity* { return new IfcPropertyBoundedValue(); } },
  { "IFCPROPERTYDEFINITION", []()->BuildingEntity* { return new IfcPropertyDefinition(); } },
  { "IFCPROPERTYDEPENDENCYRELATIONSHIP", []()->BuildingEntity* { return new IfcPropertyDependencyRelationship(); } },
  { "IFCPROPERTYENUMERATEDVALUE", []()->BuildingEntity* { return new IfcPropertyEnumeratedValue(); } },
  { "IFCPROPERTYENUMERATION", []()->BuildingEntity* { return new IfcPropertyEnumeration(); } },
  { "IFCPROPERTYLISTVALUE", []()->BuildingEntity* { return new IfcPropertyListValue(); } },
  { "IFCPROPERTYREFERENCEVALUE", []()->BuildingEntity* { return new IfcPropertyReferenceValue(); } },
  { "IFCPROPERTYSET", []()->BuildingEntity* { return new IfcPropertySet(); } },
  { "IFCPROPERTYSETDEFINITION", []()->BuildingEntity* { return new IfcPropertySetDefinition(); } },
  { "IFCPROPERTYSETTEMPLATE", []()->BuildingEntity* { return new IfcPropertySetTemplate(); } },
  { "IFCPROPERTYSINGLEVALUE", []()->BuildingEntity* { return new IfcPropertySingleValue(); } },
  { "IFCPROPERTYTABLEVALUE", []()->BuildingEntity* { return new IfcPropertyTableValue(); } },
  { "IFCPROPERTYTEMPLATE", []()->BuildingEntity* { return new IfcPropertyTemplate(); } },
  { "IFCPROPERTYTEMPLATEDEFINITION", []()->BuildingEntity* { return new IfcPropertyTemplateDefinition(); } },
  { "IFCPROTECTIVEDEVICE", []()->BuildingEntity* { return new IfcProtectiveDevice(); } },
  { "IFCPROTECTIVEDEVICETRIPPINGUNIT", []()->BuildingEntity* { return new IfcProtectiveDeviceTrippingUnit(); } },
  { "IFCPROTECTIVEDEVICETRIPPINGUNITTYPE", []()->BuildingEntity* { return new IfcProtectiveDeviceTrippingUnitType(); } },
  { "IFCPROTECTIVEDEVICETYPE", []()->BuildingEntity* { return new IfcProtectiveDeviceType(); } },
  { "IFCPROXY", []()->BuildingEntity* { return new IfcProxy(); } },
  { "IFCPUMP", []()->BuildingEntity* { return new IfcPump(); } },
  { "IFCPUMPTYPE", []()->BuildingEntity* { return new IfcPumpType(); } },
  { "IFCQUANTITYAREA", []()->BuildingEntity* { return new IfcQuantityArea(); } },
  { "IFCQUANTITYCOUNT", []()->BuildingEntity* { return new IfcQuantityCount(); } },
  { "IFCQUANTITYLENGTH", []()->BuildingEntity* { return new IfcQuantityLength(); } },
  { "IFCQUANTITYSET", []()->BuildingEntity* { return new IfcQuantitySet(); } },
  { "IFCQUANTITYTIME", []()->BuildingEntity* { return new IfcQuantityTime(); } },
  { "IFCQUANTITYVOLUME", []()->BuildingEntity* { return new IfcQuantityVolume(); } },
  { "IFCQUANTITYWEIGHT", []()->BuildingEntity* { return new IfcQuantityWeight(); } },
  { "IFCRAILING", []()->BuildingEntity* { return new IfcRailing(); } },
  { "IFCRAILINGTYPE", []()->BuildingEntity* { return new IfcRailingType(); } },
  { "IFCRAMP", []()->BuildingEntity* { return new IfcRamp(); } },
  { "IFCRAMPFLIGHT", []()->BuildingEntity* { return new IfcRampFlight(); } },
  { "IFCRAMPFLIGHTTYPE", []()->BuildingEntity* { return new IfcRampFlightType(); } },
  { "IFCRAMPTYPE", []()->BuildingEntity* { return new IfcRampType(); } },
  { "IFCRATIONALBSPLINECURVEWITHKNOTS", []()->BuildingEntity* { return new IfcRationalBSplineCurveWithKnots(); } },
  { "IFCRATIONALBSPLINESURFACEWITHKNOTS", []()->BuildingEntity* { return new IfcRationalBSplineSurfaceWithKnots(); } },
  { "IFCRECTANGLEHOLLOWPROFILEDEF", []()->BuildingEntity* { return new IfcRectangleHollowProfileDef(); } },
  { "IFCRECTANGLEPROFILEDEF", []()->BuildingEntity* { return new IfcRectangleProfileDef(); } },
  { "IFCRECTANGULARPYRAMID", []()->BuildingEntity* { return new IfcRectangularPyramid(); } },
  { "IFCRECTANGULARTRIMMEDSURFACE", []()->BuildingEntity* { return new IfcRectangularTrimmedSurface(); } },
  { "IFCRECURRENCEPATTERN", []()->BuildingEntity* { return new IfcRecurrencePattern(); } },
  { "IFCREFERENCE", []()->BuildingEntity* { return new IfcReference(); } },
  { "IFCREFERENT", []()->BuildingEntity* { return new IfcReferent(); } },
  { "IFCREGULARTIMESERIES", []()->BuildingEntity* { return new IfcRegularTimeSeries(); } },
  { "IFCREINFORCEMENTBARPROPERTIES", []()->BuildingEntity* { return new IfcReinforcementBarProperties(); } },
  { "IFCREINFORCEMENTDEFINITIONPROPERTIES", []()->BuildingEntity* { return new IfcReinforcementDefinitionProperties(); } },
  { "IFCREINFORCINGBAR", []()->BuildingEntity* { return new IfcReinforcingBar(); } },
  { "IFCREINFORCINGBARTYPE", []()->BuildingEntity* { return new IfcReinforcingBarType(); } },
  { "IFCREINFORCINGELEMENT", []()->BuildingEntity* { return new IfcReinforcingElement(); } },
  { "IFCREINFORCINGELEMENTTYPE", []()->BuildingEntity* { return new IfcReinforcingElementType(); } },
  { "IFCREINFORCINGMESH", []()->BuildingEntity* { return new IfcReinforcingMesh(); } },
  { "IFCREINFORCINGMESHTYPE", []()->BuildingEntity* { return new IfcReinforcingMeshType(); } },
  { "IFCRELAGGREGATES", []()->BuildingEntity* { return new IfcRelAggregates(); } },
  { "IFCRELASSIGNS", []()->BuildingEntity* { return new IfcRelAssigns(); } },
  { "IFCRELASSIGNSTOACTOR", []()->BuildingEntity* { return new IfcRelAssignsToActor(); } },
  { "IFCRELASSIGNSTOCONTROL", []()->BuildingEntity* { return new IfcRelAssignsToControl(); } },
  { "IFCRELASSIGNSTOGROUP", []()->BuildingEntity* { return new IfcRelAssignsToGroup(); } },
  { "IFCRELASSIGNSTOGROUPBYFACTOR", []()->BuildingEntity* { return new IfcRelAssignsToGroupByFactor(); } },
  { "IFCRELASSIGNSTOPROCESS", []()->BuildingEntity* { return new IfcRelAssignsToProcess(); } },
  { "IFCRELASSIGNSTOPRODUCT", []()->BuildingEntity* { return new IfcRelAssignsToProduct(); } },
  { "IFCRELASSIGNSTORESOURCE", []()->BuildingEntity* { return new IfcRelAssignsToResource(); } },
  { "IFCRELASSOCIATES", []()->BuildingEntity* { return new IfcRelAssociates(); } },
  { "IFCRELASSOCIATESAPPROVAL", []()->BuildingEntity* { return new IfcRelAssociatesApproval(); } },
  { "IFCRELASSOCIATESCLASSIFICATION", []()->BuildingEntity* { return new IfcRelAssociatesClassification(); } },
  { "IFCRELASSOCIATESCONSTRAINT", []()->BuildingEntity* { return new IfcRelAssociatesConstraint(); } },
  { "IFCRELASSOCIATESDOCUMENT", []()->BuildingEntity* { return new IfcRelAssociatesDocument(); } },
  { "IFCRELASSOCIATESLIBRARY", []()->BuildingEntity* { return new IfcRelAssociatesLibrary(); } },
  { "IFCRELASSOCIATESMATERIAL", []()->BuildingEntity* { return new IfcRelAssociatesMaterial(); } },
  { "IFCRELCONNECTS", []()->BuildingEntity* { return new IfcRelConnects(); } },
  { "IFCRELCONNECTSELEMENTS", []()->BuildingEntity* { return new IfcRelConnectsElements(); } },
  { "IFCRELCONNECTSPATHELEMENTS", []()->BuildingEntity* { return new IfcRelConnectsPathElements(); } },
  { "IFCRELCONNECTSPORTTOELEMENT", []()->BuildingEntity* { return new IfcRelConnectsPortToElement(); } },
  { "IFCRELCONNECTSPORTS", []()->BuildingEntity* { return new IfcRelConnectsPorts(); } },
  { "IFCRELCONNECTSSTRUCTURALACTIVITY", []()->BuildingEntity* { return new IfcRelConnectsStructuralActivity(); } },
  { "IFCRELCONNECTSSTRUCTURALMEMBER", []()->BuildingEntity* { return new IfcRelConnectsStructuralMember(); } },
  { "IFCRELCONNECTSWITHECCENTRICITY", []()->BuildingEntity* { return new IfcRelConnectsWithEccentricity(); } },
  { "IFCRELCONNECTSWITHREALIZINGELEMENTS", []()->BuildingEntity* { return new IfcRelConnectsWithRealizingElements(); } },
  { "IFCRELCONTAINEDINSPATIALSTRUCTURE", []()->BuildingEntity* { return new IfcRelContainedInSpatialStructure(); } },
  { "IFCRELCOVERSBLDGELEMENTS", []()->BuildingEntity* { return new IfcRelCoversBldgElements(); } },
  { "IFCRELCOVERSSPACES", []()->BuildingEntity* { return new IfcRelCoversSpaces(); } },
  { "IFCRELDECLARES", []()->BuildingEntity* { return new IfcRelDeclares(); } },
  { "IFCRELDECOMPOSES", []()->BuildingEntity* { return new IfcRelDecomposes(); } },
  { "IFCRELDEFINES", []()->BuildingEntity* { return new IfcRelDefines(); } },
  { "IFCRELDEFINESBYOBJECT", []()->BuildingEntity* { return new IfcRelDefinesByObject(); } },
  { "IFCRELDEFINESBYPROPERTIES", []()->BuildingEntity* { return new IfcRelDefinesByProperties(); } },
  { "IFCRELDEFINESBYTEMPLATE", []()->BuildingEntity* { return new IfcRelDefinesByTemplate(); } },
  { "IFCRELDEFINESBYTYPE", []()->BuildingEntity* { return new IfcRelDefinesByType(); } },
  { "IFCRELFILLSELEMENT", []()->BuildingEntity* { return new IfcRelFillsElement(); } },
  { "IFCRELFLOWCONTROLELEMENTS", []()->BuildingEntity* { return new IfcRelFlowControlElements(); } },
  { "IFCRELINTERFERESELEMENTS", []()->BuildingEntity* { return new IfcRelInterferesElements(); } },
  { "IFCRELNESTS", []()->BuildingEntity* { return new IfcRelNests(); } },
  { "IFCRELPROJECTSELEMENT", []()->BuildingEntity* { return new IfcRelProjectsElement(); } },
  { "IFCRELREFERENCEDINSPATIALSTRUCTURE", []()->BuildingEntity* { return new IfcRelReferencedInSpatialStructure(); } },
  { "IFCRELSEQUENCE", []()->BuildingEntity* { return new IfcRelSequence(); } },
  { "IFCRELSERVICESBUILDINGS", []()->BuildingEntity* { return new IfcRelServicesBuildings(); } },
  { "IFCRELSPACEBOUNDARY", []()->BuildingEntity* { return new IfcRelSpaceBoundary(); } },
  { "IFCRELSPACEBOUNDARY1STLEVEL", []()->BuildingEntity* { return new IfcRelSpaceBoundary1stLevel(); } },
  { "IFCRELSPACEBOUNDARY2NDLEVEL", []()->BuildingEntity* { return new IfcRelSpaceBoundary2ndLevel(); } },
  { "IFCRELVOIDSELEMENT", []()->BuildingEntity* { return new IfcRelVoidsElement(); } },
  { "IFCRELATIONSHIP", []()->BuildingEntity* { return new IfcRelationship(); } },
  { "IFCREPARAMETRISEDCOMPOSITECURVESEGMENT", []()->BuildingEntity* { return new IfcReparametrisedCompositeCurveSegment(); } },
  { "IFCREPRESENTATION", []()->BuildingEntity* { return new IfcRepresentation(); } },
  { "IFCREPRESENTATIONCONTEXT", []()->BuildingEntity* { return new IfcRepresentationContext(); } },
  { "IFCREPRESENTATIONITEM", []()->BuildingEntity* { return new IfcRepresentationItem(); } },
  { "IFCREPRESENTATIONMAP", []()->BuildingEntity* { return new IfcRepresentationMap(); } },
  { "IFCRESOURCE", []()->BuildingEntity* { return new IfcResource(); } },
  { "IFCRESOURCEAPPROVALRELATIONSHIP", []()->BuildingEntity* { return new IfcResourceApprovalRelationship(); } },
  { "IFCRESOURCECONSTRAINTRELATIONSHIP", []()->BuildingEntity* { return new IfcResourceConstraintRelationship(); } },
  { "IFCRESOURCELEVELRELATIONSHIP", []()->BuildingEntity* { return new IfcResourceLevelRelationship(); } },
  { "IFCRESOURCETIME", []()->BuildingEntity* { return new IfcResourceTime(); } },
  { "IFCREVOLVEDAREASOLID", []()->BuildingEntity* { return new IfcRevolvedAreaSolid(); } },
  { "IFCREVOLVEDAREASOLIDTAPERED", []()->BuildingEntity* { return new IfcRevolvedAreaSolidTapered(); } },
  { "IFCRIGHTCIRCULARCONE", []()->BuildingEntity* { return new IfcRightCircularCone(); } },
  { "IFCRIGHTCIRCULARCYLINDER", []()->BuildingEntity* { return new IfcRightCircularCylinder(); } },
  { "IFCROOF", []()->BuildingEntity* { return new IfcRoof(); } },
  { "IFCROOFTYPE", []()->BuildingEntity* { return new IfcRoofType(); } },
  { "IFCROOT", []()->BuildingEntity* { return new IfcRoot(); } },
  { "IFCROUNDEDRECTANGLEPROFILEDEF", []()->BuildingEntity* { return new IfcRoundedRectangleProfileDef(); } },
  { "IFCSIUNIT", []()->BuildingEntity* { return new IfcSIUnit(); } },
  { "IFCSANITARYTERMINAL", []()->BuildingEntity* { return new IfcSanitaryTerminal(); } },
  { "IFCSANITARYTERMINALTYPE", []()->BuildingEntity* { return new IfcSanitaryTerminalType(); } },
  { "IFCSCHEDULINGTIME", []()->BuildingEntity* { return new IfcSchedulingTime(); } },
  { "IFCSEAMCURVE", []()->BuildingEntity* { return new IfcSeamCurve(); } },
  { "IFCSECTIONPROPERTIES", []()->BuildingEntity* { return new IfcSectionProperties(); } },
  { "IFCSECTIONREINFORCEMENTPROPERTIES", []()->BuildingEntity* { return new IfcSectionReinforcementProperties(); } },
  { "IFCSECTIONEDSOLID", []()->BuildingEntity* { return new IfcSectionedSolid(); } },
  { "IFCSECTIONEDSOLIDHORIZONTAL", []()->BuildingEntity* { return new IfcSectionedSolidHorizontal(); } },
  { "IFCSECTIONEDSPINE", []()->BuildingEntity* { return new IfcSectionedSpine(); } },
  { "IFCSENSOR", []()->BuildingEntity* { return new IfcSensor(); } },
  { "IFCSENSORTYPE", []()->BuildingEntity* { return new IfcSensorType(); } },
  { "IFCSHADINGDEVICE", []()->BuildingEntity* { return new IfcShadingDevice(); } },
  { "IFCSHADINGDEVICETYPE", []()->BuildingEntity* { return new IfcShadingDeviceType(); } },
  { "IFCSHAPEASPECT", []()->BuildingEntity* { return new IfcShapeAspect(); } },
  { "IFCSHAPEMODEL", []()->BuildingEntity* { return new IfcShapeModel(); } },
  { "IFCSHAPEREPRESENTATION", []()->BuildingEntity* { return new IfcShapeRepresentation(); } },
  { "IFCSHELLBASEDSURFACEMODEL", []()->BuildingEntity* { return new IfcShellBasedSurfaceModel(); } },
  { "IFCSIMPLEPROPERTY", []()->BuildingEntity* { return new IfcSimpleProperty(); } },
  { "IFCSIMPLEPROPERTYTEMPLATE", []()->BuildingEntity* { return new IfcSimplePropertyTemplate(); } },
  { "IFCSITE", []()->BuildingEntity* { return new IfcSite(); } },
  { "IFCSLAB", []()->BuildingEntity* { return new IfcSlab(); } },
  { "IFCSLABELEMENTEDCASE", []()->BuildingEntity* { return new IfcSlabElementedCase(); } },
  { "IFCSLABSTANDARDCASE", []()->BuildingEntity* { return new IfcSlabStandardCase(); } },
  { "IFCSLABTYPE", []()->BuildingEntity* { return new IfcSlabType(); } },
  { "IFCSLIPPAGECONNECTIONCONDITION", []()->BuildingEntity* { return new IfcSlippageConnectionCondition(); } },
  { "IFCSOLARDEVICE", []()->BuildingEntity* { return new IfcSolarDevice(); } },
  { "IFCSOLARDEVICETYPE", []()->BuildingEntity* { return new IfcSolarDeviceType(); } },
  { "IFCSOLIDMODEL", []()->BuildingEntity* { return new IfcSolidModel(); } },
  { "IFCSPACE", []()->BuildingEntity* { return new IfcSpace(); } },
  { "IFCSPACEHEATER", []()->BuildingEntity* { return new IfcSpaceHeater(); } },
  { "IFCSPACEHEATERTYPE", []()->BuildingEntity* { return new IfcSpaceHeaterType(); } },
  { "IFCSPACETYPE", []()->BuildingEntity* { return new IfcSpaceType(); } },
  { "IFCSPATIALELEMENT", []()->BuildingEntity* { return new IfcSpatialElement(); } },
  { "IFCSPATIALELEMENTTYPE", []()->BuildingEntity* { return new IfcSpatialElementType(); } },
  { "IFCSPATIALSTRUCTUREELEMENT", []()->BuildingEntity* { return new IfcSpatialStructureElement(); } },
  { "IFCSPATIALSTRUCTUREELEMENTTYPE", []()->BuildingEntity* { return new IfcSpatialStructureElementType(); } },
  { "IFCSPATIALZONE", []()->BuildingEntity* { return new IfcSpatialZone(); } },
  { "IFCSPATIALZONETYPE", []()->BuildingEntity* { return new IfcSpatialZoneType(); } },
  { "IFCSPHERE", []()->BuildingEntity* { return new IfcSphere(); } },
  { "IFCSPHERICALSURFACE", []()->BuildingEntity* { return new IfcSphericalSurface(); } },
  { "IFCSTACKTERMINAL", []()->BuildingEntity* { return new IfcStackTerminal(); } },
  { "IFCSTACKTERMINALTYPE", []()->BuildingEntity* { return new IfcStackTerminalType(); } },
  { "IFCSTAIR", []()->BuildingEntity* { return new IfcStair(); } },
  { "IFCSTAIRFLIGHT", []()->BuildingEntity* { return new IfcStairFlight(); } },
  { "IFCSTAIRFLIGHTTYPE", []()->BuildingEntity* { return new IfcStairFlightType(); } },
  { "IFCSTAIRTYPE", []()->BuildingEntity* { return new IfcStairType(); } },
  { "IFCSTRUCTURALACTION", []()->BuildingEntity* { return new IfcStructuralAction(); } },
  { "IFCSTRUCTURALACTIVITY", []()->BuildingEntity* { return new IfcStructuralActivity(); } },
  { "IFCSTRUCTURALANALYSISMODEL", []()->BuildingEntity* { return new IfcStructuralAnalysisModel(); } },
  { "IFCSTRUCTURALCONNECTION", []()->BuildingEntity* { return new IfcStructuralConnection(); } },
  { "IFCSTRUCTURALCONNECTIONCONDITION", []()->BuildingEntity* { return new IfcStructuralConnectionCondition(); } },
  { "IFCSTRUCTURALCURVEACTION", []()->BuildingEntity* { return new IfcStructuralCurveAction(); } },
  { "IFCSTRUCTURALCURVECONNECTION", []()->BuildingEntity* { return new IfcStructuralCurveConnection(); } },
  { "IFCSTRUCTURALCURVEMEMBER", []()->BuildingEntity* { return new IfcStructuralCurveMember(); } },
  { "IFCSTRUCTURALCURVEMEMBERVARYING", []()->BuildingEntity* { return new IfcStructuralCurveMemberVarying(); } },
  { "IFCSTRUCTURALCURVEREACTION", []()->BuildingEntity* { return new IfcStructuralCurveReaction(); } },
  { "IFCSTRUCTURALITEM", []()->BuildingEntity* { return new IfcStructuralItem(); } },
  { "IFCSTRUCTURALLINEARACTION", []()->BuildingEntity* { return new IfcStructuralLinearAction(); } },
  { "IFCSTRUCTURALLOAD", []()->BuildingEntity* { return new IfcStructuralLoad(); } },
  { "IFCSTRUCTURALLOADCASE", []()->BuildingEntity* { return new IfcStructuralLoadCase(); } },
  { "IFCSTRUCTURALLOADCONFIGURATION", []()->BuildingEntity* { return new IfcStructuralLoadConfiguration(); } },
  { "IFCSTRUCTURALLOADGROUP", []()->BuildingEntity* { return new IfcStructuralLoadGroup(); } },
  { "IFCSTRUCTURALLOADLINEARFORCE", []()->BuildingEntity* { return new IfcStructuralLoadLinearForce(); } },
  { "IFCSTRUCTURALLOADORRESULT", []()->BuildingEntity* { return new IfcStructuralLoadOrResult(); } },
  { "IFCSTRUCTURALLOADPLANARFORCE", []()->BuildingEntity* { return new IfcStructuralLoadPlanarForce(); } },
  { "IFCSTRUCTURALLOADSINGLEDISPLACEMENT", []()->BuildingEntity* { return new IfcStructuralLoadSingleDisplacement(); } },
  { "IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION", []()->BuildingEntity* { return new IfcStructuralLoadSingleDisplacementDistortion(); } },
  { "IFCSTRUCTURALLOADSINGLEFORCE", []()->BuildingEntity* { return new IfcStructuralLoadSingleForce(); } },
  { "IFCSTRUCTURALLOADSINGLEFORCEWARPING", []()->BuildingEntity* { return new IfcStructuralLoadSingleForceWarping(); } },
  { "IFCSTRUCTURALLOADSTATIC", []()->BuildingEntity* { return new IfcStructuralLoadStatic(); } },
  { "IFCSTRUCTURALLOADTEMPERATURE", []()->BuildingEntity* { return new IfcStructuralLoadTemperature(); } },
  { "IFCSTRUCTURALMEMBER", []()->BuildingEntity* { return new IfcStructuralMember(); } },
  { "IFCSTRUCTURALPLANARACTION", []()->BuildingEntity* { return new IfcStructuralPlanarAction(); } },
  { "IFCSTRUCTURALPOINTACTION", []()->BuildingEntity* { return new IfcStructuralPointAction(); } },
  { "IFCSTRUCTURALPOINTCONNECTION", []()->BuildingEntity* { return new IfcStructuralPointConnection(); } },
  { "IFCSTRUCTURALPOINTREACTION", []()->BuildingEntity* { return new IfcStructuralPointReaction(); } },
  { "IFCSTRUCTURALREACTION", []()->BuildingEntity* { return new IfcStructuralReaction(); } },
  { "IFCSTRUCTURALRESULTGROUP", []()->BuildingEntity* { return new IfcStructuralResultGroup(); } },
  { "IFCSTRUCTURALSURFACEACTION", []()->BuildingEntity* { return new IfcStructuralSurfaceAction(); } },
  { "IFCSTRUCTURALSURFACECONNECTION", []()->BuildingEntity* { return new IfcStructuralSurfaceConnection(); } },
  { "IFCSTRUCTURALSURFACEMEMBER", []()->BuildingEntity* { return new IfcStructuralSurfaceMember(); } },
  { "IFCSTRUCTURALSURFACEMEMBERVARYING", []()->BuildingEntity* { return new IfcStructuralSurfaceMemberVarying(); } },
  { "IFCSTRUCTURALSURFACEREACTION", []()->BuildingEntity* { return new IfcStructuralSurfaceReaction(); } },
  { "IFCSTYLEMODEL", []()->BuildingEntity* { return new IfcStyleModel(); } },
  { "IFCSTYLEDITEM", []()->BuildingEntity* { return new IfcStyledItem(); } },
  { "IFCSTYLEDREPRESENTATION", []()->BuildingEntity* { return new IfcStyledRepresentation(); } },
  { "IFCSUBCONTRACTRESOURCE", []()->BuildingEntity* { return new IfcSubContractResource(); } },
  { "IFCSUBCONTRACTRESOURCETYPE", []()->BuildingEntity* { return new IfcSubContractResourceType(); } },
  { "IFCSUBEDGE", []()->BuildingEntity* { return new IfcSubedge(); } },
  { "IFCSURFACE", []()->BuildingEntity* { return new IfcSurface(); } },
  { "IFCSURFACECURVE", []()->BuildingEntity* { return new IfcSurfaceCurve(); } },
  { "IFCSURFACECURVESWEPTAREASOLID", []()->BuildingEntity* { return new IfcSurfaceCurveSweptAreaSolid(); } },
  { "IFCSURFACEFEATURE", []()->BuildingEntity* { return new IfcSurfaceFeature(); } },
  { "IFCSURFACEOFLINEAREXTRUSION", []()->BuildingEntity* { return new IfcSurfaceOfLinearExtrusion(); } },
  { "IFCSURFACEOFREVOLUTION", []()->BuildingEntity* { return new IfcSurfaceOfRevolution(); } },
  { "IFCSURFACEREINFORCEMENTAREA", []()->BuildingEntity* { return new IfcSurfaceReinforcementArea(); } },
  { "IFCSURFACESTYLE", []()->BuildingEntity* { return new IfcSurfaceStyle(); } },
  { "IFCSURFACESTYLELIGHTING", []()->BuildingEntity* { return new IfcSurfaceStyleLighting(); } },
  { "IFCSURFACESTYLEREFRACTION", []()->BuildingEntity* { return new IfcSurfaceStyleRefraction(); } },
  { "IFCSURFACESTYLERENDERING", []()->BuildingEntity* { return new IfcSurfaceStyleRendering(); } },
  { "IFCSURFACESTYLESHADING", []()->BuildingEntity* { return new IfcSurfaceStyleShading(); } },
  { "IFCSURFACESTYLEWITHTEXTURES", []()->BuildingEntity* { return new IfcSurfaceStyleWithTextures(); } },
  { "IFCSURFACETEXTURE", []()->BuildingEntity* { return new IfcSurfaceTexture(); } },
  { "IFCSWEPTAREASOLID", []()->BuildingEntity* { return new IfcSweptAreaSolid(); } },
  { "IFCSWEPTDISKSOLID", []()->BuildingEntity* { return new IfcSweptDiskSolid(); } },
  { "IFCSWEPTDISKSOLIDPOLYGONAL", []()->BuildingEntity* { return new IfcSweptDiskSolidPolygonal(); } },
  { "IFCSWEPTSURFACE", []()->BuildingEntity* { return new IfcSweptSurface(); } },
  { "IFCSWITCHINGDEVICE", []()->BuildingEntity* { return new IfcSwitchingDevice(); } },
  { "IFCSWITCHINGDEVICETYPE", []()->BuildingEntity* { return new IfcSwitchingDeviceType(); } },
  { "IFCSYSTEM", []()->BuildingEntity* { return new IfcSystem(); } },
  { "IFCSYSTEMFURNITUREELEMENT", []()->BuildingEntity* { return new IfcSystemFurnitureElement(); } },
  { "IFCSYSTEMFURNITUREELEMENTTYPE", []()->BuildingEntity* { return new IfcSystemFurnitureElementType(); } },
  { "IFCTSHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcTShapeProfileDef(); } },
  { "IFCTABLE", []()->BuildingEntity* { return new IfcTable(); } },
  { "IFCTABLECOLUMN", []()->BuildingEntity* { return new IfcTableColumn(); } },
  { "IFCTABLEROW", []()->BuildingEntity* { return new IfcTableRow(); } },
  { "IFCTANK", []()->BuildingEntity* { return new IfcTank(); } },
  { "IFCTANKTYPE", []()->BuildingEntity* { return new IfcTankType(); } },
  { "IFCTASK", []()->BuildingEntity* { return new IfcTask(); } },
  { "IFCTASKTIME", []()->BuildingEntity* { return new IfcTaskTime(); } },
  { "IFCTASKTIMERECURRING", []()->BuildingEntity* { return new IfcTaskTimeRecurring(); } },
  { "IFCTASKTYPE", []()->BuildingEntity* { return new IfcTaskType(); } },
  { "IFCTELECOMADDRESS", []()->BuildingEntity* { return new IfcTelecomAddress(); } },
  { "IFCTENDON", []()->BuildingEntity* { return new IfcTendon(); } },
  { "IFCTENDONANCHOR", []()->BuildingEntity* { return new IfcTendonAnchor(); } },
  { "IFCTENDONANCHORTYPE", []()->BuildingEntity* { return new IfcTendonAnchorType(); } },
  { "IFCTENDONTYPE", []()->BuildingEntity* { return new IfcTendonType(); } },
  { "IFCTESSELLATEDFACESET", []()->BuildingEntity* { return new IfcTessellatedFaceSet(); } },
  { "IFCTESSELLATEDITEM", []()->BuildingEntity* { return new IfcTessellatedItem(); } },
  { "IFCTEXTLITERAL", []()->BuildingEntity* { return new IfcTextLiteral(); } },
  { "IFCTEXTLITERALWITHEXTENT", []()->BuildingEntity* { return new IfcTextLiteralWithExtent(); } },
  { "IFCTEXTSTYLE", []()->BuildingEntity* { return new IfcTextStyle(); } },
  { "IFCTEXTSTYLEFONTMODEL", []()->BuildingEntity* { return new IfcTextStyleFontModel(); } },
  { "IFCTEXTSTYLEFORDEFINEDFONT", []()->BuildingEntity* { return new IfcTextStyleForDefinedFont(); } },
  { "IFCTEXTSTYLETEXTMODEL", []()->BuildingEntity* { return new IfcTextStyleTextModel(); } },
  { "IFCTEXTURECOORDINATE", []()->BuildingEntity* { return new IfcTextureCoordinate(); } },
  { "IFCTEXTURECOORDINATEGENERATOR", []()->BuildingEntity* { return new IfcTextureCoordinateGenerator(); } },
  { "IFCTEXTUREMAP", []()->BuildingEntity* { return new IfcTextureMap(); } },
  { "IFCTEXTUREVERTEX", []()->BuildingEntity* { return new IfcTextureVertex(); } },
  { "IFCTEXTUREVERTEXLIST", []()->BuildingEntity* { return new IfcTextureVertexList(); } },
  { "IFCTIMEPERIOD", []()->BuildingEntity* { return new IfcTimePeriod(); } },
  { "IFCTIMESERIES", []()->BuildingEntity* { return new IfcTimeSeries(); } },
  { "IFCTIMESERIESVALUE", []()->BuildingEntity* { return new IfcTimeSeriesValue(); } },
  { "IFCTOPOLOGICALREPRESENTATIONITEM", []()->BuildingEntity* { return new IfcTopologicalRepresentationItem(); } },
  { "IFCTOPOLOGYREPRESENTATION", []()->BuildingEntity* { return new IfcTopologyRepresentation(); } },
  { "IFCTOROIDALSURFACE", []()->BuildingEntity* { return new IfcToroidalSurface(); } },
  { "IFCTRANSFORMER", []()->BuildingEntity* { return new IfcTransformer(); } },
  { "IFCTRANSFORMERTYPE", []()->BuildingEntity* { return new IfcTransformerType(); } },
  { "IFCTRANSITIONCURVESEGMENT2D", []()->BuildingEntity* { return new IfcTransitionCurveSegment2D(); } },
  { "IFCTRANSPORTELEMENT", []()->BuildingEntity* { return new IfcTransportElement(); } },
  { "IFCTRANSPORTELEMENTTYPE", []()->BuildingEntity* { return new IfcTransportElementType(); } },
  { "IFCTRAPEZIUMPROFILEDEF", []()->BuildingEntity* { return new IfcTrapeziumProfileDef(); } },
  { "IFCTRIANGULATEDFACESET", []()->BuildingEntity* { return new IfcTriangulatedFaceSet(); } },
  { "IFCTRIANGULATEDIRREGULARNETWORK", []()->BuildingEntity* { return new IfcTriangulatedIrregularNetwork(); } },
  { "IFCTRIMMEDCURVE", []()->BuildingEntity* { return new IfcTrimmedCurve(); } },
  { "IFCTUBEBUNDLE", []()->BuildingEntity* { return new IfcTubeBundle(); } },
  { "IFCTUBEBUNDLETYPE", []()->BuildingEntity* { return new IfcTubeBundleType(); } },
  { "IFCTYPEOBJECT", []()->BuildingEntity* { return new IfcTypeObject(); } },
  { "IFCTYPEPROCESS", []()->BuildingEntity* { return new IfcTypeProcess(); } },
  { "IFCTYPEPRODUCT", []()->BuildingEntity* { return new IfcTypeProduct(); } },
  { "IFCTYPERESOURCE", []()->BuildingEntity* { return new IfcTypeResource(); } },
  { "IFCUSHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcUShapeProfileDef(); } },
  { "IFCUNITASSIGNMENT", []()->BuildingEntity* { return new IfcUnitAssignment(); } },
  { "IFCUNITARYCONTROLELEMENT", []()->BuildingEntity* { return new IfcUnitaryControlElement(); } },
  { "IFCUNITARYCONTROLELEMENTTYPE", []()->BuildingEntity* { return new IfcUnitaryControlElementType(); } },
  { "IFCUNITARYEQUIPMENT", []()->BuildingEntity* { return new IfcUnitaryEquipment(); } },
  { "IFCUNITARYEQUIPMENTTYPE", []()->BuildingEntity* { return new IfcUnitaryEquipmentType(); } },
  { "IFCVALVE", []()->BuildingEntity* { return new IfcValve(); } },
  { "IFCVALVETYPE", []()->BuildingEntity* { return new IfcValveType(); } },
  { "IFCVECTOR", []()->BuildingEntity* { return new IfcVector(); } },
  { "IFCVERTEX", []()->BuildingEntity* { return new IfcVertex(); } },
  { "IFCVERTEXLOOP", []()->BuildingEntity* { return new IfcVertexLoop(); } },
  { "IFCVERTEXPOINT", []()->BuildingEntity* { return new IfcVertexPoint(); } },
  { "IFCVIBRATIONISOLATOR", []()->BuildingEntity* { return new IfcVibrationIsolator(); } },
  { "IFCVIBRATIONISOLATORTYPE", []()->BuildingEntity* { return new IfcVibrationIsolatorType(); } },
  { "IFCVIRTUALELEMENT", []()->BuildingEntity* { return new IfcVirtualElement(); } },
  { "IFCVIRTUALGRIDINTERSECTION", []()->BuildingEntity* { return new IfcVirtualGridIntersection(); } },
  { "IFCVOIDINGFEATURE", []()->BuildingEntity* { return new IfcVoidingFeature(); } },
  { "IFCWALL", []()->BuildingEntity* { return new IfcWall(); } },
  { "IFCWALLELEMENTEDCASE", []()->BuildingEntity* { return new IfcWallElementedCase(); } },
  { "IFCWALLSTANDARDCASE", []()->BuildingEntity* { return new IfcWallStandardCase(); } },
  { "IFCWALLTYPE", []()->BuildingEntity* { return new IfcWallType(); } },
  { "IFCWASTETERMINAL", []()->BuildingEntity* { return new IfcWasteTerminal(); } },
  { "IFCWASTETERMINALTYPE", []()->BuildingEntity* { return new IfcWasteTerminalType(); } },
  { "IFCWINDOW", []()->BuildingEntity* { return new IfcWindow(); } },
  { "IFCWINDOWLININGPROPERTIES", []()->BuildingEntity* { return new IfcWindowLiningProperties(); } },
  { "IFCWINDOWPANELPROPERTIES", []()->BuildingEntity* { return new IfcWindowPanelProperties(); } },
  { "IFCWINDOWSTANDARDCASE", []()->BuildingEntity* { return new IfcWindowStandardCase(); } },
  { "IFCWINDOWSTYLE", []()->BuildingEntity* { return new IfcWindowStyle(); } },
  { "IFCWINDOWTYPE", []()->BuildingEntity* { return new IfcWindowType(); } },
  { "IFCWORKCALENDAR", []()->BuildingEntity* { return new IfcWorkCalendar(); } },
  { "IFCWORKCONTROL", []()->BuildingEntity* { return new IfcWorkControl(); } },
  { "IFCWORKPLAN", []()->BuildingEntity* { return new IfcWorkPlan(); } },
  { "IFCWORKSCHEDULE", []()->BuildingEntity* { return new IfcWorkSchedule(); } },
  { "IFCWORKTIME", []()->BuildingEntity* { return new IfcWorkTime(); } },
  { "IFCZSHAPEPROFILEDEF", []()->BuildingEntity* { return new IfcZShapeProfileDef(); } },
  	{ "IFCZONE", []()->BuildingEntity* { return new IfcZone(); } }
  };
  
  BuildingEntity* EntityFactory::createEntityObject( const std::string& class_name_upper )
  {
  	auto it_find = entity_factory_map.find( class_name_upper );
  	if( it_find != entity_factory_map.end() )
  	{
  		return it_find->second();
  	}
  	// class_name not registered
  	return nullptr;
  }
  void EntityFactory::emptyMapOfEntities()
  {
  	entity_factory_map.clear();
  }
  