/* Code generated by IfcQuery EXPRESS generator, www.ifcquery.com */

#include <map>
#include <functional>
#include "ifcpp/model/BasicTypes.h"
#include "ifcpp/IFC4/include/IfcAbsorbedDoseMeasure.h"
#include "ifcpp/IFC4/include/IfcAccelerationMeasure.h"
#include "ifcpp/IFC4/include/IfcActionRequestTypeEnum.h"
#include "ifcpp/IFC4/include/IfcActionSourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcActionTypeEnum.h"
#include "ifcpp/IFC4/include/IfcActorSelect.h"
#include "ifcpp/IFC4/include/IfcActuatorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAddressTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAirTerminalBoxTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAirTerminalTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAirToAirHeatRecoveryTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAlarmTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAmountOfSubstanceMeasure.h"
#include "ifcpp/IFC4/include/IfcAnalysisModelTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAnalysisTheoryTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAngularVelocityMeasure.h"
#include "ifcpp/IFC4/include/IfcAppliedValueSelect.h"
#include "ifcpp/IFC4/include/IfcArcIndex.h"
#include "ifcpp/IFC4/include/IfcAreaDensityMeasure.h"
#include "ifcpp/IFC4/include/IfcAreaMeasure.h"
#include "ifcpp/IFC4/include/IfcArithmeticOperatorEnum.h"
#include "ifcpp/IFC4/include/IfcAssemblyPlaceEnum.h"
#include "ifcpp/IFC4/include/IfcAudioVisualApplianceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcAxis2Placement.h"
#include "ifcpp/IFC4/include/IfcBSplineCurveForm.h"
#include "ifcpp/IFC4/include/IfcBSplineSurfaceForm.h"
#include "ifcpp/IFC4/include/IfcBeamTypeEnum.h"
#include "ifcpp/IFC4/include/IfcBenchmarkEnum.h"
#include "ifcpp/IFC4/include/IfcBendingParameterSelect.h"
#include "ifcpp/IFC4/include/IfcBinary.h"
#include "ifcpp/IFC4/include/IfcBoilerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcBoolean.h"
#include "ifcpp/IFC4/include/IfcBooleanOperand.h"
#include "ifcpp/IFC4/include/IfcBooleanOperator.h"
#include "ifcpp/IFC4/include/IfcBoxAlignment.h"
#include "ifcpp/IFC4/include/IfcBuildingElementPartTypeEnum.h"
#include "ifcpp/IFC4/include/IfcBuildingElementProxyTypeEnum.h"
#include "ifcpp/IFC4/include/IfcBuildingSystemTypeEnum.h"
#include "ifcpp/IFC4/include/IfcBurnerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCableCarrierFittingTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCableCarrierSegmentTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCableFittingTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCableSegmentTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCardinalPointReference.h"
#include "ifcpp/IFC4/include/IfcChangeActionEnum.h"
#include "ifcpp/IFC4/include/IfcChillerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcChimneyTypeEnum.h"
#include "ifcpp/IFC4/include/IfcClassificationReferenceSelect.h"
#include "ifcpp/IFC4/include/IfcClassificationSelect.h"
#include "ifcpp/IFC4/include/IfcCoilTypeEnum.h"
#include "ifcpp/IFC4/include/IfcColour.h"
#include "ifcpp/IFC4/include/IfcColourOrFactor.h"
#include "ifcpp/IFC4/include/IfcColumnTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCommunicationsApplianceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcComplexNumber.h"
#include "ifcpp/IFC4/include/IfcComplexPropertyTemplateTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCompoundPlaneAngleMeasure.h"
#include "ifcpp/IFC4/include/IfcCompressorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCondenserTypeEnum.h"
#include "ifcpp/IFC4/include/IfcConnectionTypeEnum.h"
#include "ifcpp/IFC4/include/IfcConstraintEnum.h"
#include "ifcpp/IFC4/include/IfcConstructionEquipmentResourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcConstructionMaterialResourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcConstructionProductResourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcContextDependentMeasure.h"
#include "ifcpp/IFC4/include/IfcControllerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCooledBeamTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCoolingTowerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCoordinateReferenceSystemSelect.h"
#include "ifcpp/IFC4/include/IfcCostItemTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCostScheduleTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCountMeasure.h"
#include "ifcpp/IFC4/include/IfcCoveringTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCrewResourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCsgSelect.h"
#include "ifcpp/IFC4/include/IfcCurtainWallTypeEnum.h"
#include "ifcpp/IFC4/include/IfcCurvatureMeasure.h"
#include "ifcpp/IFC4/include/IfcCurveFontOrScaledCurveFontSelect.h"
#include "ifcpp/IFC4/include/IfcCurveInterpolationEnum.h"
#include "ifcpp/IFC4/include/IfcCurveOnSurface.h"
#include "ifcpp/IFC4/include/IfcCurveOrEdgeCurve.h"
#include "ifcpp/IFC4/include/IfcCurveStyleFontSelect.h"
#include "ifcpp/IFC4/include/IfcDamperTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDataOriginEnum.h"
#include "ifcpp/IFC4/include/IfcDate.h"
#include "ifcpp/IFC4/include/IfcDateTime.h"
#include "ifcpp/IFC4/include/IfcDayInMonthNumber.h"
#include "ifcpp/IFC4/include/IfcDayInWeekNumber.h"
#include "ifcpp/IFC4/include/IfcDefinitionSelect.h"
#include "ifcpp/IFC4/include/IfcDerivedMeasureValue.h"
#include "ifcpp/IFC4/include/IfcDerivedUnitEnum.h"
#include "ifcpp/IFC4/include/IfcDescriptiveMeasure.h"
#include "ifcpp/IFC4/include/IfcDimensionCount.h"
#include "ifcpp/IFC4/include/IfcDirectionSenseEnum.h"
#include "ifcpp/IFC4/include/IfcDiscreteAccessoryTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDistributionChamberElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDistributionPortTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDistributionSystemEnum.h"
#include "ifcpp/IFC4/include/IfcDocumentConfidentialityEnum.h"
#include "ifcpp/IFC4/include/IfcDocumentSelect.h"
#include "ifcpp/IFC4/include/IfcDocumentStatusEnum.h"
#include "ifcpp/IFC4/include/IfcDoorPanelOperationEnum.h"
#include "ifcpp/IFC4/include/IfcDoorPanelPositionEnum.h"
#include "ifcpp/IFC4/include/IfcDoorStyleConstructionEnum.h"
#include "ifcpp/IFC4/include/IfcDoorStyleOperationEnum.h"
#include "ifcpp/IFC4/include/IfcDoorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDoorTypeOperationEnum.h"
#include "ifcpp/IFC4/include/IfcDoseEquivalentMeasure.h"
#include "ifcpp/IFC4/include/IfcDuctFittingTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDuctSegmentTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDuctSilencerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcDuration.h"
#include "ifcpp/IFC4/include/IfcDynamicViscosityMeasure.h"
#include "ifcpp/IFC4/include/IfcElectricApplianceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElectricCapacitanceMeasure.h"
#include "ifcpp/IFC4/include/IfcElectricChargeMeasure.h"
#include "ifcpp/IFC4/include/IfcElectricConductanceMeasure.h"
#include "ifcpp/IFC4/include/IfcElectricCurrentMeasure.h"
#include "ifcpp/IFC4/include/IfcElectricDistributionBoardTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElectricFlowStorageDeviceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElectricGeneratorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElectricMotorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElectricResistanceMeasure.h"
#include "ifcpp/IFC4/include/IfcElectricTimeControlTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElectricVoltageMeasure.h"
#include "ifcpp/IFC4/include/IfcElementAssemblyTypeEnum.h"
#include "ifcpp/IFC4/include/IfcElementCompositionEnum.h"
#include "ifcpp/IFC4/include/IfcEnergyMeasure.h"
#include "ifcpp/IFC4/include/IfcEngineTypeEnum.h"
#include "ifcpp/IFC4/include/IfcEvaporativeCoolerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcEvaporatorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcEventTriggerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcEventTypeEnum.h"
#include "ifcpp/IFC4/include/IfcExternalSpatialElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFanTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFastenerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFillStyleSelect.h"
#include "ifcpp/IFC4/include/IfcFilterTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFireSuppressionTerminalTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFlowDirectionEnum.h"
#include "ifcpp/IFC4/include/IfcFlowInstrumentTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFlowMeterTypeEnum.h"
#include "ifcpp/IFC4/include/IfcFontStyle.h"
#include "ifcpp/IFC4/include/IfcFontVariant.h"
#include "ifcpp/IFC4/include/IfcFontWeight.h"
#include "ifcpp/IFC4/include/IfcFootingTypeEnum.h"
#include "ifcpp/IFC4/include/IfcForceMeasure.h"
#include "ifcpp/IFC4/include/IfcFrequencyMeasure.h"
#include "ifcpp/IFC4/include/IfcFurnitureTypeEnum.h"
#include "ifcpp/IFC4/include/IfcGeographicElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcGeometricProjectionEnum.h"
#include "ifcpp/IFC4/include/IfcGeometricSetSelect.h"
#include "ifcpp/IFC4/include/IfcGlobalOrLocalEnum.h"
#include "ifcpp/IFC4/include/IfcGloballyUniqueId.h"
#include "ifcpp/IFC4/include/IfcGridPlacementDirectionSelect.h"
#include "ifcpp/IFC4/include/IfcGridTypeEnum.h"
#include "ifcpp/IFC4/include/IfcHatchLineDistanceSelect.h"
#include "ifcpp/IFC4/include/IfcHeatExchangerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcHeatFluxDensityMeasure.h"
#include "ifcpp/IFC4/include/IfcHeatingValueMeasure.h"
#include "ifcpp/IFC4/include/IfcHumidifierTypeEnum.h"
#include "ifcpp/IFC4/include/IfcIdentifier.h"
#include "ifcpp/IFC4/include/IfcIlluminanceMeasure.h"
#include "ifcpp/IFC4/include/IfcInductanceMeasure.h"
#include "ifcpp/IFC4/include/IfcInteger.h"
#include "ifcpp/IFC4/include/IfcIntegerCountRateMeasure.h"
#include "ifcpp/IFC4/include/IfcInterceptorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcInternalOrExternalEnum.h"
#include "ifcpp/IFC4/include/IfcInventoryTypeEnum.h"
#include "ifcpp/IFC4/include/IfcIonConcentrationMeasure.h"
#include "ifcpp/IFC4/include/IfcIsothermalMoistureCapacityMeasure.h"
#include "ifcpp/IFC4/include/IfcJunctionBoxTypeEnum.h"
#include "ifcpp/IFC4/include/IfcKinematicViscosityMeasure.h"
#include "ifcpp/IFC4/include/IfcKnotType.h"
#include "ifcpp/IFC4/include/IfcLabel.h"
#include "ifcpp/IFC4/include/IfcLaborResourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcLampTypeEnum.h"
#include "ifcpp/IFC4/include/IfcLanguageId.h"
#include "ifcpp/IFC4/include/IfcLayerSetDirectionEnum.h"
#include "ifcpp/IFC4/include/IfcLayeredItem.h"
#include "ifcpp/IFC4/include/IfcLengthMeasure.h"
#include "ifcpp/IFC4/include/IfcLibrarySelect.h"
#include "ifcpp/IFC4/include/IfcLightDistributionCurveEnum.h"
#include "ifcpp/IFC4/include/IfcLightDistributionDataSourceSelect.h"
#include "ifcpp/IFC4/include/IfcLightEmissionSourceEnum.h"
#include "ifcpp/IFC4/include/IfcLightFixtureTypeEnum.h"
#include "ifcpp/IFC4/include/IfcLineIndex.h"
#include "ifcpp/IFC4/include/IfcLinearForceMeasure.h"
#include "ifcpp/IFC4/include/IfcLinearMomentMeasure.h"
#include "ifcpp/IFC4/include/IfcLinearStiffnessMeasure.h"
#include "ifcpp/IFC4/include/IfcLinearVelocityMeasure.h"
#include "ifcpp/IFC4/include/IfcLoadGroupTypeEnum.h"
#include "ifcpp/IFC4/include/IfcLogical.h"
#include "ifcpp/IFC4/include/IfcLogicalOperatorEnum.h"
#include "ifcpp/IFC4/include/IfcLuminousFluxMeasure.h"
#include "ifcpp/IFC4/include/IfcLuminousIntensityDistributionMeasure.h"
#include "ifcpp/IFC4/include/IfcLuminousIntensityMeasure.h"
#include "ifcpp/IFC4/include/IfcMagneticFluxDensityMeasure.h"
#include "ifcpp/IFC4/include/IfcMagneticFluxMeasure.h"
#include "ifcpp/IFC4/include/IfcMassDensityMeasure.h"
#include "ifcpp/IFC4/include/IfcMassFlowRateMeasure.h"
#include "ifcpp/IFC4/include/IfcMassMeasure.h"
#include "ifcpp/IFC4/include/IfcMassPerLengthMeasure.h"
#include "ifcpp/IFC4/include/IfcMaterialSelect.h"
#include "ifcpp/IFC4/include/IfcMeasureValue.h"
#include "ifcpp/IFC4/include/IfcMechanicalFastenerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcMedicalDeviceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcMemberTypeEnum.h"
#include "ifcpp/IFC4/include/IfcMetricValueSelect.h"
#include "ifcpp/IFC4/include/IfcModulusOfElasticityMeasure.h"
#include "ifcpp/IFC4/include/IfcModulusOfLinearSubgradeReactionMeasure.h"
#include "ifcpp/IFC4/include/IfcModulusOfRotationalSubgradeReactionMeasure.h"
#include "ifcpp/IFC4/include/IfcModulusOfRotationalSubgradeReactionSelect.h"
#include "ifcpp/IFC4/include/IfcModulusOfSubgradeReactionMeasure.h"
#include "ifcpp/IFC4/include/IfcModulusOfSubgradeReactionSelect.h"
#include "ifcpp/IFC4/include/IfcModulusOfTranslationalSubgradeReactionSelect.h"
#include "ifcpp/IFC4/include/IfcMoistureDiffusivityMeasure.h"
#include "ifcpp/IFC4/include/IfcMolecularWeightMeasure.h"
#include "ifcpp/IFC4/include/IfcMomentOfInertiaMeasure.h"
#include "ifcpp/IFC4/include/IfcMonetaryMeasure.h"
#include "ifcpp/IFC4/include/IfcMonthInYearNumber.h"
#include "ifcpp/IFC4/include/IfcMotorConnectionTypeEnum.h"
#include "ifcpp/IFC4/include/IfcNonNegativeLengthMeasure.h"
#include "ifcpp/IFC4/include/IfcNormalisedRatioMeasure.h"
#include "ifcpp/IFC4/include/IfcNullStyle.h"
#include "ifcpp/IFC4/include/IfcNumericMeasure.h"
#include "ifcpp/IFC4/include/IfcObjectReferenceSelect.h"
#include "ifcpp/IFC4/include/IfcObjectTypeEnum.h"
#include "ifcpp/IFC4/include/IfcObjectiveEnum.h"
#include "ifcpp/IFC4/include/IfcOccupantTypeEnum.h"
#include "ifcpp/IFC4/include/IfcOpeningElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcOutletTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPHMeasure.h"
#include "ifcpp/IFC4/include/IfcParameterValue.h"
#include "ifcpp/IFC4/include/IfcPerformanceHistoryTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPermeableCoveringOperationEnum.h"
#include "ifcpp/IFC4/include/IfcPermitTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPhysicalOrVirtualEnum.h"
#include "ifcpp/IFC4/include/IfcPileConstructionEnum.h"
#include "ifcpp/IFC4/include/IfcPileTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPipeFittingTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPipeSegmentTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPlanarForceMeasure.h"
#include "ifcpp/IFC4/include/IfcPlaneAngleMeasure.h"
#include "ifcpp/IFC4/include/IfcPlateTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPointOrVertexPoint.h"
#include "ifcpp/IFC4/include/IfcPositiveInteger.h"
#include "ifcpp/IFC4/include/IfcPositiveLengthMeasure.h"
#include "ifcpp/IFC4/include/IfcPositivePlaneAngleMeasure.h"
#include "ifcpp/IFC4/include/IfcPositiveRatioMeasure.h"
#include "ifcpp/IFC4/include/IfcPowerMeasure.h"
#include "ifcpp/IFC4/include/IfcPreferredSurfaceCurveRepresentation.h"
#include "ifcpp/IFC4/include/IfcPresentableText.h"
#include "ifcpp/IFC4/include/IfcPresentationStyleSelect.h"
#include "ifcpp/IFC4/include/IfcPressureMeasure.h"
#include "ifcpp/IFC4/include/IfcProcedureTypeEnum.h"
#include "ifcpp/IFC4/include/IfcProcessSelect.h"
#include "ifcpp/IFC4/include/IfcProductRepresentationSelect.h"
#include "ifcpp/IFC4/include/IfcProductSelect.h"
#include "ifcpp/IFC4/include/IfcProfileTypeEnum.h"
#include "ifcpp/IFC4/include/IfcProjectOrderTypeEnum.h"
#include "ifcpp/IFC4/include/IfcProjectedOrTrueLengthEnum.h"
#include "ifcpp/IFC4/include/IfcProjectionElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPropertySetDefinitionSelect.h"
#include "ifcpp/IFC4/include/IfcPropertySetDefinitionSet.h"
#include "ifcpp/IFC4/include/IfcPropertySetTemplateTypeEnum.h"
#include "ifcpp/IFC4/include/IfcProtectiveDeviceTrippingUnitTypeEnum.h"
#include "ifcpp/IFC4/include/IfcProtectiveDeviceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcPumpTypeEnum.h"
#include "ifcpp/IFC4/include/IfcRadioActivityMeasure.h"
#include "ifcpp/IFC4/include/IfcRailingTypeEnum.h"
#include "ifcpp/IFC4/include/IfcRampFlightTypeEnum.h"
#include "ifcpp/IFC4/include/IfcRampTypeEnum.h"
#include "ifcpp/IFC4/include/IfcRatioMeasure.h"
#include "ifcpp/IFC4/include/IfcReal.h"
#include "ifcpp/IFC4/include/IfcRecurrenceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcReflectanceMethodEnum.h"
#include "ifcpp/IFC4/include/IfcReinforcingBarRoleEnum.h"
#include "ifcpp/IFC4/include/IfcReinforcingBarSurfaceEnum.h"
#include "ifcpp/IFC4/include/IfcReinforcingBarTypeEnum.h"
#include "ifcpp/IFC4/include/IfcReinforcingMeshTypeEnum.h"
#include "ifcpp/IFC4/include/IfcResourceObjectSelect.h"
#include "ifcpp/IFC4/include/IfcResourceSelect.h"
#include "ifcpp/IFC4/include/IfcRoleEnum.h"
#include "ifcpp/IFC4/include/IfcRoofTypeEnum.h"
#include "ifcpp/IFC4/include/IfcRotationalFrequencyMeasure.h"
#include "ifcpp/IFC4/include/IfcRotationalMassMeasure.h"
#include "ifcpp/IFC4/include/IfcRotationalStiffnessMeasure.h"
#include "ifcpp/IFC4/include/IfcRotationalStiffnessSelect.h"
#include "ifcpp/IFC4/include/IfcSIPrefix.h"
#include "ifcpp/IFC4/include/IfcSIUnitName.h"
#include "ifcpp/IFC4/include/IfcSanitaryTerminalTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSectionModulusMeasure.h"
#include "ifcpp/IFC4/include/IfcSectionTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSectionalAreaIntegralMeasure.h"
#include "ifcpp/IFC4/include/IfcSegmentIndexSelect.h"
#include "ifcpp/IFC4/include/IfcSensorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSequenceEnum.h"
#include "ifcpp/IFC4/include/IfcShadingDeviceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcShearModulusMeasure.h"
#include "ifcpp/IFC4/include/IfcShell.h"
#include "ifcpp/IFC4/include/IfcSimplePropertyTemplateTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSimpleValue.h"
#include "ifcpp/IFC4/include/IfcSizeSelect.h"
#include "ifcpp/IFC4/include/IfcSlabTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSolarDeviceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSolidAngleMeasure.h"
#include "ifcpp/IFC4/include/IfcSolidOrShell.h"
#include "ifcpp/IFC4/include/IfcSoundPowerLevelMeasure.h"
#include "ifcpp/IFC4/include/IfcSoundPowerMeasure.h"
#include "ifcpp/IFC4/include/IfcSoundPressureLevelMeasure.h"
#include "ifcpp/IFC4/include/IfcSoundPressureMeasure.h"
#include "ifcpp/IFC4/include/IfcSpaceBoundarySelect.h"
#include "ifcpp/IFC4/include/IfcSpaceHeaterTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSpaceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSpatialZoneTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSpecificHeatCapacityMeasure.h"
#include "ifcpp/IFC4/include/IfcSpecularExponent.h"
#include "ifcpp/IFC4/include/IfcSpecularHighlightSelect.h"
#include "ifcpp/IFC4/include/IfcSpecularRoughness.h"
#include "ifcpp/IFC4/include/IfcStackTerminalTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStairFlightTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStairTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStateEnum.h"
#include "ifcpp/IFC4/include/IfcStrippedOptional.h"
#include "ifcpp/IFC4/include/IfcStructuralActivityAssignmentSelect.h"
#include "ifcpp/IFC4/include/IfcStructuralCurveActivityTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStructuralCurveMemberTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStructuralSurfaceActivityTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStructuralSurfaceMemberTypeEnum.h"
#include "ifcpp/IFC4/include/IfcStyleAssignmentSelect.h"
#include "ifcpp/IFC4/include/IfcSubContractResourceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSurfaceFeatureTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSurfaceOrFaceSurface.h"
#include "ifcpp/IFC4/include/IfcSurfaceSide.h"
#include "ifcpp/IFC4/include/IfcSurfaceStyleElementSelect.h"
#include "ifcpp/IFC4/include/IfcSwitchingDeviceTypeEnum.h"
#include "ifcpp/IFC4/include/IfcSystemFurnitureElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTankTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTaskDurationEnum.h"
#include "ifcpp/IFC4/include/IfcTaskTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTemperatureGradientMeasure.h"
#include "ifcpp/IFC4/include/IfcTemperatureRateOfChangeMeasure.h"
#include "ifcpp/IFC4/include/IfcTendonAnchorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTendonTypeEnum.h"
#include "ifcpp/IFC4/include/IfcText.h"
#include "ifcpp/IFC4/include/IfcTextAlignment.h"
#include "ifcpp/IFC4/include/IfcTextDecoration.h"
#include "ifcpp/IFC4/include/IfcTextFontName.h"
#include "ifcpp/IFC4/include/IfcTextFontSelect.h"
#include "ifcpp/IFC4/include/IfcTextPath.h"
#include "ifcpp/IFC4/include/IfcTextTransformation.h"
#include "ifcpp/IFC4/include/IfcThermalAdmittanceMeasure.h"
#include "ifcpp/IFC4/include/IfcThermalConductivityMeasure.h"
#include "ifcpp/IFC4/include/IfcThermalExpansionCoefficientMeasure.h"
#include "ifcpp/IFC4/include/IfcThermalResistanceMeasure.h"
#include "ifcpp/IFC4/include/IfcThermalTransmittanceMeasure.h"
#include "ifcpp/IFC4/include/IfcThermodynamicTemperatureMeasure.h"
#include "ifcpp/IFC4/include/IfcTime.h"
#include "ifcpp/IFC4/include/IfcTimeMeasure.h"
#include "ifcpp/IFC4/include/IfcTimeOrRatioSelect.h"
#include "ifcpp/IFC4/include/IfcTimeSeriesDataTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTimeStamp.h"
#include "ifcpp/IFC4/include/IfcTorqueMeasure.h"
#include "ifcpp/IFC4/include/IfcTransformerTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTransitionCode.h"
#include "ifcpp/IFC4/include/IfcTranslationalStiffnessSelect.h"
#include "ifcpp/IFC4/include/IfcTransportElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcTrimmingPreference.h"
#include "ifcpp/IFC4/include/IfcTrimmingSelect.h"
#include "ifcpp/IFC4/include/IfcTubeBundleTypeEnum.h"
#include "ifcpp/IFC4/include/IfcURIReference.h"
#include "ifcpp/IFC4/include/IfcUnit.h"
#include "ifcpp/IFC4/include/IfcUnitEnum.h"
#include "ifcpp/IFC4/include/IfcUnitaryControlElementTypeEnum.h"
#include "ifcpp/IFC4/include/IfcUnitaryEquipmentTypeEnum.h"
#include "ifcpp/IFC4/include/IfcValue.h"
#include "ifcpp/IFC4/include/IfcValveTypeEnum.h"
#include "ifcpp/IFC4/include/IfcVaporPermeabilityMeasure.h"
#include "ifcpp/IFC4/include/IfcVectorOrDirection.h"
#include "ifcpp/IFC4/include/IfcVibrationIsolatorTypeEnum.h"
#include "ifcpp/IFC4/include/IfcVoidingFeatureTypeEnum.h"
#include "ifcpp/IFC4/include/IfcVolumeMeasure.h"
#include "ifcpp/IFC4/include/IfcVolumetricFlowRateMeasure.h"
#include "ifcpp/IFC4/include/IfcWallTypeEnum.h"
#include "ifcpp/IFC4/include/IfcWarpingConstantMeasure.h"
#include "ifcpp/IFC4/include/IfcWarpingMomentMeasure.h"
#include "ifcpp/IFC4/include/IfcWarpingStiffnessSelect.h"
#include "ifcpp/IFC4/include/IfcWasteTerminalTypeEnum.h"
#include "ifcpp/IFC4/include/IfcWindowPanelOperationEnum.h"
#include "ifcpp/IFC4/include/IfcWindowPanelPositionEnum.h"
#include "ifcpp/IFC4/include/IfcWindowStyleConstructionEnum.h"
#include "ifcpp/IFC4/include/IfcWindowStyleOperationEnum.h"
#include "ifcpp/IFC4/include/IfcWindowTypeEnum.h"
#include "ifcpp/IFC4/include/IfcWindowTypePartitioningEnum.h"
#include "ifcpp/IFC4/include/IfcWorkCalendarTypeEnum.h"
#include "ifcpp/IFC4/include/IfcWorkPlanTypeEnum.h"
#include "ifcpp/IFC4/include/IfcWorkScheduleTypeEnum.h"
#include "TypeFactory.h"

	static std::map<std::string, std::function<shared_ptr<BuildingObject>( const std::wstring&, const std::map<int, shared_ptr<BuildingEntity> >& )> > type_factory_map = {
{ "IFCABSORBEDDOSEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAbsorbedDoseMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCACCELERATIONMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAccelerationMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCACTIONREQUESTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcActionRequestTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCACTIONSOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcActionSourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCACTIONTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcActionTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCACTORSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcActorSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCACTUATORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcActuatorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCADDRESSTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAddressTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCAIRTERMINALBOXTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAirTerminalBoxTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCAIRTERMINALTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAirTerminalTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCAIRTOAIRHEATRECOVERYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAirToAirHeatRecoveryTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCALARMTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAlarmTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCAMOUNTOFSUBSTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAmountOfSubstanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCANALYSISMODELTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAnalysisModelTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCANALYSISTHEORYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAnalysisTheoryTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCANGULARVELOCITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAngularVelocityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCAPPLIEDVALUESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAppliedValueSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCARCINDEX", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcArcIndex::createObjectFromSTEP( arg, map ); } },
{ "IFCAREADENSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAreaDensityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCAREAMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAreaMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCARITHMETICOPERATORENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcArithmeticOperatorEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCASSEMBLYPLACEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAssemblyPlaceEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCAUDIOVISUALAPPLIANCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAudioVisualApplianceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCAXIS2PLACEMENT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcAxis2Placement::createObjectFromSTEP( arg, map ); } },
{ "IFCBSPLINECURVEFORM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBSplineCurveForm::createObjectFromSTEP( arg, map ); } },
{ "IFCBSPLINESURFACEFORM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBSplineSurfaceForm::createObjectFromSTEP( arg, map ); } },
{ "IFCBEAMTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBeamTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCBENCHMARKENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBenchmarkEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCBENDINGPARAMETERSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBendingParameterSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCBINARY", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBinary::createObjectFromSTEP( arg, map ); } },
{ "IFCBOILERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBoilerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCBOOLEAN", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBoolean::createObjectFromSTEP( arg, map ); } },
{ "IFCBOOLEANOPERAND", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBooleanOperand::createObjectFromSTEP( arg, map ); } },
{ "IFCBOOLEANOPERATOR", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBooleanOperator::createObjectFromSTEP( arg, map ); } },
{ "IFCBOXALIGNMENT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBoxAlignment::createObjectFromSTEP( arg, map ); } },
{ "IFCBUILDINGELEMENTPARTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBuildingElementPartTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCBUILDINGELEMENTPROXYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBuildingElementProxyTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCBUILDINGSYSTEMTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBuildingSystemTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCBURNERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcBurnerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCABLECARRIERFITTINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCableCarrierFittingTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCABLECARRIERSEGMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCableCarrierSegmentTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCABLEFITTINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCableFittingTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCABLESEGMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCableSegmentTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCARDINALPOINTREFERENCE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCardinalPointReference::createObjectFromSTEP( arg, map ); } },
{ "IFCCHANGEACTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcChangeActionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCHILLERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcChillerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCHIMNEYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcChimneyTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCLASSIFICATIONREFERENCESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcClassificationReferenceSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCCLASSIFICATIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcClassificationSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCCOILTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCoilTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOLOUR", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcColour::createObjectFromSTEP( arg, map ); } },
{ "IFCCOLOURORFACTOR", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcColourOrFactor::createObjectFromSTEP( arg, map ); } },
{ "IFCCOLUMNTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcColumnTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOMMUNICATIONSAPPLIANCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCommunicationsApplianceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOMPLEXNUMBER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcComplexNumber::createObjectFromSTEP( arg, map ); } },
{ "IFCCOMPLEXPROPERTYTEMPLATETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcComplexPropertyTemplateTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOMPOUNDPLANEANGLEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCompoundPlaneAngleMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCCOMPRESSORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCompressorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONDENSERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCondenserTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONNECTIONTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcConnectionTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONSTRAINTENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcConstraintEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONSTRUCTIONEQUIPMENTRESOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcConstructionEquipmentResourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONSTRUCTIONMATERIALRESOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcConstructionMaterialResourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONSTRUCTIONPRODUCTRESOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcConstructionProductResourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCONTEXTDEPENDENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcContextDependentMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCCONTROLLERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcControllerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOOLEDBEAMTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCooledBeamTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOOLINGTOWERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCoolingTowerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOORDINATEREFERENCESYSTEMSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCoordinateReferenceSystemSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCCOSTITEMTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCostItemTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOSTSCHEDULETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCostScheduleTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCOUNTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCountMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCCOVERINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCoveringTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCREWRESOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCrewResourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCSGSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCsgSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCCURTAINWALLTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurtainWallTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCURVATUREMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurvatureMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCCURVEFONTORSCALEDCURVEFONTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurveFontOrScaledCurveFontSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCCURVEINTERPOLATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurveInterpolationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCCURVEONSURFACE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurveOnSurface::createObjectFromSTEP( arg, map ); } },
{ "IFCCURVEOREDGECURVE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurveOrEdgeCurve::createObjectFromSTEP( arg, map ); } },
{ "IFCCURVESTYLEFONTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcCurveStyleFontSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCDAMPERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDamperTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDATAORIGINENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDataOriginEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDATE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDate::createObjectFromSTEP( arg, map ); } },
{ "IFCDATETIME", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDateTime::createObjectFromSTEP( arg, map ); } },
{ "IFCDAYINMONTHNUMBER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDayInMonthNumber::createObjectFromSTEP( arg, map ); } },
{ "IFCDAYINWEEKNUMBER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDayInWeekNumber::createObjectFromSTEP( arg, map ); } },
{ "IFCDEFINITIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDefinitionSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCDERIVEDMEASUREVALUE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDerivedMeasureValue::createObjectFromSTEP( arg, map ); } },
{ "IFCDERIVEDUNITENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDerivedUnitEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDESCRIPTIVEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDescriptiveMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCDIMENSIONCOUNT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDimensionCount::createObjectFromSTEP( arg, map ); } },
{ "IFCDIRECTIONSENSEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDirectionSenseEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDISCRETEACCESSORYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDiscreteAccessoryTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDISTRIBUTIONCHAMBERELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDistributionChamberElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDISTRIBUTIONPORTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDistributionPortTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDISTRIBUTIONSYSTEMENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDistributionSystemEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOCUMENTCONFIDENTIALITYENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDocumentConfidentialityEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOCUMENTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDocumentSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCDOCUMENTSTATUSENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDocumentStatusEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOORPANELOPERATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoorPanelOperationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOORPANELPOSITIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoorPanelPositionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOORSTYLECONSTRUCTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoorStyleConstructionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOORSTYLEOPERATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoorStyleOperationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOORTYPEOPERATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoorTypeOperationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDOSEEQUIVALENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDoseEquivalentMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCDUCTFITTINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDuctFittingTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDUCTSEGMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDuctSegmentTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDUCTSILENCERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDuctSilencerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCDURATION", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDuration::createObjectFromSTEP( arg, map ); } },
{ "IFCDYNAMICVISCOSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcDynamicViscosityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICAPPLIANCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricApplianceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICCAPACITANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricCapacitanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICCHARGEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricChargeMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICCONDUCTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricConductanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICCURRENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricCurrentMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICDISTRIBUTIONBOARDTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricDistributionBoardTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICFLOWSTORAGEDEVICETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricFlowStorageDeviceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICGENERATORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricGeneratorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICMOTORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricMotorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICRESISTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricResistanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICTIMECONTROLTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricTimeControlTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELECTRICVOLTAGEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElectricVoltageMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCELEMENTASSEMBLYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElementAssemblyTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCELEMENTCOMPOSITIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcElementCompositionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCENERGYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcEnergyMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCENGINETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcEngineTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCEVAPORATIVECOOLERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcEvaporativeCoolerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCEVAPORATORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcEvaporatorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCEVENTTRIGGERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcEventTriggerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCEVENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcEventTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCEXTERNALSPATIALELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcExternalSpatialElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFANTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFanTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFASTENERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFastenerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFILLSTYLESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFillStyleSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCFILTERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFilterTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFIRESUPPRESSIONTERMINALTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFireSuppressionTerminalTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFLOWDIRECTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFlowDirectionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFLOWINSTRUMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFlowInstrumentTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFLOWMETERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFlowMeterTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFONTSTYLE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFontStyle::createObjectFromSTEP( arg, map ); } },
{ "IFCFONTVARIANT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFontVariant::createObjectFromSTEP( arg, map ); } },
{ "IFCFONTWEIGHT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFontWeight::createObjectFromSTEP( arg, map ); } },
{ "IFCFOOTINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFootingTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCFORCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcForceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCFREQUENCYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFrequencyMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCFURNITURETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcFurnitureTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCGEOGRAPHICELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGeographicElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCGEOMETRICPROJECTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGeometricProjectionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCGEOMETRICSETSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGeometricSetSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCGLOBALORLOCALENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGlobalOrLocalEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCGLOBALLYUNIQUEID", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGloballyUniqueId::createObjectFromSTEP( arg, map ); } },
{ "IFCGRIDPLACEMENTDIRECTIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGridPlacementDirectionSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCGRIDTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcGridTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCHATCHLINEDISTANCESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcHatchLineDistanceSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCHEATEXCHANGERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcHeatExchangerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCHEATFLUXDENSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcHeatFluxDensityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCHEATINGVALUEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcHeatingValueMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCHUMIDIFIERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcHumidifierTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCIDENTIFIER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcIdentifier::createObjectFromSTEP( arg, map ); } },
{ "IFCILLUMINANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcIlluminanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCINDUCTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcInductanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCINTEGER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcInteger::createObjectFromSTEP( arg, map ); } },
{ "IFCINTEGERCOUNTRATEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcIntegerCountRateMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCINTERCEPTORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcInterceptorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCINTERNALOREXTERNALENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcInternalOrExternalEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCINVENTORYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcInventoryTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCIONCONCENTRATIONMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcIonConcentrationMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCISOTHERMALMOISTURECAPACITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcIsothermalMoistureCapacityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCJUNCTIONBOXTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcJunctionBoxTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCKINEMATICVISCOSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcKinematicViscosityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCKNOTTYPE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcKnotType::createObjectFromSTEP( arg, map ); } },
{ "IFCLABEL", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLabel::createObjectFromSTEP( arg, map ); } },
{ "IFCLABORRESOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLaborResourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLAMPTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLampTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLANGUAGEID", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLanguageId::createObjectFromSTEP( arg, map ); } },
{ "IFCLAYERSETDIRECTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLayerSetDirectionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLAYEREDITEM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLayeredItem::createObjectFromSTEP( arg, map ); } },
{ "IFCLENGTHMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLengthMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLIBRARYSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLibrarySelect::createObjectFromSTEP( arg, map ); } },
{ "IFCLIGHTDISTRIBUTIONCURVEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLightDistributionCurveEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLIGHTDISTRIBUTIONDATASOURCESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLightDistributionDataSourceSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCLIGHTEMISSIONSOURCEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLightEmissionSourceEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLIGHTFIXTURETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLightFixtureTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLINEINDEX", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLineIndex::createObjectFromSTEP( arg, map ); } },
{ "IFCLINEARFORCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLinearForceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLINEARMOMENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLinearMomentMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLINEARSTIFFNESSMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLinearStiffnessMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLINEARVELOCITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLinearVelocityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLOADGROUPTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLoadGroupTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLOGICAL", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLogical::createObjectFromSTEP( arg, map ); } },
{ "IFCLOGICALOPERATORENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLogicalOperatorEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCLUMINOUSFLUXMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLuminousFluxMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLuminousIntensityDistributionMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCLUMINOUSINTENSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcLuminousIntensityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMAGNETICFLUXDENSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMagneticFluxDensityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMAGNETICFLUXMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMagneticFluxMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMASSDENSITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMassDensityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMASSFLOWRATEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMassFlowRateMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMASSMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMassMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMASSPERLENGTHMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMassPerLengthMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMATERIALSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMaterialSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCMEASUREVALUE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMeasureValue::createObjectFromSTEP( arg, map ); } },
{ "IFCMECHANICALFASTENERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMechanicalFastenerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCMEDICALDEVICETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMedicalDeviceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCMEMBERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMemberTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCMETRICVALUESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMetricValueSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFELASTICITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfElasticityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfLinearSubgradeReactionMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfRotationalSubgradeReactionMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFROTATIONALSUBGRADEREACTIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfRotationalSubgradeReactionSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFSUBGRADEREACTIONMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfSubgradeReactionMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFSUBGRADEREACTIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfSubgradeReactionSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCMODULUSOFTRANSLATIONALSUBGRADEREACTIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcModulusOfTranslationalSubgradeReactionSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCMOISTUREDIFFUSIVITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMoistureDiffusivityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMOLECULARWEIGHTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMolecularWeightMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMOMENTOFINERTIAMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMomentOfInertiaMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMONETARYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMonetaryMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCMONTHINYEARNUMBER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMonthInYearNumber::createObjectFromSTEP( arg, map ); } },
{ "IFCMOTORCONNECTIONTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcMotorConnectionTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCNONNEGATIVELENGTHMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcNonNegativeLengthMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCNORMALISEDRATIOMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcNormalisedRatioMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCNULLSTYLE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcNullStyle::createObjectFromSTEP( arg, map ); } },
{ "IFCNUMERICMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcNumericMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCOBJECTREFERENCESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcObjectReferenceSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCOBJECTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcObjectTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCOBJECTIVEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcObjectiveEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCOCCUPANTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcOccupantTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCOPENINGELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcOpeningElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCOUTLETTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcOutletTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPHMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPHMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPARAMETERVALUE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcParameterValue::createObjectFromSTEP( arg, map ); } },
{ "IFCPERFORMANCEHISTORYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPerformanceHistoryTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPERMEABLECOVERINGOPERATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPermeableCoveringOperationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPERMITTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPermitTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPHYSICALORVIRTUALENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPhysicalOrVirtualEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPILECONSTRUCTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPileConstructionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPILETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPileTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPIPEFITTINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPipeFittingTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPIPESEGMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPipeSegmentTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPLANARFORCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPlanarForceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPLANEANGLEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPlaneAngleMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPLATETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPlateTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPOINTORVERTEXPOINT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPointOrVertexPoint::createObjectFromSTEP( arg, map ); } },
{ "IFCPOSITIVEINTEGER", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPositiveInteger::createObjectFromSTEP( arg, map ); } },
{ "IFCPOSITIVELENGTHMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPositiveLengthMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPOSITIVEPLANEANGLEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPositivePlaneAngleMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPOSITIVERATIOMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPositiveRatioMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPOWERMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPowerMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPREFERREDSURFACECURVEREPRESENTATION", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPreferredSurfaceCurveRepresentation::createObjectFromSTEP( arg, map ); } },
{ "IFCPRESENTABLETEXT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPresentableText::createObjectFromSTEP( arg, map ); } },
{ "IFCPRESENTATIONSTYLESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPresentationStyleSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCPRESSUREMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPressureMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCPROCEDURETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProcedureTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROCESSSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProcessSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCPRODUCTREPRESENTATIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProductRepresentationSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCPRODUCTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProductSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCPROFILETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProfileTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROJECTORDERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProjectOrderTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROJECTEDORTRUELENGTHENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProjectedOrTrueLengthEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROJECTIONELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProjectionElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROPERTYSETDEFINITIONSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPropertySetDefinitionSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCPROPERTYSETDEFINITIONSET", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPropertySetDefinitionSet::createObjectFromSTEP( arg, map ); } },
{ "IFCPROPERTYSETTEMPLATETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPropertySetTemplateTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROTECTIVEDEVICETRIPPINGUNITTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProtectiveDeviceTrippingUnitTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPROTECTIVEDEVICETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcProtectiveDeviceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCPUMPTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcPumpTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCRADIOACTIVITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRadioActivityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCRAILINGTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRailingTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCRAMPFLIGHTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRampFlightTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCRAMPTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRampTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCRATIOMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRatioMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCREAL", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcReal::createObjectFromSTEP( arg, map ); } },
{ "IFCRECURRENCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRecurrenceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCREFLECTANCEMETHODENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcReflectanceMethodEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCREINFORCINGBARROLEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcReinforcingBarRoleEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCREINFORCINGBARSURFACEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcReinforcingBarSurfaceEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCREINFORCINGBARTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcReinforcingBarTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCREINFORCINGMESHTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcReinforcingMeshTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCRESOURCEOBJECTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcResourceObjectSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCRESOURCESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcResourceSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCROLEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRoleEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCROOFTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRoofTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCROTATIONALFREQUENCYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRotationalFrequencyMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCROTATIONALMASSMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRotationalMassMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCROTATIONALSTIFFNESSMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRotationalStiffnessMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCROTATIONALSTIFFNESSSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcRotationalStiffnessSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSIPREFIX", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSIPrefix::createObjectFromSTEP( arg, map ); } },
{ "IFCSIUNITNAME", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSIUnitName::createObjectFromSTEP( arg, map ); } },
{ "IFCSANITARYTERMINALTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSanitaryTerminalTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSECTIONMODULUSMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSectionModulusMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSECTIONTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSectionTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSECTIONALAREAINTEGRALMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSectionalAreaIntegralMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSEGMENTINDEXSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSegmentIndexSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSENSORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSensorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSEQUENCEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSequenceEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSHADINGDEVICETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcShadingDeviceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSHEARMODULUSMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcShearModulusMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSHELL", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcShell::createObjectFromSTEP( arg, map ); } },
{ "IFCSIMPLEPROPERTYTEMPLATETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSimplePropertyTemplateTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSIMPLEVALUE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSimpleValue::createObjectFromSTEP( arg, map ); } },
{ "IFCSIZESELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSizeSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSLABTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSlabTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSOLARDEVICETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSolarDeviceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSOLIDANGLEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSolidAngleMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSOLIDORSHELL", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSolidOrShell::createObjectFromSTEP( arg, map ); } },
{ "IFCSOUNDPOWERLEVELMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSoundPowerLevelMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSOUNDPOWERMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSoundPowerMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSOUNDPRESSURELEVELMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSoundPressureLevelMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSOUNDPRESSUREMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSoundPressureMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSPACEBOUNDARYSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpaceBoundarySelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSPACEHEATERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpaceHeaterTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSPACETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpaceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSPATIALZONETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpatialZoneTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSPECIFICHEATCAPACITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpecificHeatCapacityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCSPECULAREXPONENT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpecularExponent::createObjectFromSTEP( arg, map ); } },
{ "IFCSPECULARHIGHLIGHTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpecularHighlightSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSPECULARROUGHNESS", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSpecularRoughness::createObjectFromSTEP( arg, map ); } },
{ "IFCSTACKTERMINALTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStackTerminalTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTAIRFLIGHTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStairFlightTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTAIRTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStairTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTATEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStateEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTRIPPEDOPTIONAL", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStrippedOptional::createObjectFromSTEP( arg, map ); } },
{ "IFCSTRUCTURALACTIVITYASSIGNMENTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStructuralActivityAssignmentSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSTRUCTURALCURVEACTIVITYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStructuralCurveActivityTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTRUCTURALCURVEMEMBERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStructuralCurveMemberTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTRUCTURALSURFACEACTIVITYTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStructuralSurfaceActivityTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTRUCTURALSURFACEMEMBERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStructuralSurfaceMemberTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSTYLEASSIGNMENTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcStyleAssignmentSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSUBCONTRACTRESOURCETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSubContractResourceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSURFACEFEATURETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSurfaceFeatureTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSURFACEORFACESURFACE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSurfaceOrFaceSurface::createObjectFromSTEP( arg, map ); } },
{ "IFCSURFACESIDE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSurfaceSide::createObjectFromSTEP( arg, map ); } },
{ "IFCSURFACESTYLEELEMENTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSurfaceStyleElementSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCSWITCHINGDEVICETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSwitchingDeviceTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCSYSTEMFURNITUREELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcSystemFurnitureElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTANKTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTankTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTASKDURATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTaskDurationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTASKTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTaskTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTEMPERATUREGRADIENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTemperatureGradientMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTEMPERATURERATEOFCHANGEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTemperatureRateOfChangeMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTENDONANCHORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTendonAnchorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTENDONTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTendonTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcText::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXTALIGNMENT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTextAlignment::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXTDECORATION", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTextDecoration::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXTFONTNAME", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTextFontName::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXTFONTSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTextFontSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXTPATH", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTextPath::createObjectFromSTEP( arg, map ); } },
{ "IFCTEXTTRANSFORMATION", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTextTransformation::createObjectFromSTEP( arg, map ); } },
{ "IFCTHERMALADMITTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcThermalAdmittanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTHERMALCONDUCTIVITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcThermalConductivityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTHERMALEXPANSIONCOEFFICIENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcThermalExpansionCoefficientMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTHERMALRESISTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcThermalResistanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTHERMALTRANSMITTANCEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcThermalTransmittanceMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTHERMODYNAMICTEMPERATUREMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcThermodynamicTemperatureMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTIME", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTime::createObjectFromSTEP( arg, map ); } },
{ "IFCTIMEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTimeMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTIMEORRATIOSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTimeOrRatioSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCTIMESERIESDATATYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTimeSeriesDataTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTIMESTAMP", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTimeStamp::createObjectFromSTEP( arg, map ); } },
{ "IFCTORQUEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTorqueMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCTRANSFORMERTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTransformerTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTRANSITIONCODE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTransitionCode::createObjectFromSTEP( arg, map ); } },
{ "IFCTRANSLATIONALSTIFFNESSSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTranslationalStiffnessSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCTRANSPORTELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTransportElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCTRIMMINGPREFERENCE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTrimmingPreference::createObjectFromSTEP( arg, map ); } },
{ "IFCTRIMMINGSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTrimmingSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCTUBEBUNDLETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcTubeBundleTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCURIREFERENCE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcURIReference::createObjectFromSTEP( arg, map ); } },
{ "IFCUNIT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcUnit::createObjectFromSTEP( arg, map ); } },
{ "IFCUNITENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcUnitEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCUNITARYCONTROLELEMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcUnitaryControlElementTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCUNITARYEQUIPMENTTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcUnitaryEquipmentTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCVALUE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcValue::createObjectFromSTEP( arg, map ); } },
{ "IFCVALVETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcValveTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCVAPORPERMEABILITYMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcVaporPermeabilityMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCVECTORORDIRECTION", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcVectorOrDirection::createObjectFromSTEP( arg, map ); } },
{ "IFCVIBRATIONISOLATORTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcVibrationIsolatorTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCVOIDINGFEATURETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcVoidingFeatureTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCVOLUMEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcVolumeMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCVOLUMETRICFLOWRATEMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcVolumetricFlowRateMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCWALLTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWallTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWARPINGCONSTANTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWarpingConstantMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCWARPINGMOMENTMEASURE", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWarpingMomentMeasure::createObjectFromSTEP( arg, map ); } },
{ "IFCWARPINGSTIFFNESSSELECT", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWarpingStiffnessSelect::createObjectFromSTEP( arg, map ); } },
{ "IFCWASTETERMINALTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWasteTerminalTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWINDOWPANELOPERATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWindowPanelOperationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWINDOWPANELPOSITIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWindowPanelPositionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWINDOWSTYLECONSTRUCTIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWindowStyleConstructionEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWINDOWSTYLEOPERATIONENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWindowStyleOperationEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWINDOWTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWindowTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWINDOWTYPEPARTITIONINGENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWindowTypePartitioningEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWORKCALENDARTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWorkCalendarTypeEnum::createObjectFromSTEP( arg, map ); } },
{ "IFCWORKPLANTYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWorkPlanTypeEnum::createObjectFromSTEP( arg, map ); } },
	{ "IFCWORKSCHEDULETYPEENUM", []( const std::wstring& arg, const std::map<int, shared_ptr<BuildingEntity> >& map )->shared_ptr<BuildingObject> { return IfcWorkScheduleTypeEnum::createObjectFromSTEP( arg, map ); } }
};

shared_ptr<BuildingObject> TypeFactory::createTypeObject( const std::string& class_name_upper, const std::wstring& type_arg, const std::map<int, shared_ptr<BuildingEntity> >& map_entities )
{
	auto it_find = type_factory_map.find( class_name_upper );
	if( it_find != type_factory_map.end() )
	{
		return it_find->second( type_arg, map_entities );
	}
	// class_name not registered
	return shared_ptr<BuildingObject>();
}
void TypeFactory::emptyMapOfTypes()
{
	type_factory_map.clear();
}
