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

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

#ifdef USE_IFC4

#include "../ifcparse/Ifc4.h"
#include "../ifcparse/IfcSchema.h"
#include "../ifcparse/IfcException.h"
#include "../ifcparse/IfcWrite.h"
#include "../ifcparse/IfcWritableEntity.h"

#include <map>

using namespace Ifc4;
using namespace IfcParse;
using namespace IfcWrite;

// External definitions
extern entity* IfcActionRequest_type;
extern entity* IfcActor_type;
extern entity* IfcActorRole_type;
extern entity* IfcActuator_type;
extern entity* IfcActuatorType_type;
extern entity* IfcAddress_type;
extern entity* IfcAdvancedBrep_type;
extern entity* IfcAdvancedBrepWithVoids_type;
extern entity* IfcAdvancedFace_type;
extern entity* IfcAirTerminal_type;
extern entity* IfcAirTerminalBox_type;
extern entity* IfcAirTerminalBoxType_type;
extern entity* IfcAirTerminalType_type;
extern entity* IfcAirToAirHeatRecovery_type;
extern entity* IfcAirToAirHeatRecoveryType_type;
extern entity* IfcAlarm_type;
extern entity* IfcAlarmType_type;
extern entity* IfcAnnotation_type;
extern entity* IfcAnnotationFillArea_type;
extern entity* IfcApplication_type;
extern entity* IfcAppliedValue_type;
extern entity* IfcApproval_type;
extern entity* IfcApprovalRelationship_type;
extern entity* IfcArbitraryClosedProfileDef_type;
extern entity* IfcArbitraryOpenProfileDef_type;
extern entity* IfcArbitraryProfileDefWithVoids_type;
extern entity* IfcAsset_type;
extern entity* IfcAsymmetricIShapeProfileDef_type;
extern entity* IfcAudioVisualAppliance_type;
extern entity* IfcAudioVisualApplianceType_type;
extern entity* IfcAxis1Placement_type;
extern entity* IfcAxis2Placement2D_type;
extern entity* IfcAxis2Placement3D_type;
extern entity* IfcBSplineCurve_type;
extern entity* IfcBSplineCurveWithKnots_type;
extern entity* IfcBSplineSurface_type;
extern entity* IfcBSplineSurfaceWithKnots_type;
extern entity* IfcBeam_type;
extern entity* IfcBeamStandardCase_type;
extern entity* IfcBeamType_type;
extern entity* IfcBlobTexture_type;
extern entity* IfcBlock_type;
extern entity* IfcBoiler_type;
extern entity* IfcBoilerType_type;
extern entity* IfcBooleanClippingResult_type;
extern entity* IfcBooleanResult_type;
extern entity* IfcBoundaryCondition_type;
extern entity* IfcBoundaryCurve_type;
extern entity* IfcBoundaryEdgeCondition_type;
extern entity* IfcBoundaryFaceCondition_type;
extern entity* IfcBoundaryNodeCondition_type;
extern entity* IfcBoundaryNodeConditionWarping_type;
extern entity* IfcBoundedCurve_type;
extern entity* IfcBoundedSurface_type;
extern entity* IfcBoundingBox_type;
extern entity* IfcBoxedHalfSpace_type;
extern entity* IfcBuilding_type;
extern entity* IfcBuildingElement_type;
extern entity* IfcBuildingElementPart_type;
extern entity* IfcBuildingElementPartType_type;
extern entity* IfcBuildingElementProxy_type;
extern entity* IfcBuildingElementProxyType_type;
extern entity* IfcBuildingElementType_type;
extern entity* IfcBuildingStorey_type;
extern entity* IfcBuildingSystem_type;
extern entity* IfcBurner_type;
extern entity* IfcBurnerType_type;
extern entity* IfcCShapeProfileDef_type;
extern entity* IfcCableCarrierFitting_type;
extern entity* IfcCableCarrierFittingType_type;
extern entity* IfcCableCarrierSegment_type;
extern entity* IfcCableCarrierSegmentType_type;
extern entity* IfcCableFitting_type;
extern entity* IfcCableFittingType_type;
extern entity* IfcCableSegment_type;
extern entity* IfcCableSegmentType_type;
extern entity* IfcCartesianPoint_type;
extern entity* IfcCartesianPointList_type;
extern entity* IfcCartesianPointList2D_type;
extern entity* IfcCartesianPointList3D_type;
extern entity* IfcCartesianTransformationOperator_type;
extern entity* IfcCartesianTransformationOperator2D_type;
extern entity* IfcCartesianTransformationOperator2DnonUniform_type;
extern entity* IfcCartesianTransformationOperator3D_type;
extern entity* IfcCartesianTransformationOperator3DnonUniform_type;
extern entity* IfcCenterLineProfileDef_type;
extern entity* IfcChiller_type;
extern entity* IfcChillerType_type;
extern entity* IfcChimney_type;
extern entity* IfcChimneyType_type;
extern entity* IfcCircle_type;
extern entity* IfcCircleHollowProfileDef_type;
extern entity* IfcCircleProfileDef_type;
extern entity* IfcCivilElement_type;
extern entity* IfcCivilElementType_type;
extern entity* IfcClassification_type;
extern entity* IfcClassificationReference_type;
extern entity* IfcClosedShell_type;
extern entity* IfcCoil_type;
extern entity* IfcCoilType_type;
extern entity* IfcColourRgb_type;
extern entity* IfcColourRgbList_type;
extern entity* IfcColourSpecification_type;
extern entity* IfcColumn_type;
extern entity* IfcColumnStandardCase_type;
extern entity* IfcColumnType_type;
extern entity* IfcCommunicationsAppliance_type;
extern entity* IfcCommunicationsApplianceType_type;
extern entity* IfcComplexProperty_type;
extern entity* IfcComplexPropertyTemplate_type;
extern entity* IfcCompositeCurve_type;
extern entity* IfcCompositeCurveOnSurface_type;
extern entity* IfcCompositeCurveSegment_type;
extern entity* IfcCompositeProfileDef_type;
extern entity* IfcCompressor_type;
extern entity* IfcCompressorType_type;
extern entity* IfcCondenser_type;
extern entity* IfcCondenserType_type;
extern entity* IfcConic_type;
extern entity* IfcConnectedFaceSet_type;
extern entity* IfcConnectionCurveGeometry_type;
extern entity* IfcConnectionGeometry_type;
extern entity* IfcConnectionPointEccentricity_type;
extern entity* IfcConnectionPointGeometry_type;
extern entity* IfcConnectionSurfaceGeometry_type;
extern entity* IfcConnectionVolumeGeometry_type;
extern entity* IfcConstraint_type;
extern entity* IfcConstructionEquipmentResource_type;
extern entity* IfcConstructionEquipmentResourceType_type;
extern entity* IfcConstructionMaterialResource_type;
extern entity* IfcConstructionMaterialResourceType_type;
extern entity* IfcConstructionProductResource_type;
extern entity* IfcConstructionProductResourceType_type;
extern entity* IfcConstructionResource_type;
extern entity* IfcConstructionResourceType_type;
extern entity* IfcContext_type;
extern entity* IfcContextDependentUnit_type;
extern entity* IfcControl_type;
extern entity* IfcController_type;
extern entity* IfcControllerType_type;
extern entity* IfcConversionBasedUnit_type;
extern entity* IfcConversionBasedUnitWithOffset_type;
extern entity* IfcCooledBeam_type;
extern entity* IfcCooledBeamType_type;
extern entity* IfcCoolingTower_type;
extern entity* IfcCoolingTowerType_type;
extern entity* IfcCoordinateOperation_type;
extern entity* IfcCoordinateReferenceSystem_type;
extern entity* IfcCostItem_type;
extern entity* IfcCostSchedule_type;
extern entity* IfcCostValue_type;
extern entity* IfcCovering_type;
extern entity* IfcCoveringType_type;
extern entity* IfcCrewResource_type;
extern entity* IfcCrewResourceType_type;
extern entity* IfcCsgPrimitive3D_type;
extern entity* IfcCsgSolid_type;
extern entity* IfcCurrencyRelationship_type;
extern entity* IfcCurtainWall_type;
extern entity* IfcCurtainWallType_type;
extern entity* IfcCurve_type;
extern entity* IfcCurveBoundedPlane_type;
extern entity* IfcCurveBoundedSurface_type;
extern entity* IfcCurveStyle_type;
extern entity* IfcCurveStyleFont_type;
extern entity* IfcCurveStyleFontAndScaling_type;
extern entity* IfcCurveStyleFontPattern_type;
extern entity* IfcCylindricalSurface_type;
extern entity* IfcDamper_type;
extern entity* IfcDamperType_type;
extern entity* IfcDerivedProfileDef_type;
extern entity* IfcDerivedUnit_type;
extern entity* IfcDerivedUnitElement_type;
extern entity* IfcDimensionalExponents_type;
extern entity* IfcDirection_type;
extern entity* IfcDiscreteAccessory_type;
extern entity* IfcDiscreteAccessoryType_type;
extern entity* IfcDistributionChamberElement_type;
extern entity* IfcDistributionChamberElementType_type;
extern entity* IfcDistributionCircuit_type;
extern entity* IfcDistributionControlElement_type;
extern entity* IfcDistributionControlElementType_type;
extern entity* IfcDistributionElement_type;
extern entity* IfcDistributionElementType_type;
extern entity* IfcDistributionFlowElement_type;
extern entity* IfcDistributionFlowElementType_type;
extern entity* IfcDistributionPort_type;
extern entity* IfcDistributionSystem_type;
extern entity* IfcDocumentInformation_type;
extern entity* IfcDocumentInformationRelationship_type;
extern entity* IfcDocumentReference_type;
extern entity* IfcDoor_type;
extern entity* IfcDoorLiningProperties_type;
extern entity* IfcDoorPanelProperties_type;
extern entity* IfcDoorStandardCase_type;
extern entity* IfcDoorStyle_type;
extern entity* IfcDoorType_type;
extern entity* IfcDraughtingPreDefinedColour_type;
extern entity* IfcDraughtingPreDefinedCurveFont_type;
extern entity* IfcDuctFitting_type;
extern entity* IfcDuctFittingType_type;
extern entity* IfcDuctSegment_type;
extern entity* IfcDuctSegmentType_type;
extern entity* IfcDuctSilencer_type;
extern entity* IfcDuctSilencerType_type;
extern entity* IfcEdge_type;
extern entity* IfcEdgeCurve_type;
extern entity* IfcEdgeLoop_type;
extern entity* IfcElectricAppliance_type;
extern entity* IfcElectricApplianceType_type;
extern entity* IfcElectricDistributionBoard_type;
extern entity* IfcElectricDistributionBoardType_type;
extern entity* IfcElectricFlowStorageDevice_type;
extern entity* IfcElectricFlowStorageDeviceType_type;
extern entity* IfcElectricGenerator_type;
extern entity* IfcElectricGeneratorType_type;
extern entity* IfcElectricMotor_type;
extern entity* IfcElectricMotorType_type;
extern entity* IfcElectricTimeControl_type;
extern entity* IfcElectricTimeControlType_type;
extern entity* IfcElement_type;
extern entity* IfcElementAssembly_type;
extern entity* IfcElementAssemblyType_type;
extern entity* IfcElementComponent_type;
extern entity* IfcElementComponentType_type;
extern entity* IfcElementQuantity_type;
extern entity* IfcElementType_type;
extern entity* IfcElementarySurface_type;
extern entity* IfcEllipse_type;
extern entity* IfcEllipseProfileDef_type;
extern entity* IfcEnergyConversionDevice_type;
extern entity* IfcEnergyConversionDeviceType_type;
extern entity* IfcEngine_type;
extern entity* IfcEngineType_type;
extern entity* IfcEvaporativeCooler_type;
extern entity* IfcEvaporativeCoolerType_type;
extern entity* IfcEvaporator_type;
extern entity* IfcEvaporatorType_type;
extern entity* IfcEvent_type;
extern entity* IfcEventTime_type;
extern entity* IfcEventType_type;
extern entity* IfcExtendedProperties_type;
extern entity* IfcExternalInformation_type;
extern entity* IfcExternalReference_type;
extern entity* IfcExternalReferenceRelationship_type;
extern entity* IfcExternalSpatialElement_type;
extern entity* IfcExternalSpatialStructureElement_type;
extern entity* IfcExternallyDefinedHatchStyle_type;
extern entity* IfcExternallyDefinedSurfaceStyle_type;
extern entity* IfcExternallyDefinedTextFont_type;
extern entity* IfcExtrudedAreaSolid_type;
extern entity* IfcExtrudedAreaSolidTapered_type;
extern entity* IfcFace_type;
extern entity* IfcFaceBasedSurfaceModel_type;
extern entity* IfcFaceBound_type;
extern entity* IfcFaceOuterBound_type;
extern entity* IfcFaceSurface_type;
extern entity* IfcFacetedBrep_type;
extern entity* IfcFacetedBrepWithVoids_type;
extern entity* IfcFailureConnectionCondition_type;
extern entity* IfcFan_type;
extern entity* IfcFanType_type;
extern entity* IfcFastener_type;
extern entity* IfcFastenerType_type;
extern entity* IfcFeatureElement_type;
extern entity* IfcFeatureElementAddition_type;
extern entity* IfcFeatureElementSubtraction_type;
extern entity* IfcFillAreaStyle_type;
extern entity* IfcFillAreaStyleHatching_type;
extern entity* IfcFillAreaStyleTiles_type;
extern entity* IfcFilter_type;
extern entity* IfcFilterType_type;
extern entity* IfcFireSuppressionTerminal_type;
extern entity* IfcFireSuppressionTerminalType_type;
extern entity* IfcFixedReferenceSweptAreaSolid_type;
extern entity* IfcFlowController_type;
extern entity* IfcFlowControllerType_type;
extern entity* IfcFlowFitting_type;
extern entity* IfcFlowFittingType_type;
extern entity* IfcFlowInstrument_type;
extern entity* IfcFlowInstrumentType_type;
extern entity* IfcFlowMeter_type;
extern entity* IfcFlowMeterType_type;
extern entity* IfcFlowMovingDevice_type;
extern entity* IfcFlowMovingDeviceType_type;
extern entity* IfcFlowSegment_type;
extern entity* IfcFlowSegmentType_type;
extern entity* IfcFlowStorageDevice_type;
extern entity* IfcFlowStorageDeviceType_type;
extern entity* IfcFlowTerminal_type;
extern entity* IfcFlowTerminalType_type;
extern entity* IfcFlowTreatmentDevice_type;
extern entity* IfcFlowTreatmentDeviceType_type;
extern entity* IfcFooting_type;
extern entity* IfcFootingType_type;
extern entity* IfcFurnishingElement_type;
extern entity* IfcFurnishingElementType_type;
extern entity* IfcFurniture_type;
extern entity* IfcFurnitureType_type;
extern entity* IfcGeographicElement_type;
extern entity* IfcGeographicElementType_type;
extern entity* IfcGeometricCurveSet_type;
extern entity* IfcGeometricRepresentationContext_type;
extern entity* IfcGeometricRepresentationItem_type;
extern entity* IfcGeometricRepresentationSubContext_type;
extern entity* IfcGeometricSet_type;
extern entity* IfcGrid_type;
extern entity* IfcGridAxis_type;
extern entity* IfcGridPlacement_type;
extern entity* IfcGroup_type;
extern entity* IfcHalfSpaceSolid_type;
extern entity* IfcHeatExchanger_type;
extern entity* IfcHeatExchangerType_type;
extern entity* IfcHumidifier_type;
extern entity* IfcHumidifierType_type;
extern entity* IfcIShapeProfileDef_type;
extern entity* IfcImageTexture_type;
extern entity* IfcIndexedColourMap_type;
extern entity* IfcIndexedPolyCurve_type;
extern entity* IfcIndexedPolygonalFace_type;
extern entity* IfcIndexedPolygonalFaceWithVoids_type;
extern entity* IfcIndexedTextureMap_type;
extern entity* IfcIndexedTriangleTextureMap_type;
extern entity* IfcInterceptor_type;
extern entity* IfcInterceptorType_type;
extern entity* IfcIntersectionCurve_type;
extern entity* IfcInventory_type;
extern entity* IfcIrregularTimeSeries_type;
extern entity* IfcIrregularTimeSeriesValue_type;
extern entity* IfcJunctionBox_type;
extern entity* IfcJunctionBoxType_type;
extern entity* IfcLShapeProfileDef_type;
extern entity* IfcLaborResource_type;
extern entity* IfcLaborResourceType_type;
extern entity* IfcLagTime_type;
extern entity* IfcLamp_type;
extern entity* IfcLampType_type;
extern entity* IfcLibraryInformation_type;
extern entity* IfcLibraryReference_type;
extern entity* IfcLightDistributionData_type;
extern entity* IfcLightFixture_type;
extern entity* IfcLightFixtureType_type;
extern entity* IfcLightIntensityDistribution_type;
extern entity* IfcLightSource_type;
extern entity* IfcLightSourceAmbient_type;
extern entity* IfcLightSourceDirectional_type;
extern entity* IfcLightSourceGoniometric_type;
extern entity* IfcLightSourcePositional_type;
extern entity* IfcLightSourceSpot_type;
extern entity* IfcLine_type;
extern entity* IfcLocalPlacement_type;
extern entity* IfcLoop_type;
extern entity* IfcManifoldSolidBrep_type;
extern entity* IfcMapConversion_type;
extern entity* IfcMappedItem_type;
extern entity* IfcMaterial_type;
extern entity* IfcMaterialClassificationRelationship_type;
extern entity* IfcMaterialConstituent_type;
extern entity* IfcMaterialConstituentSet_type;
extern entity* IfcMaterialDefinition_type;
extern entity* IfcMaterialDefinitionRepresentation_type;
extern entity* IfcMaterialLayer_type;
extern entity* IfcMaterialLayerSet_type;
extern entity* IfcMaterialLayerSetUsage_type;
extern entity* IfcMaterialLayerWithOffsets_type;
extern entity* IfcMaterialList_type;
extern entity* IfcMaterialProfile_type;
extern entity* IfcMaterialProfileSet_type;
extern entity* IfcMaterialProfileSetUsage_type;
extern entity* IfcMaterialProfileSetUsageTapering_type;
extern entity* IfcMaterialProfileWithOffsets_type;
extern entity* IfcMaterialProperties_type;
extern entity* IfcMaterialRelationship_type;
extern entity* IfcMaterialUsageDefinition_type;
extern entity* IfcMeasureWithUnit_type;
extern entity* IfcMechanicalFastener_type;
extern entity* IfcMechanicalFastenerType_type;
extern entity* IfcMedicalDevice_type;
extern entity* IfcMedicalDeviceType_type;
extern entity* IfcMember_type;
extern entity* IfcMemberStandardCase_type;
extern entity* IfcMemberType_type;
extern entity* IfcMetric_type;
extern entity* IfcMirroredProfileDef_type;
extern entity* IfcMonetaryUnit_type;
extern entity* IfcMotorConnection_type;
extern entity* IfcMotorConnectionType_type;
extern entity* IfcNamedUnit_type;
extern entity* IfcObject_type;
extern entity* IfcObjectDefinition_type;
extern entity* IfcObjectPlacement_type;
extern entity* IfcObjective_type;
extern entity* IfcOccupant_type;
extern entity* IfcOffsetCurve2D_type;
extern entity* IfcOffsetCurve3D_type;
extern entity* IfcOpenShell_type;
extern entity* IfcOpeningElement_type;
extern entity* IfcOpeningStandardCase_type;
extern entity* IfcOrganization_type;
extern entity* IfcOrganizationRelationship_type;
extern entity* IfcOrientedEdge_type;
extern entity* IfcOuterBoundaryCurve_type;
extern entity* IfcOutlet_type;
extern entity* IfcOutletType_type;
extern entity* IfcOwnerHistory_type;
extern entity* IfcParameterizedProfileDef_type;
extern entity* IfcPath_type;
extern entity* IfcPcurve_type;
extern entity* IfcPerformanceHistory_type;
extern entity* IfcPermeableCoveringProperties_type;
extern entity* IfcPermit_type;
extern entity* IfcPerson_type;
extern entity* IfcPersonAndOrganization_type;
extern entity* IfcPhysicalComplexQuantity_type;
extern entity* IfcPhysicalQuantity_type;
extern entity* IfcPhysicalSimpleQuantity_type;
extern entity* IfcPile_type;
extern entity* IfcPileType_type;
extern entity* IfcPipeFitting_type;
extern entity* IfcPipeFittingType_type;
extern entity* IfcPipeSegment_type;
extern entity* IfcPipeSegmentType_type;
extern entity* IfcPixelTexture_type;
extern entity* IfcPlacement_type;
extern entity* IfcPlanarBox_type;
extern entity* IfcPlanarExtent_type;
extern entity* IfcPlane_type;
extern entity* IfcPlate_type;
extern entity* IfcPlateStandardCase_type;
extern entity* IfcPlateType_type;
extern entity* IfcPoint_type;
extern entity* IfcPointOnCurve_type;
extern entity* IfcPointOnSurface_type;
extern entity* IfcPolyLoop_type;
extern entity* IfcPolygonalBoundedHalfSpace_type;
extern entity* IfcPolygonalFaceSet_type;
extern entity* IfcPolyline_type;
extern entity* IfcPort_type;
extern entity* IfcPostalAddress_type;
extern entity* IfcPreDefinedColour_type;
extern entity* IfcPreDefinedCurveFont_type;
extern entity* IfcPreDefinedItem_type;
extern entity* IfcPreDefinedProperties_type;
extern entity* IfcPreDefinedPropertySet_type;
extern entity* IfcPreDefinedTextFont_type;
extern entity* IfcPresentationItem_type;
extern entity* IfcPresentationLayerAssignment_type;
extern entity* IfcPresentationLayerWithStyle_type;
extern entity* IfcPresentationStyle_type;
extern entity* IfcPresentationStyleAssignment_type;
extern entity* IfcProcedure_type;
extern entity* IfcProcedureType_type;
extern entity* IfcProcess_type;
extern entity* IfcProduct_type;
extern entity* IfcProductDefinitionShape_type;
extern entity* IfcProductRepresentation_type;
extern entity* IfcProfileDef_type;
extern entity* IfcProfileProperties_type;
extern entity* IfcProject_type;
extern entity* IfcProjectLibrary_type;
extern entity* IfcProjectOrder_type;
extern entity* IfcProjectedCRS_type;
extern entity* IfcProjectionElement_type;
extern entity* IfcProperty_type;
extern entity* IfcPropertyAbstraction_type;
extern entity* IfcPropertyBoundedValue_type;
extern entity* IfcPropertyDefinition_type;
extern entity* IfcPropertyDependencyRelationship_type;
extern entity* IfcPropertyEnumeratedValue_type;
extern entity* IfcPropertyEnumeration_type;
extern entity* IfcPropertyListValue_type;
extern entity* IfcPropertyReferenceValue_type;
extern entity* IfcPropertySet_type;
extern entity* IfcPropertySetDefinition_type;
extern entity* IfcPropertySetTemplate_type;
extern entity* IfcPropertySingleValue_type;
extern entity* IfcPropertyTableValue_type;
extern entity* IfcPropertyTemplate_type;
extern entity* IfcPropertyTemplateDefinition_type;
extern entity* IfcProtectiveDevice_type;
extern entity* IfcProtectiveDeviceTrippingUnit_type;
extern entity* IfcProtectiveDeviceTrippingUnitType_type;
extern entity* IfcProtectiveDeviceType_type;
extern entity* IfcProxy_type;
extern entity* IfcPump_type;
extern entity* IfcPumpType_type;
extern entity* IfcQuantityArea_type;
extern entity* IfcQuantityCount_type;
extern entity* IfcQuantityLength_type;
extern entity* IfcQuantitySet_type;
extern entity* IfcQuantityTime_type;
extern entity* IfcQuantityVolume_type;
extern entity* IfcQuantityWeight_type;
extern entity* IfcRailing_type;
extern entity* IfcRailingType_type;
extern entity* IfcRamp_type;
extern entity* IfcRampFlight_type;
extern entity* IfcRampFlightType_type;
extern entity* IfcRampType_type;
extern entity* IfcRationalBSplineCurveWithKnots_type;
extern entity* IfcRationalBSplineSurfaceWithKnots_type;
extern entity* IfcRectangleHollowProfileDef_type;
extern entity* IfcRectangleProfileDef_type;
extern entity* IfcRectangularPyramid_type;
extern entity* IfcRectangularTrimmedSurface_type;
extern entity* IfcRecurrencePattern_type;
extern entity* IfcReference_type;
extern entity* IfcRegularTimeSeries_type;
extern entity* IfcReinforcementBarProperties_type;
extern entity* IfcReinforcementDefinitionProperties_type;
extern entity* IfcReinforcingBar_type;
extern entity* IfcReinforcingBarType_type;
extern entity* IfcReinforcingElement_type;
extern entity* IfcReinforcingElementType_type;
extern entity* IfcReinforcingMesh_type;
extern entity* IfcReinforcingMeshType_type;
extern entity* IfcRelAggregates_type;
extern entity* IfcRelAssigns_type;
extern entity* IfcRelAssignsToActor_type;
extern entity* IfcRelAssignsToControl_type;
extern entity* IfcRelAssignsToGroup_type;
extern entity* IfcRelAssignsToGroupByFactor_type;
extern entity* IfcRelAssignsToProcess_type;
extern entity* IfcRelAssignsToProduct_type;
extern entity* IfcRelAssignsToResource_type;
extern entity* IfcRelAssociates_type;
extern entity* IfcRelAssociatesApproval_type;
extern entity* IfcRelAssociatesClassification_type;
extern entity* IfcRelAssociatesConstraint_type;
extern entity* IfcRelAssociatesDocument_type;
extern entity* IfcRelAssociatesLibrary_type;
extern entity* IfcRelAssociatesMaterial_type;
extern entity* IfcRelConnects_type;
extern entity* IfcRelConnectsElements_type;
extern entity* IfcRelConnectsPathElements_type;
extern entity* IfcRelConnectsPortToElement_type;
extern entity* IfcRelConnectsPorts_type;
extern entity* IfcRelConnectsStructuralActivity_type;
extern entity* IfcRelConnectsStructuralMember_type;
extern entity* IfcRelConnectsWithEccentricity_type;
extern entity* IfcRelConnectsWithRealizingElements_type;
extern entity* IfcRelContainedInSpatialStructure_type;
extern entity* IfcRelCoversBldgElements_type;
extern entity* IfcRelCoversSpaces_type;
extern entity* IfcRelDeclares_type;
extern entity* IfcRelDecomposes_type;
extern entity* IfcRelDefines_type;
extern entity* IfcRelDefinesByObject_type;
extern entity* IfcRelDefinesByProperties_type;
extern entity* IfcRelDefinesByTemplate_type;
extern entity* IfcRelDefinesByType_type;
extern entity* IfcRelFillsElement_type;
extern entity* IfcRelFlowControlElements_type;
extern entity* IfcRelInterferesElements_type;
extern entity* IfcRelNests_type;
extern entity* IfcRelProjectsElement_type;
extern entity* IfcRelReferencedInSpatialStructure_type;
extern entity* IfcRelSequence_type;
extern entity* IfcRelServicesBuildings_type;
extern entity* IfcRelSpaceBoundary_type;
extern entity* IfcRelSpaceBoundary1stLevel_type;
extern entity* IfcRelSpaceBoundary2ndLevel_type;
extern entity* IfcRelVoidsElement_type;
extern entity* IfcRelationship_type;
extern entity* IfcReparametrisedCompositeCurveSegment_type;
extern entity* IfcRepresentation_type;
extern entity* IfcRepresentationContext_type;
extern entity* IfcRepresentationItem_type;
extern entity* IfcRepresentationMap_type;
extern entity* IfcResource_type;
extern entity* IfcResourceApprovalRelationship_type;
extern entity* IfcResourceConstraintRelationship_type;
extern entity* IfcResourceLevelRelationship_type;
extern entity* IfcResourceTime_type;
extern entity* IfcRevolvedAreaSolid_type;
extern entity* IfcRevolvedAreaSolidTapered_type;
extern entity* IfcRightCircularCone_type;
extern entity* IfcRightCircularCylinder_type;
extern entity* IfcRoof_type;
extern entity* IfcRoofType_type;
extern entity* IfcRoot_type;
extern entity* IfcRoundedRectangleProfileDef_type;
extern entity* IfcSIUnit_type;
extern entity* IfcSanitaryTerminal_type;
extern entity* IfcSanitaryTerminalType_type;
extern entity* IfcSchedulingTime_type;
extern entity* IfcSeamCurve_type;
extern entity* IfcSectionProperties_type;
extern entity* IfcSectionReinforcementProperties_type;
extern entity* IfcSectionedSpine_type;
extern entity* IfcSensor_type;
extern entity* IfcSensorType_type;
extern entity* IfcShadingDevice_type;
extern entity* IfcShadingDeviceType_type;
extern entity* IfcShapeAspect_type;
extern entity* IfcShapeModel_type;
extern entity* IfcShapeRepresentation_type;
extern entity* IfcShellBasedSurfaceModel_type;
extern entity* IfcSimpleProperty_type;
extern entity* IfcSimplePropertyTemplate_type;
extern entity* IfcSite_type;
extern entity* IfcSlab_type;
extern entity* IfcSlabElementedCase_type;
extern entity* IfcSlabStandardCase_type;
extern entity* IfcSlabType_type;
extern entity* IfcSlippageConnectionCondition_type;
extern entity* IfcSolarDevice_type;
extern entity* IfcSolarDeviceType_type;
extern entity* IfcSolidModel_type;
extern entity* IfcSpace_type;
extern entity* IfcSpaceHeater_type;
extern entity* IfcSpaceHeaterType_type;
extern entity* IfcSpaceType_type;
extern entity* IfcSpatialElement_type;
extern entity* IfcSpatialElementType_type;
extern entity* IfcSpatialStructureElement_type;
extern entity* IfcSpatialStructureElementType_type;
extern entity* IfcSpatialZone_type;
extern entity* IfcSpatialZoneType_type;
extern entity* IfcSphere_type;
extern entity* IfcSphericalSurface_type;
extern entity* IfcStackTerminal_type;
extern entity* IfcStackTerminalType_type;
extern entity* IfcStair_type;
extern entity* IfcStairFlight_type;
extern entity* IfcStairFlightType_type;
extern entity* IfcStairType_type;
extern entity* IfcStructuralAction_type;
extern entity* IfcStructuralActivity_type;
extern entity* IfcStructuralAnalysisModel_type;
extern entity* IfcStructuralConnection_type;
extern entity* IfcStructuralConnectionCondition_type;
extern entity* IfcStructuralCurveAction_type;
extern entity* IfcStructuralCurveConnection_type;
extern entity* IfcStructuralCurveMember_type;
extern entity* IfcStructuralCurveMemberVarying_type;
extern entity* IfcStructuralCurveReaction_type;
extern entity* IfcStructuralItem_type;
extern entity* IfcStructuralLinearAction_type;
extern entity* IfcStructuralLoad_type;
extern entity* IfcStructuralLoadCase_type;
extern entity* IfcStructuralLoadConfiguration_type;
extern entity* IfcStructuralLoadGroup_type;
extern entity* IfcStructuralLoadLinearForce_type;
extern entity* IfcStructuralLoadOrResult_type;
extern entity* IfcStructuralLoadPlanarForce_type;
extern entity* IfcStructuralLoadSingleDisplacement_type;
extern entity* IfcStructuralLoadSingleDisplacementDistortion_type;
extern entity* IfcStructuralLoadSingleForce_type;
extern entity* IfcStructuralLoadSingleForceWarping_type;
extern entity* IfcStructuralLoadStatic_type;
extern entity* IfcStructuralLoadTemperature_type;
extern entity* IfcStructuralMember_type;
extern entity* IfcStructuralPlanarAction_type;
extern entity* IfcStructuralPointAction_type;
extern entity* IfcStructuralPointConnection_type;
extern entity* IfcStructuralPointReaction_type;
extern entity* IfcStructuralReaction_type;
extern entity* IfcStructuralResultGroup_type;
extern entity* IfcStructuralSurfaceAction_type;
extern entity* IfcStructuralSurfaceConnection_type;
extern entity* IfcStructuralSurfaceMember_type;
extern entity* IfcStructuralSurfaceMemberVarying_type;
extern entity* IfcStructuralSurfaceReaction_type;
extern entity* IfcStyleModel_type;
extern entity* IfcStyledItem_type;
extern entity* IfcStyledRepresentation_type;
extern entity* IfcSubContractResource_type;
extern entity* IfcSubContractResourceType_type;
extern entity* IfcSubedge_type;
extern entity* IfcSurface_type;
extern entity* IfcSurfaceCurve_type;
extern entity* IfcSurfaceCurveSweptAreaSolid_type;
extern entity* IfcSurfaceFeature_type;
extern entity* IfcSurfaceOfLinearExtrusion_type;
extern entity* IfcSurfaceOfRevolution_type;
extern entity* IfcSurfaceReinforcementArea_type;
extern entity* IfcSurfaceStyle_type;
extern entity* IfcSurfaceStyleLighting_type;
extern entity* IfcSurfaceStyleRefraction_type;
extern entity* IfcSurfaceStyleRendering_type;
extern entity* IfcSurfaceStyleShading_type;
extern entity* IfcSurfaceStyleWithTextures_type;
extern entity* IfcSurfaceTexture_type;
extern entity* IfcSweptAreaSolid_type;
extern entity* IfcSweptDiskSolid_type;
extern entity* IfcSweptDiskSolidPolygonal_type;
extern entity* IfcSweptSurface_type;
extern entity* IfcSwitchingDevice_type;
extern entity* IfcSwitchingDeviceType_type;
extern entity* IfcSystem_type;
extern entity* IfcSystemFurnitureElement_type;
extern entity* IfcSystemFurnitureElementType_type;
extern entity* IfcTShapeProfileDef_type;
extern entity* IfcTable_type;
extern entity* IfcTableColumn_type;
extern entity* IfcTableRow_type;
extern entity* IfcTank_type;
extern entity* IfcTankType_type;
extern entity* IfcTask_type;
extern entity* IfcTaskTime_type;
extern entity* IfcTaskTimeRecurring_type;
extern entity* IfcTaskType_type;
extern entity* IfcTelecomAddress_type;
extern entity* IfcTendon_type;
extern entity* IfcTendonAnchor_type;
extern entity* IfcTendonAnchorType_type;
extern entity* IfcTendonType_type;
extern entity* IfcTessellatedFaceSet_type;
extern entity* IfcTessellatedItem_type;
extern entity* IfcTextLiteral_type;
extern entity* IfcTextLiteralWithExtent_type;
extern entity* IfcTextStyle_type;
extern entity* IfcTextStyleFontModel_type;
extern entity* IfcTextStyleForDefinedFont_type;
extern entity* IfcTextStyleTextModel_type;
extern entity* IfcTextureCoordinate_type;
extern entity* IfcTextureCoordinateGenerator_type;
extern entity* IfcTextureMap_type;
extern entity* IfcTextureVertex_type;
extern entity* IfcTextureVertexList_type;
extern entity* IfcTimePeriod_type;
extern entity* IfcTimeSeries_type;
extern entity* IfcTimeSeriesValue_type;
extern entity* IfcTopologicalRepresentationItem_type;
extern entity* IfcTopologyRepresentation_type;
extern entity* IfcToroidalSurface_type;
extern entity* IfcTransformer_type;
extern entity* IfcTransformerType_type;
extern entity* IfcTransportElement_type;
extern entity* IfcTransportElementType_type;
extern entity* IfcTrapeziumProfileDef_type;
extern entity* IfcTriangulatedFaceSet_type;
extern entity* IfcTrimmedCurve_type;
extern entity* IfcTubeBundle_type;
extern entity* IfcTubeBundleType_type;
extern entity* IfcTypeObject_type;
extern entity* IfcTypeProcess_type;
extern entity* IfcTypeProduct_type;
extern entity* IfcTypeResource_type;
extern entity* IfcUShapeProfileDef_type;
extern entity* IfcUnitAssignment_type;
extern entity* IfcUnitaryControlElement_type;
extern entity* IfcUnitaryControlElementType_type;
extern entity* IfcUnitaryEquipment_type;
extern entity* IfcUnitaryEquipmentType_type;
extern entity* IfcValve_type;
extern entity* IfcValveType_type;
extern entity* IfcVector_type;
extern entity* IfcVertex_type;
extern entity* IfcVertexLoop_type;
extern entity* IfcVertexPoint_type;
extern entity* IfcVibrationIsolator_type;
extern entity* IfcVibrationIsolatorType_type;
extern entity* IfcVirtualElement_type;
extern entity* IfcVirtualGridIntersection_type;
extern entity* IfcVoidingFeature_type;
extern entity* IfcWall_type;
extern entity* IfcWallElementedCase_type;
extern entity* IfcWallStandardCase_type;
extern entity* IfcWallType_type;
extern entity* IfcWasteTerminal_type;
extern entity* IfcWasteTerminalType_type;
extern entity* IfcWindow_type;
extern entity* IfcWindowLiningProperties_type;
extern entity* IfcWindowPanelProperties_type;
extern entity* IfcWindowStandardCase_type;
extern entity* IfcWindowStyle_type;
extern entity* IfcWindowType_type;
extern entity* IfcWorkCalendar_type;
extern entity* IfcWorkControl_type;
extern entity* IfcWorkPlan_type;
extern entity* IfcWorkSchedule_type;
extern entity* IfcWorkTime_type;
extern entity* IfcZShapeProfileDef_type;
extern entity* IfcZone_type;
extern type_declaration* IfcAbsorbedDoseMeasure_type;
extern type_declaration* IfcAccelerationMeasure_type;
extern type_declaration* IfcAmountOfSubstanceMeasure_type;
extern type_declaration* IfcAngularVelocityMeasure_type;
extern type_declaration* IfcArcIndex_type;
extern type_declaration* IfcAreaDensityMeasure_type;
extern type_declaration* IfcAreaMeasure_type;
extern type_declaration* IfcBinary_type;
extern type_declaration* IfcBoolean_type;
extern type_declaration* IfcBoxAlignment_type;
extern type_declaration* IfcCardinalPointReference_type;
extern type_declaration* IfcComplexNumber_type;
extern type_declaration* IfcCompoundPlaneAngleMeasure_type;
extern type_declaration* IfcContextDependentMeasure_type;
extern type_declaration* IfcCountMeasure_type;
extern type_declaration* IfcCurvatureMeasure_type;
extern type_declaration* IfcDate_type;
extern type_declaration* IfcDateTime_type;
extern type_declaration* IfcDayInMonthNumber_type;
extern type_declaration* IfcDayInWeekNumber_type;
extern type_declaration* IfcDescriptiveMeasure_type;
extern type_declaration* IfcDimensionCount_type;
extern type_declaration* IfcDoseEquivalentMeasure_type;
extern type_declaration* IfcDuration_type;
extern type_declaration* IfcDynamicViscosityMeasure_type;
extern type_declaration* IfcElectricCapacitanceMeasure_type;
extern type_declaration* IfcElectricChargeMeasure_type;
extern type_declaration* IfcElectricConductanceMeasure_type;
extern type_declaration* IfcElectricCurrentMeasure_type;
extern type_declaration* IfcElectricResistanceMeasure_type;
extern type_declaration* IfcElectricVoltageMeasure_type;
extern type_declaration* IfcEnergyMeasure_type;
extern type_declaration* IfcFontStyle_type;
extern type_declaration* IfcFontVariant_type;
extern type_declaration* IfcFontWeight_type;
extern type_declaration* IfcForceMeasure_type;
extern type_declaration* IfcFrequencyMeasure_type;
extern type_declaration* IfcGloballyUniqueId_type;
extern type_declaration* IfcHeatFluxDensityMeasure_type;
extern type_declaration* IfcHeatingValueMeasure_type;
extern type_declaration* IfcIdentifier_type;
extern type_declaration* IfcIlluminanceMeasure_type;
extern type_declaration* IfcInductanceMeasure_type;
extern type_declaration* IfcInteger_type;
extern type_declaration* IfcIntegerCountRateMeasure_type;
extern type_declaration* IfcIonConcentrationMeasure_type;
extern type_declaration* IfcIsothermalMoistureCapacityMeasure_type;
extern type_declaration* IfcKinematicViscosityMeasure_type;
extern type_declaration* IfcLabel_type;
extern type_declaration* IfcLanguageId_type;
extern type_declaration* IfcLengthMeasure_type;
extern type_declaration* IfcLineIndex_type;
extern type_declaration* IfcLinearForceMeasure_type;
extern type_declaration* IfcLinearMomentMeasure_type;
extern type_declaration* IfcLinearStiffnessMeasure_type;
extern type_declaration* IfcLinearVelocityMeasure_type;
extern type_declaration* IfcLogical_type;
extern type_declaration* IfcLuminousFluxMeasure_type;
extern type_declaration* IfcLuminousIntensityDistributionMeasure_type;
extern type_declaration* IfcLuminousIntensityMeasure_type;
extern type_declaration* IfcMagneticFluxDensityMeasure_type;
extern type_declaration* IfcMagneticFluxMeasure_type;
extern type_declaration* IfcMassDensityMeasure_type;
extern type_declaration* IfcMassFlowRateMeasure_type;
extern type_declaration* IfcMassMeasure_type;
extern type_declaration* IfcMassPerLengthMeasure_type;
extern type_declaration* IfcModulusOfElasticityMeasure_type;
extern type_declaration* IfcModulusOfLinearSubgradeReactionMeasure_type;
extern type_declaration* IfcModulusOfRotationalSubgradeReactionMeasure_type;
extern type_declaration* IfcModulusOfSubgradeReactionMeasure_type;
extern type_declaration* IfcMoistureDiffusivityMeasure_type;
extern type_declaration* IfcMolecularWeightMeasure_type;
extern type_declaration* IfcMomentOfInertiaMeasure_type;
extern type_declaration* IfcMonetaryMeasure_type;
extern type_declaration* IfcMonthInYearNumber_type;
extern type_declaration* IfcNonNegativeLengthMeasure_type;
extern type_declaration* IfcNormalisedRatioMeasure_type;
extern type_declaration* IfcNumericMeasure_type;
extern type_declaration* IfcPHMeasure_type;
extern type_declaration* IfcParameterValue_type;
extern type_declaration* IfcPlanarForceMeasure_type;
extern type_declaration* IfcPlaneAngleMeasure_type;
extern type_declaration* IfcPositiveInteger_type;
extern type_declaration* IfcPositiveLengthMeasure_type;
extern type_declaration* IfcPositivePlaneAngleMeasure_type;
extern type_declaration* IfcPositiveRatioMeasure_type;
extern type_declaration* IfcPowerMeasure_type;
extern type_declaration* IfcPresentableText_type;
extern type_declaration* IfcPressureMeasure_type;
extern type_declaration* IfcPropertySetDefinitionSet_type;
extern type_declaration* IfcRadioActivityMeasure_type;
extern type_declaration* IfcRatioMeasure_type;
extern type_declaration* IfcReal_type;
extern type_declaration* IfcRotationalFrequencyMeasure_type;
extern type_declaration* IfcRotationalMassMeasure_type;
extern type_declaration* IfcRotationalStiffnessMeasure_type;
extern type_declaration* IfcSectionModulusMeasure_type;
extern type_declaration* IfcSectionalAreaIntegralMeasure_type;
extern type_declaration* IfcShearModulusMeasure_type;
extern type_declaration* IfcSolidAngleMeasure_type;
extern type_declaration* IfcSoundPowerLevelMeasure_type;
extern type_declaration* IfcSoundPowerMeasure_type;
extern type_declaration* IfcSoundPressureLevelMeasure_type;
extern type_declaration* IfcSoundPressureMeasure_type;
extern type_declaration* IfcSpecificHeatCapacityMeasure_type;
extern type_declaration* IfcSpecularExponent_type;
extern type_declaration* IfcSpecularRoughness_type;
extern type_declaration* IfcStrippedOptional_type;
extern type_declaration* IfcTemperatureGradientMeasure_type;
extern type_declaration* IfcTemperatureRateOfChangeMeasure_type;
extern type_declaration* IfcText_type;
extern type_declaration* IfcTextAlignment_type;
extern type_declaration* IfcTextDecoration_type;
extern type_declaration* IfcTextFontName_type;
extern type_declaration* IfcTextTransformation_type;
extern type_declaration* IfcThermalAdmittanceMeasure_type;
extern type_declaration* IfcThermalConductivityMeasure_type;
extern type_declaration* IfcThermalExpansionCoefficientMeasure_type;
extern type_declaration* IfcThermalResistanceMeasure_type;
extern type_declaration* IfcThermalTransmittanceMeasure_type;
extern type_declaration* IfcThermodynamicTemperatureMeasure_type;
extern type_declaration* IfcTime_type;
extern type_declaration* IfcTimeMeasure_type;
extern type_declaration* IfcTimeStamp_type;
extern type_declaration* IfcTorqueMeasure_type;
extern type_declaration* IfcURIReference_type;
extern type_declaration* IfcVaporPermeabilityMeasure_type;
extern type_declaration* IfcVolumeMeasure_type;
extern type_declaration* IfcVolumetricFlowRateMeasure_type;
extern type_declaration* IfcWarpingConstantMeasure_type;
extern type_declaration* IfcWarpingMomentMeasure_type;

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

std::string Type::ToString(Enum v) {
    if (v < 0 || v >= 1174) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "IfcAbsorbedDoseMeasure", "IfcAccelerationMeasure", "IfcActionRequest", "IfcActionRequestTypeEnum", "IfcActionSourceTypeEnum", "IfcActionTypeEnum", "IfcActor", "IfcActorRole", "IfcActorSelect", "IfcActuator", "IfcActuatorType", "IfcActuatorTypeEnum", "IfcAddress", "IfcAddressTypeEnum", "IfcAdvancedBrep", "IfcAdvancedBrepWithVoids", "IfcAdvancedFace", "IfcAirTerminal", "IfcAirTerminalBox", "IfcAirTerminalBoxType", "IfcAirTerminalBoxTypeEnum", "IfcAirTerminalType", "IfcAirTerminalTypeEnum", "IfcAirToAirHeatRecovery", "IfcAirToAirHeatRecoveryType", "IfcAirToAirHeatRecoveryTypeEnum", "IfcAlarm", "IfcAlarmType", "IfcAlarmTypeEnum", "IfcAmountOfSubstanceMeasure", "IfcAnalysisModelTypeEnum", "IfcAnalysisTheoryTypeEnum", "IfcAngularVelocityMeasure", "IfcAnnotation", "IfcAnnotationFillArea", "IfcApplication", "IfcAppliedValue", "IfcAppliedValueSelect", "IfcApproval", "IfcApprovalRelationship", "IfcArbitraryClosedProfileDef", "IfcArbitraryOpenProfileDef", "IfcArbitraryProfileDefWithVoids", "IfcArcIndex", "IfcAreaDensityMeasure", "IfcAreaMeasure", "IfcArithmeticOperatorEnum", "IfcAssemblyPlaceEnum", "IfcAsset", "IfcAsymmetricIShapeProfileDef", "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType", "IfcAudioVisualApplianceTypeEnum", "IfcAxis1Placement", "IfcAxis2Placement", "IfcAxis2Placement2D", "IfcAxis2Placement3D", "IfcBeam", "IfcBeamStandardCase", "IfcBeamType", "IfcBeamTypeEnum", "IfcBenchmarkEnum", "IfcBendingParameterSelect", "IfcBinary", "IfcBlobTexture", "IfcBlock", "IfcBoiler", "IfcBoilerType", "IfcBoilerTypeEnum", "IfcBoolean", "IfcBooleanClippingResult", "IfcBooleanOperand", "IfcBooleanOperator", "IfcBooleanResult", "IfcBoundaryCondition", "IfcBoundaryCurve", "IfcBoundaryEdgeCondition", "IfcBoundaryFaceCondition", "IfcBoundaryNodeCondition", "IfcBoundaryNodeConditionWarping", "IfcBoundedCurve", "IfcBoundedSurface", "IfcBoundingBox", "IfcBoxAlignment", "IfcBoxedHalfSpace", "IfcBSplineCurve", "IfcBSplineCurveForm", "IfcBSplineCurveWithKnots", "IfcBSplineSurface", "IfcBSplineSurfaceForm", "IfcBSplineSurfaceWithKnots", "IfcBuilding", "IfcBuildingElement", "IfcBuildingElementPart", "IfcBuildingElementPartType", "IfcBuildingElementPartTypeEnum", "IfcBuildingElementProxy", "IfcBuildingElementProxyType", "IfcBuildingElementProxyTypeEnum", "IfcBuildingElementType", "IfcBuildingStorey", "IfcBuildingSystem", "IfcBuildingSystemTypeEnum", "IfcBurner", "IfcBurnerType", "IfcBurnerTypeEnum", "IfcCableCarrierFitting", "IfcCableCarrierFittingType", "IfcCableCarrierFittingTypeEnum", "IfcCableCarrierSegment", "IfcCableCarrierSegmentType", "IfcCableCarrierSegmentTypeEnum", "IfcCableFitting", "IfcCableFittingType", "IfcCableFittingTypeEnum", "IfcCableSegment", "IfcCableSegmentType", "IfcCableSegmentTypeEnum", "IfcCardinalPointReference", "IfcCartesianPoint", "IfcCartesianPointList", "IfcCartesianPointList2D", "IfcCartesianPointList3D", "IfcCartesianTransformationOperator", "IfcCartesianTransformationOperator2D", "IfcCartesianTransformationOperator2DnonUniform", "IfcCartesianTransformationOperator3D", "IfcCartesianTransformationOperator3DnonUniform", "IfcCenterLineProfileDef", "IfcChangeActionEnum", "IfcChiller", "IfcChillerType", "IfcChillerTypeEnum", "IfcChimney", "IfcChimneyType", "IfcChimneyTypeEnum", "IfcCircle", "IfcCircleHollowProfileDef", "IfcCircleProfileDef", "IfcCivilElement", "IfcCivilElementType", "IfcClassification", "IfcClassificationReference", "IfcClassificationReferenceSelect", "IfcClassificationSelect", "IfcClosedShell", "IfcCoil", "IfcCoilType", "IfcCoilTypeEnum", "IfcColour", "IfcColourOrFactor", "IfcColourRgb", "IfcColourRgbList", "IfcColourSpecification", "IfcColumn", "IfcColumnStandardCase", "IfcColumnType", "IfcColumnTypeEnum", "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType", "IfcCommunicationsApplianceTypeEnum", "IfcComplexNumber", "IfcComplexProperty", "IfcComplexPropertyTemplate", "IfcComplexPropertyTemplateTypeEnum", "IfcCompositeCurve", "IfcCompositeCurveOnSurface", "IfcCompositeCurveSegment", "IfcCompositeProfileDef", "IfcCompoundPlaneAngleMeasure", "IfcCompressor", "IfcCompressorType", "IfcCompressorTypeEnum", "IfcCondenser", "IfcCondenserType", "IfcCondenserTypeEnum", "IfcConic", "IfcConnectedFaceSet", "IfcConnectionCurveGeometry", "IfcConnectionGeometry", "IfcConnectionPointEccentricity", "IfcConnectionPointGeometry", "IfcConnectionSurfaceGeometry", "IfcConnectionTypeEnum", "IfcConnectionVolumeGeometry", "IfcConstraint", "IfcConstraintEnum", "IfcConstructionEquipmentResource", "IfcConstructionEquipmentResourceType", "IfcConstructionEquipmentResourceTypeEnum", "IfcConstructionMaterialResource", "IfcConstructionMaterialResourceType", "IfcConstructionMaterialResourceTypeEnum", "IfcConstructionProductResource", "IfcConstructionProductResourceType", "IfcConstructionProductResourceTypeEnum", "IfcConstructionResource", "IfcConstructionResourceType", "IfcContext", "IfcContextDependentMeasure", "IfcContextDependentUnit", "IfcControl", "IfcController", "IfcControllerType", "IfcControllerTypeEnum", "IfcConversionBasedUnit", "IfcConversionBasedUnitWithOffset", "IfcCooledBeam", "IfcCooledBeamType", "IfcCooledBeamTypeEnum", "IfcCoolingTower", "IfcCoolingTowerType", "IfcCoolingTowerTypeEnum", "IfcCoordinateOperation", "IfcCoordinateReferenceSystem", "IfcCoordinateReferenceSystemSelect", "IfcCostItem", "IfcCostItemTypeEnum", "IfcCostSchedule", "IfcCostScheduleTypeEnum", "IfcCostValue", "IfcCountMeasure", "IfcCovering", "IfcCoveringType", "IfcCoveringTypeEnum", "IfcCrewResource", "IfcCrewResourceType", "IfcCrewResourceTypeEnum", "IfcCsgPrimitive3D", "IfcCsgSelect", "IfcCsgSolid", "IfcCShapeProfileDef", "IfcCurrencyRelationship", "IfcCurtainWall", "IfcCurtainWallType", "IfcCurtainWallTypeEnum", "IfcCurvatureMeasure", "IfcCurve", "IfcCurveBoundedPlane", "IfcCurveBoundedSurface", "IfcCurveFontOrScaledCurveFontSelect", "IfcCurveInterpolationEnum", "IfcCurveOnSurface", "IfcCurveOrEdgeCurve", "IfcCurveStyle", "IfcCurveStyleFont", "IfcCurveStyleFontAndScaling", "IfcCurveStyleFontPattern", "IfcCurveStyleFontSelect", "IfcCylindricalSurface", "IfcDamper", "IfcDamperType", "IfcDamperTypeEnum", "IfcDataOriginEnum", "IfcDate", "IfcDateTime", "IfcDayInMonthNumber", "IfcDayInWeekNumber", "IfcDefinitionSelect", "IfcDerivedMeasureValue", "IfcDerivedProfileDef", "IfcDerivedUnit", "IfcDerivedUnitElement", "IfcDerivedUnitEnum", "IfcDescriptiveMeasure", "IfcDimensionalExponents", "IfcDimensionCount", "IfcDirection", "IfcDirectionSenseEnum", "IfcDiscreteAccessory", "IfcDiscreteAccessoryType", "IfcDiscreteAccessoryTypeEnum", "IfcDistributionChamberElement", "IfcDistributionChamberElementType", "IfcDistributionChamberElementTypeEnum", "IfcDistributionCircuit", "IfcDistributionControlElement", "IfcDistributionControlElementType", "IfcDistributionElement", "IfcDistributionElementType", "IfcDistributionFlowElement", "IfcDistributionFlowElementType", "IfcDistributionPort", "IfcDistributionPortTypeEnum", "IfcDistributionSystem", "IfcDistributionSystemEnum", "IfcDocumentConfidentialityEnum", "IfcDocumentInformation", "IfcDocumentInformationRelationship", "IfcDocumentReference", "IfcDocumentSelect", "IfcDocumentStatusEnum", "IfcDoor", "IfcDoorLiningProperties", "IfcDoorPanelOperationEnum", "IfcDoorPanelPositionEnum", "IfcDoorPanelProperties", "IfcDoorStandardCase", "IfcDoorStyle", "IfcDoorStyleConstructionEnum", "IfcDoorStyleOperationEnum", "IfcDoorType", "IfcDoorTypeEnum", "IfcDoorTypeOperationEnum", "IfcDoseEquivalentMeasure", "IfcDraughtingPreDefinedColour", "IfcDraughtingPreDefinedCurveFont", "IfcDuctFitting", "IfcDuctFittingType", "IfcDuctFittingTypeEnum", "IfcDuctSegment", "IfcDuctSegmentType", "IfcDuctSegmentTypeEnum", "IfcDuctSilencer", "IfcDuctSilencerType", "IfcDuctSilencerTypeEnum", "IfcDuration", "IfcDynamicViscosityMeasure", "IfcEdge", "IfcEdgeCurve", "IfcEdgeLoop", "IfcElectricAppliance", "IfcElectricApplianceType", "IfcElectricApplianceTypeEnum", "IfcElectricCapacitanceMeasure", "IfcElectricChargeMeasure", "IfcElectricConductanceMeasure", "IfcElectricCurrentMeasure", "IfcElectricDistributionBoard", "IfcElectricDistributionBoardType", "IfcElectricDistributionBoardTypeEnum", "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType", "IfcElectricFlowStorageDeviceTypeEnum", "IfcElectricGenerator", "IfcElectricGeneratorType", "IfcElectricGeneratorTypeEnum", "IfcElectricMotor", "IfcElectricMotorType", "IfcElectricMotorTypeEnum", "IfcElectricResistanceMeasure", "IfcElectricTimeControl", "IfcElectricTimeControlType", "IfcElectricTimeControlTypeEnum", "IfcElectricVoltageMeasure", "IfcElement", "IfcElementarySurface", "IfcElementAssembly", "IfcElementAssemblyType", "IfcElementAssemblyTypeEnum", "IfcElementComponent", "IfcElementComponentType", "IfcElementCompositionEnum", "IfcElementQuantity", "IfcElementType", "IfcEllipse", "IfcEllipseProfileDef", "IfcEnergyConversionDevice", "IfcEnergyConversionDeviceType", "IfcEnergyMeasure", "IfcEngine", "IfcEngineType", "IfcEngineTypeEnum", "IfcEvaporativeCooler", "IfcEvaporativeCoolerType", "IfcEvaporativeCoolerTypeEnum", "IfcEvaporator", "IfcEvaporatorType", "IfcEvaporatorTypeEnum", "IfcEvent", "IfcEventTime", "IfcEventTriggerTypeEnum", "IfcEventType", "IfcEventTypeEnum", "IfcExtendedProperties", "IfcExternalInformation", "IfcExternallyDefinedHatchStyle", "IfcExternallyDefinedSurfaceStyle", "IfcExternallyDefinedTextFont", "IfcExternalReference", "IfcExternalReferenceRelationship", "IfcExternalSpatialElement", "IfcExternalSpatialElementTypeEnum", "IfcExternalSpatialStructureElement", "IfcExtrudedAreaSolid", "IfcExtrudedAreaSolidTapered", "IfcFace", "IfcFaceBasedSurfaceModel", "IfcFaceBound", "IfcFaceOuterBound", "IfcFaceSurface", "IfcFacetedBrep", "IfcFacetedBrepWithVoids", "IfcFailureConnectionCondition", "IfcFan", "IfcFanType", "IfcFanTypeEnum", "IfcFastener", "IfcFastenerType", "IfcFastenerTypeEnum", "IfcFeatureElement", "IfcFeatureElementAddition", "IfcFeatureElementSubtraction", "IfcFillAreaStyle", "IfcFillAreaStyleHatching", "IfcFillAreaStyleTiles", "IfcFillStyleSelect", "IfcFilter", "IfcFilterType", "IfcFilterTypeEnum", "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType", "IfcFireSuppressionTerminalTypeEnum", "IfcFixedReferenceSweptAreaSolid", "IfcFlowController", "IfcFlowControllerType", "IfcFlowDirectionEnum", "IfcFlowFitting", "IfcFlowFittingType", "IfcFlowInstrument", "IfcFlowInstrumentType", "IfcFlowInstrumentTypeEnum", "IfcFlowMeter", "IfcFlowMeterType", "IfcFlowMeterTypeEnum", "IfcFlowMovingDevice", "IfcFlowMovingDeviceType", "IfcFlowSegment", "IfcFlowSegmentType", "IfcFlowStorageDevice", "IfcFlowStorageDeviceType", "IfcFlowTerminal", "IfcFlowTerminalType", "IfcFlowTreatmentDevice", "IfcFlowTreatmentDeviceType", "IfcFontStyle", "IfcFontVariant", "IfcFontWeight", "IfcFooting", "IfcFootingType", "IfcFootingTypeEnum", "IfcForceMeasure", "IfcFrequencyMeasure", "IfcFurnishingElement", "IfcFurnishingElementType", "IfcFurniture", "IfcFurnitureType", "IfcFurnitureTypeEnum", "IfcGeographicElement", "IfcGeographicElementType", "IfcGeographicElementTypeEnum", "IfcGeometricCurveSet", "IfcGeometricProjectionEnum", "IfcGeometricRepresentationContext", "IfcGeometricRepresentationItem", "IfcGeometricRepresentationSubContext", "IfcGeometricSet", "IfcGeometricSetSelect", "IfcGloballyUniqueId", "IfcGlobalOrLocalEnum", "IfcGrid", "IfcGridAxis", "IfcGridPlacement", "IfcGridPlacementDirectionSelect", "IfcGridTypeEnum", "IfcGroup", "IfcHalfSpaceSolid", "IfcHatchLineDistanceSelect", "IfcHeatExchanger", "IfcHeatExchangerType", "IfcHeatExchangerTypeEnum", "IfcHeatFluxDensityMeasure", "IfcHeatingValueMeasure", "IfcHumidifier", "IfcHumidifierType", "IfcHumidifierTypeEnum", "IfcIdentifier", "IfcIlluminanceMeasure", "IfcImageTexture", "IfcIndexedColourMap", "IfcIndexedPolyCurve", "IfcIndexedPolygonalFace", "IfcIndexedPolygonalFaceWithVoids", "IfcIndexedTextureMap", "IfcIndexedTriangleTextureMap", "IfcInductanceMeasure", "IfcInteger", "IfcIntegerCountRateMeasure", "IfcInterceptor", "IfcInterceptorType", "IfcInterceptorTypeEnum", "IfcInternalOrExternalEnum", "IfcIntersectionCurve", "IfcInventory", "IfcInventoryTypeEnum", "IfcIonConcentrationMeasure", "IfcIrregularTimeSeries", "IfcIrregularTimeSeriesValue", "IfcIShapeProfileDef", "IfcIsothermalMoistureCapacityMeasure", "IfcJunctionBox", "IfcJunctionBoxType", "IfcJunctionBoxTypeEnum", "IfcKinematicViscosityMeasure", "IfcKnotType", "IfcLabel", "IfcLaborResource", "IfcLaborResourceType", "IfcLaborResourceTypeEnum", "IfcLagTime", "IfcLamp", "IfcLampType", "IfcLampTypeEnum", "IfcLanguageId", "IfcLayeredItem", "IfcLayerSetDirectionEnum", "IfcLengthMeasure", "IfcLibraryInformation", "IfcLibraryReference", "IfcLibrarySelect", "IfcLightDistributionCurveEnum", "IfcLightDistributionData", "IfcLightDistributionDataSourceSelect", "IfcLightEmissionSourceEnum", "IfcLightFixture", "IfcLightFixtureType", "IfcLightFixtureTypeEnum", "IfcLightIntensityDistribution", "IfcLightSource", "IfcLightSourceAmbient", "IfcLightSourceDirectional", "IfcLightSourceGoniometric", "IfcLightSourcePositional", "IfcLightSourceSpot", "IfcLine", "IfcLinearForceMeasure", "IfcLinearMomentMeasure", "IfcLinearStiffnessMeasure", "IfcLinearVelocityMeasure", "IfcLineIndex", "IfcLoadGroupTypeEnum", "IfcLocalPlacement", "IfcLogical", "IfcLogicalOperatorEnum", "IfcLoop", "IfcLShapeProfileDef", "IfcLuminousFluxMeasure", "IfcLuminousIntensityDistributionMeasure", "IfcLuminousIntensityMeasure", "IfcMagneticFluxDensityMeasure", "IfcMagneticFluxMeasure", "IfcManifoldSolidBrep", "IfcMapConversion", "IfcMappedItem", "IfcMassDensityMeasure", "IfcMassFlowRateMeasure", "IfcMassMeasure", "IfcMassPerLengthMeasure", "IfcMaterial", "IfcMaterialClassificationRelationship", "IfcMaterialConstituent", "IfcMaterialConstituentSet", "IfcMaterialDefinition", "IfcMaterialDefinitionRepresentation", "IfcMaterialLayer", "IfcMaterialLayerSet", "IfcMaterialLayerSetUsage", "IfcMaterialLayerWithOffsets", "IfcMaterialList", "IfcMaterialProfile", "IfcMaterialProfileSet", "IfcMaterialProfileSetUsage", "IfcMaterialProfileSetUsageTapering", "IfcMaterialProfileWithOffsets", "IfcMaterialProperties", "IfcMaterialRelationship", "IfcMaterialSelect", "IfcMaterialUsageDefinition", "IfcMeasureValue", "IfcMeasureWithUnit", "IfcMechanicalFastener", "IfcMechanicalFastenerType", "IfcMechanicalFastenerTypeEnum", "IfcMedicalDevice", "IfcMedicalDeviceType", "IfcMedicalDeviceTypeEnum", "IfcMember", "IfcMemberStandardCase", "IfcMemberType", "IfcMemberTypeEnum", "IfcMetric", "IfcMetricValueSelect", "IfcMirroredProfileDef", "IfcModulusOfElasticityMeasure", "IfcModulusOfLinearSubgradeReactionMeasure", "IfcModulusOfRotationalSubgradeReactionMeasure", "IfcModulusOfRotationalSubgradeReactionSelect", "IfcModulusOfSubgradeReactionMeasure", "IfcModulusOfSubgradeReactionSelect", "IfcModulusOfTranslationalSubgradeReactionSelect", "IfcMoistureDiffusivityMeasure", "IfcMolecularWeightMeasure", "IfcMomentOfInertiaMeasure", "IfcMonetaryMeasure", "IfcMonetaryUnit", "IfcMonthInYearNumber", "IfcMotorConnection", "IfcMotorConnectionType", "IfcMotorConnectionTypeEnum", "IfcNamedUnit", "IfcNonNegativeLengthMeasure", "IfcNormalisedRatioMeasure", "IfcNullStyle", "IfcNumericMeasure", "IfcObject", "IfcObjectDefinition", "IfcObjective", "IfcObjectiveEnum", "IfcObjectPlacement", "IfcObjectReferenceSelect", "IfcObjectTypeEnum", "IfcOccupant", "IfcOccupantTypeEnum", "IfcOffsetCurve2D", "IfcOffsetCurve3D", "IfcOpeningElement", "IfcOpeningElementTypeEnum", "IfcOpeningStandardCase", "IfcOpenShell", "IfcOrganization", "IfcOrganizationRelationship", "IfcOrientedEdge", "IfcOuterBoundaryCurve", "IfcOutlet", "IfcOutletType", "IfcOutletTypeEnum", "IfcOwnerHistory", "IfcParameterizedProfileDef", "IfcParameterValue", "IfcPath", "IfcPcurve", "IfcPerformanceHistory", "IfcPerformanceHistoryTypeEnum", "IfcPermeableCoveringOperationEnum", "IfcPermeableCoveringProperties", "IfcPermit", "IfcPermitTypeEnum", "IfcPerson", "IfcPersonAndOrganization", "IfcPHMeasure", "IfcPhysicalComplexQuantity", "IfcPhysicalOrVirtualEnum", "IfcPhysicalQuantity", "IfcPhysicalSimpleQuantity", "IfcPile", "IfcPileConstructionEnum", "IfcPileType", "IfcPileTypeEnum", "IfcPipeFitting", "IfcPipeFittingType", "IfcPipeFittingTypeEnum", "IfcPipeSegment", "IfcPipeSegmentType", "IfcPipeSegmentTypeEnum", "IfcPixelTexture", "IfcPlacement", "IfcPlanarBox", "IfcPlanarExtent", "IfcPlanarForceMeasure", "IfcPlane", "IfcPlaneAngleMeasure", "IfcPlate", "IfcPlateStandardCase", "IfcPlateType", "IfcPlateTypeEnum", "IfcPoint", "IfcPointOnCurve", "IfcPointOnSurface", "IfcPointOrVertexPoint", "IfcPolygonalBoundedHalfSpace", "IfcPolygonalFaceSet", "IfcPolyline", "IfcPolyLoop", "IfcPort", "IfcPositiveInteger", "IfcPositiveLengthMeasure", "IfcPositivePlaneAngleMeasure", "IfcPositiveRatioMeasure", "IfcPostalAddress", "IfcPowerMeasure", "IfcPreDefinedColour", "IfcPreDefinedCurveFont", "IfcPreDefinedItem", "IfcPreDefinedProperties", "IfcPreDefinedPropertySet", "IfcPreDefinedTextFont", "IfcPreferredSurfaceCurveRepresentation", "IfcPresentableText", "IfcPresentationItem", "IfcPresentationLayerAssignment", "IfcPresentationLayerWithStyle", "IfcPresentationStyle", "IfcPresentationStyleAssignment", "IfcPresentationStyleSelect", "IfcPressureMeasure", "IfcProcedure", "IfcProcedureType", "IfcProcedureTypeEnum", "IfcProcess", "IfcProcessSelect", "IfcProduct", "IfcProductDefinitionShape", "IfcProductRepresentation", "IfcProductRepresentationSelect", "IfcProductSelect", "IfcProfileDef", "IfcProfileProperties", "IfcProfileTypeEnum", "IfcProject", "IfcProjectedCRS", "IfcProjectedOrTrueLengthEnum", "IfcProjectionElement", "IfcProjectionElementTypeEnum", "IfcProjectLibrary", "IfcProjectOrder", "IfcProjectOrderTypeEnum", "IfcProperty", "IfcPropertyAbstraction", "IfcPropertyBoundedValue", "IfcPropertyDefinition", "IfcPropertyDependencyRelationship", "IfcPropertyEnumeratedValue", "IfcPropertyEnumeration", "IfcPropertyListValue", "IfcPropertyReferenceValue", "IfcPropertySet", "IfcPropertySetDefinition", "IfcPropertySetDefinitionSelect", "IfcPropertySetDefinitionSet", "IfcPropertySetTemplate", "IfcPropertySetTemplateTypeEnum", "IfcPropertySingleValue", "IfcPropertyTableValue", "IfcPropertyTemplate", "IfcPropertyTemplateDefinition", "IfcProtectiveDevice", "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType", "IfcProtectiveDeviceTrippingUnitTypeEnum", "IfcProtectiveDeviceType", "IfcProtectiveDeviceTypeEnum", "IfcProxy", "IfcPump", "IfcPumpType", "IfcPumpTypeEnum", "IfcQuantityArea", "IfcQuantityCount", "IfcQuantityLength", "IfcQuantitySet", "IfcQuantityTime", "IfcQuantityVolume", "IfcQuantityWeight", "IfcRadioActivityMeasure", "IfcRailing", "IfcRailingType", "IfcRailingTypeEnum", "IfcRamp", "IfcRampFlight", "IfcRampFlightType", "IfcRampFlightTypeEnum", "IfcRampType", "IfcRampTypeEnum", "IfcRatioMeasure", "IfcRationalBSplineCurveWithKnots", "IfcRationalBSplineSurfaceWithKnots", "IfcReal", "IfcRectangleHollowProfileDef", "IfcRectangleProfileDef", "IfcRectangularPyramid", "IfcRectangularTrimmedSurface", "IfcRecurrencePattern", "IfcRecurrenceTypeEnum", "IfcReference", "IfcReflectanceMethodEnum", "IfcRegularTimeSeries", "IfcReinforcementBarProperties", "IfcReinforcementDefinitionProperties", "IfcReinforcingBar", "IfcReinforcingBarRoleEnum", "IfcReinforcingBarSurfaceEnum", "IfcReinforcingBarType", "IfcReinforcingBarTypeEnum", "IfcReinforcingElement", "IfcReinforcingElementType", "IfcReinforcingMesh", "IfcReinforcingMeshType", "IfcReinforcingMeshTypeEnum", "IfcRelAggregates", "IfcRelAssigns", "IfcRelAssignsToActor", "IfcRelAssignsToControl", "IfcRelAssignsToGroup", "IfcRelAssignsToGroupByFactor", "IfcRelAssignsToProcess", "IfcRelAssignsToProduct", "IfcRelAssignsToResource", "IfcRelAssociates", "IfcRelAssociatesApproval", "IfcRelAssociatesClassification", "IfcRelAssociatesConstraint", "IfcRelAssociatesDocument", "IfcRelAssociatesLibrary", "IfcRelAssociatesMaterial", "IfcRelationship", "IfcRelConnects", "IfcRelConnectsElements", "IfcRelConnectsPathElements", "IfcRelConnectsPorts", "IfcRelConnectsPortToElement", "IfcRelConnectsStructuralActivity", "IfcRelConnectsStructuralMember", "IfcRelConnectsWithEccentricity", "IfcRelConnectsWithRealizingElements", "IfcRelContainedInSpatialStructure", "IfcRelCoversBldgElements", "IfcRelCoversSpaces", "IfcRelDeclares", "IfcRelDecomposes", "IfcRelDefines", "IfcRelDefinesByObject", "IfcRelDefinesByProperties", "IfcRelDefinesByTemplate", "IfcRelDefinesByType", "IfcRelFillsElement", "IfcRelFlowControlElements", "IfcRelInterferesElements", "IfcRelNests", "IfcRelProjectsElement", "IfcRelReferencedInSpatialStructure", "IfcRelSequence", "IfcRelServicesBuildings", "IfcRelSpaceBoundary", "IfcRelSpaceBoundary1stLevel", "IfcRelSpaceBoundary2ndLevel", "IfcRelVoidsElement", "IfcReparametrisedCompositeCurveSegment", "IfcRepresentation", "IfcRepresentationContext", "IfcRepresentationItem", "IfcRepresentationMap", "IfcResource", "IfcResourceApprovalRelationship", "IfcResourceConstraintRelationship", "IfcResourceLevelRelationship", "IfcResourceObjectSelect", "IfcResourceSelect", "IfcResourceTime", "IfcRevolvedAreaSolid", "IfcRevolvedAreaSolidTapered", "IfcRightCircularCone", "IfcRightCircularCylinder", "IfcRoleEnum", "IfcRoof", "IfcRoofType", "IfcRoofTypeEnum", "IfcRoot", "IfcRotationalFrequencyMeasure", "IfcRotationalMassMeasure", "IfcRotationalStiffnessMeasure", "IfcRotationalStiffnessSelect", "IfcRoundedRectangleProfileDef", "IfcSanitaryTerminal", "IfcSanitaryTerminalType", "IfcSanitaryTerminalTypeEnum", "IfcSchedulingTime", "IfcSeamCurve", "IfcSectionalAreaIntegralMeasure", "IfcSectionedSpine", "IfcSectionModulusMeasure", "IfcSectionProperties", "IfcSectionReinforcementProperties", "IfcSectionTypeEnum", "IfcSegmentIndexSelect", "IfcSensor", "IfcSensorType", "IfcSensorTypeEnum", "IfcSequenceEnum", "IfcShadingDevice", "IfcShadingDeviceType", "IfcShadingDeviceTypeEnum", "IfcShapeAspect", "IfcShapeModel", "IfcShapeRepresentation", "IfcShearModulusMeasure", "IfcShell", "IfcShellBasedSurfaceModel", "IfcSimpleProperty", "IfcSimplePropertyTemplate", "IfcSimplePropertyTemplateTypeEnum", "IfcSimpleValue", "IfcSIPrefix", "IfcSite", "IfcSIUnit", "IfcSIUnitName", "IfcSizeSelect", "IfcSlab", "IfcSlabElementedCase", "IfcSlabStandardCase", "IfcSlabType", "IfcSlabTypeEnum", "IfcSlippageConnectionCondition", "IfcSolarDevice", "IfcSolarDeviceType", "IfcSolarDeviceTypeEnum", "IfcSolidAngleMeasure", "IfcSolidModel", "IfcSolidOrShell", "IfcSoundPowerLevelMeasure", "IfcSoundPowerMeasure", "IfcSoundPressureLevelMeasure", "IfcSoundPressureMeasure", "IfcSpace", "IfcSpaceBoundarySelect", "IfcSpaceHeater", "IfcSpaceHeaterType", "IfcSpaceHeaterTypeEnum", "IfcSpaceType", "IfcSpaceTypeEnum", "IfcSpatialElement", "IfcSpatialElementType", "IfcSpatialStructureElement", "IfcSpatialStructureElementType", "IfcSpatialZone", "IfcSpatialZoneType", "IfcSpatialZoneTypeEnum", "IfcSpecificHeatCapacityMeasure", "IfcSpecularExponent", "IfcSpecularHighlightSelect", "IfcSpecularRoughness", "IfcSphere", "IfcSphericalSurface", "IfcStackTerminal", "IfcStackTerminalType", "IfcStackTerminalTypeEnum", "IfcStair", "IfcStairFlight", "IfcStairFlightType", "IfcStairFlightTypeEnum", "IfcStairType", "IfcStairTypeEnum", "IfcStateEnum", "IfcStrippedOptional", "IfcStructuralAction", "IfcStructuralActivity", "IfcStructuralActivityAssignmentSelect", "IfcStructuralAnalysisModel", "IfcStructuralConnection", "IfcStructuralConnectionCondition", "IfcStructuralCurveAction", "IfcStructuralCurveActivityTypeEnum", "IfcStructuralCurveConnection", "IfcStructuralCurveMember", "IfcStructuralCurveMemberTypeEnum", "IfcStructuralCurveMemberVarying", "IfcStructuralCurveReaction", "IfcStructuralItem", "IfcStructuralLinearAction", "IfcStructuralLoad", "IfcStructuralLoadCase", "IfcStructuralLoadConfiguration", "IfcStructuralLoadGroup", "IfcStructuralLoadLinearForce", "IfcStructuralLoadOrResult", "IfcStructuralLoadPlanarForce", "IfcStructuralLoadSingleDisplacement", "IfcStructuralLoadSingleDisplacementDistortion", "IfcStructuralLoadSingleForce", "IfcStructuralLoadSingleForceWarping", "IfcStructuralLoadStatic", "IfcStructuralLoadTemperature", "IfcStructuralMember", "IfcStructuralPlanarAction", "IfcStructuralPointAction", "IfcStructuralPointConnection", "IfcStructuralPointReaction", "IfcStructuralReaction", "IfcStructuralResultGroup", "IfcStructuralSurfaceAction", "IfcStructuralSurfaceActivityTypeEnum", "IfcStructuralSurfaceConnection", "IfcStructuralSurfaceMember", "IfcStructuralSurfaceMemberTypeEnum", "IfcStructuralSurfaceMemberVarying", "IfcStructuralSurfaceReaction", "IfcStyleAssignmentSelect", "IfcStyledItem", "IfcStyledRepresentation", "IfcStyleModel", "IfcSubContractResource", "IfcSubContractResourceType", "IfcSubContractResourceTypeEnum", "IfcSubedge", "IfcSurface", "IfcSurfaceCurve", "IfcSurfaceCurveSweptAreaSolid", "IfcSurfaceFeature", "IfcSurfaceFeatureTypeEnum", "IfcSurfaceOfLinearExtrusion", "IfcSurfaceOfRevolution", "IfcSurfaceOrFaceSurface", "IfcSurfaceReinforcementArea", "IfcSurfaceSide", "IfcSurfaceStyle", "IfcSurfaceStyleElementSelect", "IfcSurfaceStyleLighting", "IfcSurfaceStyleRefraction", "IfcSurfaceStyleRendering", "IfcSurfaceStyleShading", "IfcSurfaceStyleWithTextures", "IfcSurfaceTexture", "IfcSweptAreaSolid", "IfcSweptDiskSolid", "IfcSweptDiskSolidPolygonal", "IfcSweptSurface", "IfcSwitchingDevice", "IfcSwitchingDeviceType", "IfcSwitchingDeviceTypeEnum", "IfcSystem", "IfcSystemFurnitureElement", "IfcSystemFurnitureElementType", "IfcSystemFurnitureElementTypeEnum", "IfcTable", "IfcTableColumn", "IfcTableRow", "IfcTank", "IfcTankType", "IfcTankTypeEnum", "IfcTask", "IfcTaskDurationEnum", "IfcTaskTime", "IfcTaskTimeRecurring", "IfcTaskType", "IfcTaskTypeEnum", "IfcTelecomAddress", "IfcTemperatureGradientMeasure", "IfcTemperatureRateOfChangeMeasure", "IfcTendon", "IfcTendonAnchor", "IfcTendonAnchorType", "IfcTendonAnchorTypeEnum", "IfcTendonType", "IfcTendonTypeEnum", "IfcTessellatedFaceSet", "IfcTessellatedItem", "IfcText", "IfcTextAlignment", "IfcTextDecoration", "IfcTextFontName", "IfcTextFontSelect", "IfcTextLiteral", "IfcTextLiteralWithExtent", "IfcTextPath", "IfcTextStyle", "IfcTextStyleFontModel", "IfcTextStyleForDefinedFont", "IfcTextStyleTextModel", "IfcTextTransformation", "IfcTextureCoordinate", "IfcTextureCoordinateGenerator", "IfcTextureMap", "IfcTextureVertex", "IfcTextureVertexList", "IfcThermalAdmittanceMeasure", "IfcThermalConductivityMeasure", "IfcThermalExpansionCoefficientMeasure", "IfcThermalResistanceMeasure", "IfcThermalTransmittanceMeasure", "IfcThermodynamicTemperatureMeasure", "IfcTime", "IfcTimeMeasure", "IfcTimeOrRatioSelect", "IfcTimePeriod", "IfcTimeSeries", "IfcTimeSeriesDataTypeEnum", "IfcTimeSeriesValue", "IfcTimeStamp", "IfcTopologicalRepresentationItem", "IfcTopologyRepresentation", "IfcToroidalSurface", "IfcTorqueMeasure", "IfcTransformer", "IfcTransformerType", "IfcTransformerTypeEnum", "IfcTransitionCode", "IfcTranslationalStiffnessSelect", "IfcTransportElement", "IfcTransportElementType", "IfcTransportElementTypeEnum", "IfcTrapeziumProfileDef", "IfcTriangulatedFaceSet", "IfcTrimmedCurve", "IfcTrimmingPreference", "IfcTrimmingSelect", "IfcTShapeProfileDef", "IfcTubeBundle", "IfcTubeBundleType", "IfcTubeBundleTypeEnum", "IfcTypeObject", "IfcTypeProcess", "IfcTypeProduct", "IfcTypeResource", "IfcUnit", "IfcUnitaryControlElement", "IfcUnitaryControlElementType", "IfcUnitaryControlElementTypeEnum", "IfcUnitaryEquipment", "IfcUnitaryEquipmentType", "IfcUnitaryEquipmentTypeEnum", "IfcUnitAssignment", "IfcUnitEnum", "IfcURIReference", "IfcUShapeProfileDef", "IfcValue", "IfcValve", "IfcValveType", "IfcValveTypeEnum", "IfcVaporPermeabilityMeasure", "IfcVector", "IfcVectorOrDirection", "IfcVertex", "IfcVertexLoop", "IfcVertexPoint", "IfcVibrationIsolator", "IfcVibrationIsolatorType", "IfcVibrationIsolatorTypeEnum", "IfcVirtualElement", "IfcVirtualGridIntersection", "IfcVoidingFeature", "IfcVoidingFeatureTypeEnum", "IfcVolumeMeasure", "IfcVolumetricFlowRateMeasure", "IfcWall", "IfcWallElementedCase", "IfcWallStandardCase", "IfcWallType", "IfcWallTypeEnum", "IfcWarpingConstantMeasure", "IfcWarpingMomentMeasure", "IfcWarpingStiffnessSelect", "IfcWasteTerminal", "IfcWasteTerminalType", "IfcWasteTerminalTypeEnum", "IfcWindow", "IfcWindowLiningProperties", "IfcWindowPanelOperationEnum", "IfcWindowPanelPositionEnum", "IfcWindowPanelProperties", "IfcWindowStandardCase", "IfcWindowStyle", "IfcWindowStyleConstructionEnum", "IfcWindowStyleOperationEnum", "IfcWindowType", "IfcWindowTypeEnum", "IfcWindowTypePartitioningEnum", "IfcWorkCalendar", "IfcWorkCalendarTypeEnum", "IfcWorkControl", "IfcWorkPlan", "IfcWorkPlanTypeEnum", "IfcWorkSchedule", "IfcWorkScheduleTypeEnum", "IfcWorkTime", "IfcZone", "IfcZShapeProfileDef" };
    return names[v];
}

static std::map<std::string,Type::Enum> string_map;
void Ifc4::InitStringMap() {
    string_map["IFCABSORBEDDOSEMEASURE"                         ] = Type::IfcAbsorbedDoseMeasure;
    string_map["IFCACCELERATIONMEASURE"                         ] = Type::IfcAccelerationMeasure;
    string_map["IFCACTIONREQUEST"                               ] = Type::IfcActionRequest;
    string_map["IFCACTIONREQUESTTYPEENUM"                       ] = Type::IfcActionRequestTypeEnum;
    string_map["IFCACTIONSOURCETYPEENUM"                        ] = Type::IfcActionSourceTypeEnum;
    string_map["IFCACTIONTYPEENUM"                              ] = Type::IfcActionTypeEnum;
    string_map["IFCACTOR"                                       ] = Type::IfcActor;
    string_map["IFCACTORROLE"                                   ] = Type::IfcActorRole;
    string_map["IFCACTORSELECT"                                 ] = Type::IfcActorSelect;
    string_map["IFCACTUATOR"                                    ] = Type::IfcActuator;
    string_map["IFCACTUATORTYPE"                                ] = Type::IfcActuatorType;
    string_map["IFCACTUATORTYPEENUM"                            ] = Type::IfcActuatorTypeEnum;
    string_map["IFCADDRESS"                                     ] = Type::IfcAddress;
    string_map["IFCADDRESSTYPEENUM"                             ] = Type::IfcAddressTypeEnum;
    string_map["IFCADVANCEDBREP"                                ] = Type::IfcAdvancedBrep;
    string_map["IFCADVANCEDBREPWITHVOIDS"                       ] = Type::IfcAdvancedBrepWithVoids;
    string_map["IFCADVANCEDFACE"                                ] = Type::IfcAdvancedFace;
    string_map["IFCAIRTERMINAL"                                 ] = Type::IfcAirTerminal;
    string_map["IFCAIRTERMINALBOX"                              ] = Type::IfcAirTerminalBox;
    string_map["IFCAIRTERMINALBOXTYPE"                          ] = Type::IfcAirTerminalBoxType;
    string_map["IFCAIRTERMINALBOXTYPEENUM"                      ] = Type::IfcAirTerminalBoxTypeEnum;
    string_map["IFCAIRTERMINALTYPE"                             ] = Type::IfcAirTerminalType;
    string_map["IFCAIRTERMINALTYPEENUM"                         ] = Type::IfcAirTerminalTypeEnum;
    string_map["IFCAIRTOAIRHEATRECOVERY"                        ] = Type::IfcAirToAirHeatRecovery;
    string_map["IFCAIRTOAIRHEATRECOVERYTYPE"                    ] = Type::IfcAirToAirHeatRecoveryType;
    string_map["IFCAIRTOAIRHEATRECOVERYTYPEENUM"                ] = Type::IfcAirToAirHeatRecoveryTypeEnum;
    string_map["IFCALARM"                                       ] = Type::IfcAlarm;
    string_map["IFCALARMTYPE"                                   ] = Type::IfcAlarmType;
    string_map["IFCALARMTYPEENUM"                               ] = Type::IfcAlarmTypeEnum;
    string_map["IFCAMOUNTOFSUBSTANCEMEASURE"                    ] = Type::IfcAmountOfSubstanceMeasure;
    string_map["IFCANALYSISMODELTYPEENUM"                       ] = Type::IfcAnalysisModelTypeEnum;
    string_map["IFCANALYSISTHEORYTYPEENUM"                      ] = Type::IfcAnalysisTheoryTypeEnum;
    string_map["IFCANGULARVELOCITYMEASURE"                      ] = Type::IfcAngularVelocityMeasure;
    string_map["IFCANNOTATION"                                  ] = Type::IfcAnnotation;
    string_map["IFCANNOTATIONFILLAREA"                          ] = Type::IfcAnnotationFillArea;
    string_map["IFCAPPLICATION"                                 ] = Type::IfcApplication;
    string_map["IFCAPPLIEDVALUE"                                ] = Type::IfcAppliedValue;
    string_map["IFCAPPLIEDVALUESELECT"                          ] = Type::IfcAppliedValueSelect;
    string_map["IFCAPPROVAL"                                    ] = Type::IfcApproval;
    string_map["IFCAPPROVALRELATIONSHIP"                        ] = Type::IfcApprovalRelationship;
    string_map["IFCARBITRARYCLOSEDPROFILEDEF"                   ] = Type::IfcArbitraryClosedProfileDef;
    string_map["IFCARBITRARYOPENPROFILEDEF"                     ] = Type::IfcArbitraryOpenProfileDef;
    string_map["IFCARBITRARYPROFILEDEFWITHVOIDS"                ] = Type::IfcArbitraryProfileDefWithVoids;
    string_map["IFCARCINDEX"                                    ] = Type::IfcArcIndex;
    string_map["IFCAREADENSITYMEASURE"                          ] = Type::IfcAreaDensityMeasure;
    string_map["IFCAREAMEASURE"                                 ] = Type::IfcAreaMeasure;
    string_map["IFCARITHMETICOPERATORENUM"                      ] = Type::IfcArithmeticOperatorEnum;
    string_map["IFCASSEMBLYPLACEENUM"                           ] = Type::IfcAssemblyPlaceEnum;
    string_map["IFCASSET"                                       ] = Type::IfcAsset;
    string_map["IFCASYMMETRICISHAPEPROFILEDEF"                  ] = Type::IfcAsymmetricIShapeProfileDef;
    string_map["IFCAUDIOVISUALAPPLIANCE"                        ] = Type::IfcAudioVisualAppliance;
    string_map["IFCAUDIOVISUALAPPLIANCETYPE"                    ] = Type::IfcAudioVisualApplianceType;
    string_map["IFCAUDIOVISUALAPPLIANCETYPEENUM"                ] = Type::IfcAudioVisualApplianceTypeEnum;
    string_map["IFCAXIS1PLACEMENT"                              ] = Type::IfcAxis1Placement;
    string_map["IFCAXIS2PLACEMENT"                              ] = Type::IfcAxis2Placement;
    string_map["IFCAXIS2PLACEMENT2D"                            ] = Type::IfcAxis2Placement2D;
    string_map["IFCAXIS2PLACEMENT3D"                            ] = Type::IfcAxis2Placement3D;
    string_map["IFCBEAM"                                        ] = Type::IfcBeam;
    string_map["IFCBEAMSTANDARDCASE"                            ] = Type::IfcBeamStandardCase;
    string_map["IFCBEAMTYPE"                                    ] = Type::IfcBeamType;
    string_map["IFCBEAMTYPEENUM"                                ] = Type::IfcBeamTypeEnum;
    string_map["IFCBENCHMARKENUM"                               ] = Type::IfcBenchmarkEnum;
    string_map["IFCBENDINGPARAMETERSELECT"                      ] = Type::IfcBendingParameterSelect;
    string_map["IFCBINARY"                                      ] = Type::IfcBinary;
    string_map["IFCBLOBTEXTURE"                                 ] = Type::IfcBlobTexture;
    string_map["IFCBLOCK"                                       ] = Type::IfcBlock;
    string_map["IFCBOILER"                                      ] = Type::IfcBoiler;
    string_map["IFCBOILERTYPE"                                  ] = Type::IfcBoilerType;
    string_map["IFCBOILERTYPEENUM"                              ] = Type::IfcBoilerTypeEnum;
    string_map["IFCBOOLEAN"                                     ] = Type::IfcBoolean;
    string_map["IFCBOOLEANCLIPPINGRESULT"                       ] = Type::IfcBooleanClippingResult;
    string_map["IFCBOOLEANOPERAND"                              ] = Type::IfcBooleanOperand;
    string_map["IFCBOOLEANOPERATOR"                             ] = Type::IfcBooleanOperator;
    string_map["IFCBOOLEANRESULT"                               ] = Type::IfcBooleanResult;
    string_map["IFCBOUNDARYCONDITION"                           ] = Type::IfcBoundaryCondition;
    string_map["IFCBOUNDARYCURVE"                               ] = Type::IfcBoundaryCurve;
    string_map["IFCBOUNDARYEDGECONDITION"                       ] = Type::IfcBoundaryEdgeCondition;
    string_map["IFCBOUNDARYFACECONDITION"                       ] = Type::IfcBoundaryFaceCondition;
    string_map["IFCBOUNDARYNODECONDITION"                       ] = Type::IfcBoundaryNodeCondition;
    string_map["IFCBOUNDARYNODECONDITIONWARPING"                ] = Type::IfcBoundaryNodeConditionWarping;
    string_map["IFCBOUNDEDCURVE"                                ] = Type::IfcBoundedCurve;
    string_map["IFCBOUNDEDSURFACE"                              ] = Type::IfcBoundedSurface;
    string_map["IFCBOUNDINGBOX"                                 ] = Type::IfcBoundingBox;
    string_map["IFCBOXALIGNMENT"                                ] = Type::IfcBoxAlignment;
    string_map["IFCBOXEDHALFSPACE"                              ] = Type::IfcBoxedHalfSpace;
    string_map["IFCBSPLINECURVE"                                ] = Type::IfcBSplineCurve;
    string_map["IFCBSPLINECURVEFORM"                            ] = Type::IfcBSplineCurveForm;
    string_map["IFCBSPLINECURVEWITHKNOTS"                       ] = Type::IfcBSplineCurveWithKnots;
    string_map["IFCBSPLINESURFACE"                              ] = Type::IfcBSplineSurface;
    string_map["IFCBSPLINESURFACEFORM"                          ] = Type::IfcBSplineSurfaceForm;
    string_map["IFCBSPLINESURFACEWITHKNOTS"                     ] = Type::IfcBSplineSurfaceWithKnots;
    string_map["IFCBUILDING"                                    ] = Type::IfcBuilding;
    string_map["IFCBUILDINGELEMENT"                             ] = Type::IfcBuildingElement;
    string_map["IFCBUILDINGELEMENTPART"                         ] = Type::IfcBuildingElementPart;
    string_map["IFCBUILDINGELEMENTPARTTYPE"                     ] = Type::IfcBuildingElementPartType;
    string_map["IFCBUILDINGELEMENTPARTTYPEENUM"                 ] = Type::IfcBuildingElementPartTypeEnum;
    string_map["IFCBUILDINGELEMENTPROXY"                        ] = Type::IfcBuildingElementProxy;
    string_map["IFCBUILDINGELEMENTPROXYTYPE"                    ] = Type::IfcBuildingElementProxyType;
    string_map["IFCBUILDINGELEMENTPROXYTYPEENUM"                ] = Type::IfcBuildingElementProxyTypeEnum;
    string_map["IFCBUILDINGELEMENTTYPE"                         ] = Type::IfcBuildingElementType;
    string_map["IFCBUILDINGSTOREY"                              ] = Type::IfcBuildingStorey;
    string_map["IFCBUILDINGSYSTEM"                              ] = Type::IfcBuildingSystem;
    string_map["IFCBUILDINGSYSTEMTYPEENUM"                      ] = Type::IfcBuildingSystemTypeEnum;
    string_map["IFCBURNER"                                      ] = Type::IfcBurner;
    string_map["IFCBURNERTYPE"                                  ] = Type::IfcBurnerType;
    string_map["IFCBURNERTYPEENUM"                              ] = Type::IfcBurnerTypeEnum;
    string_map["IFCCABLECARRIERFITTING"                         ] = Type::IfcCableCarrierFitting;
    string_map["IFCCABLECARRIERFITTINGTYPE"                     ] = Type::IfcCableCarrierFittingType;
    string_map["IFCCABLECARRIERFITTINGTYPEENUM"                 ] = Type::IfcCableCarrierFittingTypeEnum;
    string_map["IFCCABLECARRIERSEGMENT"                         ] = Type::IfcCableCarrierSegment;
    string_map["IFCCABLECARRIERSEGMENTTYPE"                     ] = Type::IfcCableCarrierSegmentType;
    string_map["IFCCABLECARRIERSEGMENTTYPEENUM"                 ] = Type::IfcCableCarrierSegmentTypeEnum;
    string_map["IFCCABLEFITTING"                                ] = Type::IfcCableFitting;
    string_map["IFCCABLEFITTINGTYPE"                            ] = Type::IfcCableFittingType;
    string_map["IFCCABLEFITTINGTYPEENUM"                        ] = Type::IfcCableFittingTypeEnum;
    string_map["IFCCABLESEGMENT"                                ] = Type::IfcCableSegment;
    string_map["IFCCABLESEGMENTTYPE"                            ] = Type::IfcCableSegmentType;
    string_map["IFCCABLESEGMENTTYPEENUM"                        ] = Type::IfcCableSegmentTypeEnum;
    string_map["IFCCARDINALPOINTREFERENCE"                      ] = Type::IfcCardinalPointReference;
    string_map["IFCCARTESIANPOINT"                              ] = Type::IfcCartesianPoint;
    string_map["IFCCARTESIANPOINTLIST"                          ] = Type::IfcCartesianPointList;
    string_map["IFCCARTESIANPOINTLIST2D"                        ] = Type::IfcCartesianPointList2D;
    string_map["IFCCARTESIANPOINTLIST3D"                        ] = Type::IfcCartesianPointList3D;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR"             ] = Type::IfcCartesianTransformationOperator;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR2D"           ] = Type::IfcCartesianTransformationOperator2D;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM" ] = Type::IfcCartesianTransformationOperator2DnonUniform;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR3D"           ] = Type::IfcCartesianTransformationOperator3D;
    string_map["IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM" ] = Type::IfcCartesianTransformationOperator3DnonUniform;
    string_map["IFCCENTERLINEPROFILEDEF"                        ] = Type::IfcCenterLineProfileDef;
    string_map["IFCCHANGEACTIONENUM"                            ] = Type::IfcChangeActionEnum;
    string_map["IFCCHILLER"                                     ] = Type::IfcChiller;
    string_map["IFCCHILLERTYPE"                                 ] = Type::IfcChillerType;
    string_map["IFCCHILLERTYPEENUM"                             ] = Type::IfcChillerTypeEnum;
    string_map["IFCCHIMNEY"                                     ] = Type::IfcChimney;
    string_map["IFCCHIMNEYTYPE"                                 ] = Type::IfcChimneyType;
    string_map["IFCCHIMNEYTYPEENUM"                             ] = Type::IfcChimneyTypeEnum;
    string_map["IFCCIRCLE"                                      ] = Type::IfcCircle;
    string_map["IFCCIRCLEHOLLOWPROFILEDEF"                      ] = Type::IfcCircleHollowProfileDef;
    string_map["IFCCIRCLEPROFILEDEF"                            ] = Type::IfcCircleProfileDef;
    string_map["IFCCIVILELEMENT"                                ] = Type::IfcCivilElement;
    string_map["IFCCIVILELEMENTTYPE"                            ] = Type::IfcCivilElementType;
    string_map["IFCCLASSIFICATION"                              ] = Type::IfcClassification;
    string_map["IFCCLASSIFICATIONREFERENCE"                     ] = Type::IfcClassificationReference;
    string_map["IFCCLASSIFICATIONREFERENCESELECT"               ] = Type::IfcClassificationReferenceSelect;
    string_map["IFCCLASSIFICATIONSELECT"                        ] = Type::IfcClassificationSelect;
    string_map["IFCCLOSEDSHELL"                                 ] = Type::IfcClosedShell;
    string_map["IFCCOIL"                                        ] = Type::IfcCoil;
    string_map["IFCCOILTYPE"                                    ] = Type::IfcCoilType;
    string_map["IFCCOILTYPEENUM"                                ] = Type::IfcCoilTypeEnum;
    string_map["IFCCOLOUR"                                      ] = Type::IfcColour;
    string_map["IFCCOLOURORFACTOR"                              ] = Type::IfcColourOrFactor;
    string_map["IFCCOLOURRGB"                                   ] = Type::IfcColourRgb;
    string_map["IFCCOLOURRGBLIST"                               ] = Type::IfcColourRgbList;
    string_map["IFCCOLOURSPECIFICATION"                         ] = Type::IfcColourSpecification;
    string_map["IFCCOLUMN"                                      ] = Type::IfcColumn;
    string_map["IFCCOLUMNSTANDARDCASE"                          ] = Type::IfcColumnStandardCase;
    string_map["IFCCOLUMNTYPE"                                  ] = Type::IfcColumnType;
    string_map["IFCCOLUMNTYPEENUM"                              ] = Type::IfcColumnTypeEnum;
    string_map["IFCCOMMUNICATIONSAPPLIANCE"                     ] = Type::IfcCommunicationsAppliance;
    string_map["IFCCOMMUNICATIONSAPPLIANCETYPE"                 ] = Type::IfcCommunicationsApplianceType;
    string_map["IFCCOMMUNICATIONSAPPLIANCETYPEENUM"             ] = Type::IfcCommunicationsApplianceTypeEnum;
    string_map["IFCCOMPLEXNUMBER"                               ] = Type::IfcComplexNumber;
    string_map["IFCCOMPLEXPROPERTY"                             ] = Type::IfcComplexProperty;
    string_map["IFCCOMPLEXPROPERTYTEMPLATE"                     ] = Type::IfcComplexPropertyTemplate;
    string_map["IFCCOMPLEXPROPERTYTEMPLATETYPEENUM"             ] = Type::IfcComplexPropertyTemplateTypeEnum;
    string_map["IFCCOMPOSITECURVE"                              ] = Type::IfcCompositeCurve;
    string_map["IFCCOMPOSITECURVEONSURFACE"                     ] = Type::IfcCompositeCurveOnSurface;
    string_map["IFCCOMPOSITECURVESEGMENT"                       ] = Type::IfcCompositeCurveSegment;
    string_map["IFCCOMPOSITEPROFILEDEF"                         ] = Type::IfcCompositeProfileDef;
    string_map["IFCCOMPOUNDPLANEANGLEMEASURE"                   ] = Type::IfcCompoundPlaneAngleMeasure;
    string_map["IFCCOMPRESSOR"                                  ] = Type::IfcCompressor;
    string_map["IFCCOMPRESSORTYPE"                              ] = Type::IfcCompressorType;
    string_map["IFCCOMPRESSORTYPEENUM"                          ] = Type::IfcCompressorTypeEnum;
    string_map["IFCCONDENSER"                                   ] = Type::IfcCondenser;
    string_map["IFCCONDENSERTYPE"                               ] = Type::IfcCondenserType;
    string_map["IFCCONDENSERTYPEENUM"                           ] = Type::IfcCondenserTypeEnum;
    string_map["IFCCONIC"                                       ] = Type::IfcConic;
    string_map["IFCCONNECTEDFACESET"                            ] = Type::IfcConnectedFaceSet;
    string_map["IFCCONNECTIONCURVEGEOMETRY"                     ] = Type::IfcConnectionCurveGeometry;
    string_map["IFCCONNECTIONGEOMETRY"                          ] = Type::IfcConnectionGeometry;
    string_map["IFCCONNECTIONPOINTECCENTRICITY"                 ] = Type::IfcConnectionPointEccentricity;
    string_map["IFCCONNECTIONPOINTGEOMETRY"                     ] = Type::IfcConnectionPointGeometry;
    string_map["IFCCONNECTIONSURFACEGEOMETRY"                   ] = Type::IfcConnectionSurfaceGeometry;
    string_map["IFCCONNECTIONTYPEENUM"                          ] = Type::IfcConnectionTypeEnum;
    string_map["IFCCONNECTIONVOLUMEGEOMETRY"                    ] = Type::IfcConnectionVolumeGeometry;
    string_map["IFCCONSTRAINT"                                  ] = Type::IfcConstraint;
    string_map["IFCCONSTRAINTENUM"                              ] = Type::IfcConstraintEnum;
    string_map["IFCCONSTRUCTIONEQUIPMENTRESOURCE"               ] = Type::IfcConstructionEquipmentResource;
    string_map["IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE"           ] = Type::IfcConstructionEquipmentResourceType;
    string_map["IFCCONSTRUCTIONEQUIPMENTRESOURCETYPEENUM"       ] = Type::IfcConstructionEquipmentResourceTypeEnum;
    string_map["IFCCONSTRUCTIONMATERIALRESOURCE"                ] = Type::IfcConstructionMaterialResource;
    string_map["IFCCONSTRUCTIONMATERIALRESOURCETYPE"            ] = Type::IfcConstructionMaterialResourceType;
    string_map["IFCCONSTRUCTIONMATERIALRESOURCETYPEENUM"        ] = Type::IfcConstructionMaterialResourceTypeEnum;
    string_map["IFCCONSTRUCTIONPRODUCTRESOURCE"                 ] = Type::IfcConstructionProductResource;
    string_map["IFCCONSTRUCTIONPRODUCTRESOURCETYPE"             ] = Type::IfcConstructionProductResourceType;
    string_map["IFCCONSTRUCTIONPRODUCTRESOURCETYPEENUM"         ] = Type::IfcConstructionProductResourceTypeEnum;
    string_map["IFCCONSTRUCTIONRESOURCE"                        ] = Type::IfcConstructionResource;
    string_map["IFCCONSTRUCTIONRESOURCETYPE"                    ] = Type::IfcConstructionResourceType;
    string_map["IFCCONTEXT"                                     ] = Type::IfcContext;
    string_map["IFCCONTEXTDEPENDENTMEASURE"                     ] = Type::IfcContextDependentMeasure;
    string_map["IFCCONTEXTDEPENDENTUNIT"                        ] = Type::IfcContextDependentUnit;
    string_map["IFCCONTROL"                                     ] = Type::IfcControl;
    string_map["IFCCONTROLLER"                                  ] = Type::IfcController;
    string_map["IFCCONTROLLERTYPE"                              ] = Type::IfcControllerType;
    string_map["IFCCONTROLLERTYPEENUM"                          ] = Type::IfcControllerTypeEnum;
    string_map["IFCCONVERSIONBASEDUNIT"                         ] = Type::IfcConversionBasedUnit;
    string_map["IFCCONVERSIONBASEDUNITWITHOFFSET"               ] = Type::IfcConversionBasedUnitWithOffset;
    string_map["IFCCOOLEDBEAM"                                  ] = Type::IfcCooledBeam;
    string_map["IFCCOOLEDBEAMTYPE"                              ] = Type::IfcCooledBeamType;
    string_map["IFCCOOLEDBEAMTYPEENUM"                          ] = Type::IfcCooledBeamTypeEnum;
    string_map["IFCCOOLINGTOWER"                                ] = Type::IfcCoolingTower;
    string_map["IFCCOOLINGTOWERTYPE"                            ] = Type::IfcCoolingTowerType;
    string_map["IFCCOOLINGTOWERTYPEENUM"                        ] = Type::IfcCoolingTowerTypeEnum;
    string_map["IFCCOORDINATEOPERATION"                         ] = Type::IfcCoordinateOperation;
    string_map["IFCCOORDINATEREFERENCESYSTEM"                   ] = Type::IfcCoordinateReferenceSystem;
    string_map["IFCCOORDINATEREFERENCESYSTEMSELECT"             ] = Type::IfcCoordinateReferenceSystemSelect;
    string_map["IFCCOSTITEM"                                    ] = Type::IfcCostItem;
    string_map["IFCCOSTITEMTYPEENUM"                            ] = Type::IfcCostItemTypeEnum;
    string_map["IFCCOSTSCHEDULE"                                ] = Type::IfcCostSchedule;
    string_map["IFCCOSTSCHEDULETYPEENUM"                        ] = Type::IfcCostScheduleTypeEnum;
    string_map["IFCCOSTVALUE"                                   ] = Type::IfcCostValue;
    string_map["IFCCOUNTMEASURE"                                ] = Type::IfcCountMeasure;
    string_map["IFCCOVERING"                                    ] = Type::IfcCovering;
    string_map["IFCCOVERINGTYPE"                                ] = Type::IfcCoveringType;
    string_map["IFCCOVERINGTYPEENUM"                            ] = Type::IfcCoveringTypeEnum;
    string_map["IFCCREWRESOURCE"                                ] = Type::IfcCrewResource;
    string_map["IFCCREWRESOURCETYPE"                            ] = Type::IfcCrewResourceType;
    string_map["IFCCREWRESOURCETYPEENUM"                        ] = Type::IfcCrewResourceTypeEnum;
    string_map["IFCCSGPRIMITIVE3D"                              ] = Type::IfcCsgPrimitive3D;
    string_map["IFCCSGSELECT"                                   ] = Type::IfcCsgSelect;
    string_map["IFCCSGSOLID"                                    ] = Type::IfcCsgSolid;
    string_map["IFCCSHAPEPROFILEDEF"                            ] = Type::IfcCShapeProfileDef;
    string_map["IFCCURRENCYRELATIONSHIP"                        ] = Type::IfcCurrencyRelationship;
    string_map["IFCCURTAINWALL"                                 ] = Type::IfcCurtainWall;
    string_map["IFCCURTAINWALLTYPE"                             ] = Type::IfcCurtainWallType;
    string_map["IFCCURTAINWALLTYPEENUM"                         ] = Type::IfcCurtainWallTypeEnum;
    string_map["IFCCURVATUREMEASURE"                            ] = Type::IfcCurvatureMeasure;
    string_map["IFCCURVE"                                       ] = Type::IfcCurve;
    string_map["IFCCURVEBOUNDEDPLANE"                           ] = Type::IfcCurveBoundedPlane;
    string_map["IFCCURVEBOUNDEDSURFACE"                         ] = Type::IfcCurveBoundedSurface;
    string_map["IFCCURVEFONTORSCALEDCURVEFONTSELECT"            ] = Type::IfcCurveFontOrScaledCurveFontSelect;
    string_map["IFCCURVEINTERPOLATIONENUM"                      ] = Type::IfcCurveInterpolationEnum;
    string_map["IFCCURVEONSURFACE"                              ] = Type::IfcCurveOnSurface;
    string_map["IFCCURVEOREDGECURVE"                            ] = Type::IfcCurveOrEdgeCurve;
    string_map["IFCCURVESTYLE"                                  ] = Type::IfcCurveStyle;
    string_map["IFCCURVESTYLEFONT"                              ] = Type::IfcCurveStyleFont;
    string_map["IFCCURVESTYLEFONTANDSCALING"                    ] = Type::IfcCurveStyleFontAndScaling;
    string_map["IFCCURVESTYLEFONTPATTERN"                       ] = Type::IfcCurveStyleFontPattern;
    string_map["IFCCURVESTYLEFONTSELECT"                        ] = Type::IfcCurveStyleFontSelect;
    string_map["IFCCYLINDRICALSURFACE"                          ] = Type::IfcCylindricalSurface;
    string_map["IFCDAMPER"                                      ] = Type::IfcDamper;
    string_map["IFCDAMPERTYPE"                                  ] = Type::IfcDamperType;
    string_map["IFCDAMPERTYPEENUM"                              ] = Type::IfcDamperTypeEnum;
    string_map["IFCDATAORIGINENUM"                              ] = Type::IfcDataOriginEnum;
    string_map["IFCDATE"                                        ] = Type::IfcDate;
    string_map["IFCDATETIME"                                    ] = Type::IfcDateTime;
    string_map["IFCDAYINMONTHNUMBER"                            ] = Type::IfcDayInMonthNumber;
    string_map["IFCDAYINWEEKNUMBER"                             ] = Type::IfcDayInWeekNumber;
    string_map["IFCDEFINITIONSELECT"                            ] = Type::IfcDefinitionSelect;
    string_map["IFCDERIVEDMEASUREVALUE"                         ] = Type::IfcDerivedMeasureValue;
    string_map["IFCDERIVEDPROFILEDEF"                           ] = Type::IfcDerivedProfileDef;
    string_map["IFCDERIVEDUNIT"                                 ] = Type::IfcDerivedUnit;
    string_map["IFCDERIVEDUNITELEMENT"                          ] = Type::IfcDerivedUnitElement;
    string_map["IFCDERIVEDUNITENUM"                             ] = Type::IfcDerivedUnitEnum;
    string_map["IFCDESCRIPTIVEMEASURE"                          ] = Type::IfcDescriptiveMeasure;
    string_map["IFCDIMENSIONALEXPONENTS"                        ] = Type::IfcDimensionalExponents;
    string_map["IFCDIMENSIONCOUNT"                              ] = Type::IfcDimensionCount;
    string_map["IFCDIRECTION"                                   ] = Type::IfcDirection;
    string_map["IFCDIRECTIONSENSEENUM"                          ] = Type::IfcDirectionSenseEnum;
    string_map["IFCDISCRETEACCESSORY"                           ] = Type::IfcDiscreteAccessory;
    string_map["IFCDISCRETEACCESSORYTYPE"                       ] = Type::IfcDiscreteAccessoryType;
    string_map["IFCDISCRETEACCESSORYTYPEENUM"                   ] = Type::IfcDiscreteAccessoryTypeEnum;
    string_map["IFCDISTRIBUTIONCHAMBERELEMENT"                  ] = Type::IfcDistributionChamberElement;
    string_map["IFCDISTRIBUTIONCHAMBERELEMENTTYPE"              ] = Type::IfcDistributionChamberElementType;
    string_map["IFCDISTRIBUTIONCHAMBERELEMENTTYPEENUM"          ] = Type::IfcDistributionChamberElementTypeEnum;
    string_map["IFCDISTRIBUTIONCIRCUIT"                         ] = Type::IfcDistributionCircuit;
    string_map["IFCDISTRIBUTIONCONTROLELEMENT"                  ] = Type::IfcDistributionControlElement;
    string_map["IFCDISTRIBUTIONCONTROLELEMENTTYPE"              ] = Type::IfcDistributionControlElementType;
    string_map["IFCDISTRIBUTIONELEMENT"                         ] = Type::IfcDistributionElement;
    string_map["IFCDISTRIBUTIONELEMENTTYPE"                     ] = Type::IfcDistributionElementType;
    string_map["IFCDISTRIBUTIONFLOWELEMENT"                     ] = Type::IfcDistributionFlowElement;
    string_map["IFCDISTRIBUTIONFLOWELEMENTTYPE"                 ] = Type::IfcDistributionFlowElementType;
    string_map["IFCDISTRIBUTIONPORT"                            ] = Type::IfcDistributionPort;
    string_map["IFCDISTRIBUTIONPORTTYPEENUM"                    ] = Type::IfcDistributionPortTypeEnum;
    string_map["IFCDISTRIBUTIONSYSTEM"                          ] = Type::IfcDistributionSystem;
    string_map["IFCDISTRIBUTIONSYSTEMENUM"                      ] = Type::IfcDistributionSystemEnum;
    string_map["IFCDOCUMENTCONFIDENTIALITYENUM"                 ] = Type::IfcDocumentConfidentialityEnum;
    string_map["IFCDOCUMENTINFORMATION"                         ] = Type::IfcDocumentInformation;
    string_map["IFCDOCUMENTINFORMATIONRELATIONSHIP"             ] = Type::IfcDocumentInformationRelationship;
    string_map["IFCDOCUMENTREFERENCE"                           ] = Type::IfcDocumentReference;
    string_map["IFCDOCUMENTSELECT"                              ] = Type::IfcDocumentSelect;
    string_map["IFCDOCUMENTSTATUSENUM"                          ] = Type::IfcDocumentStatusEnum;
    string_map["IFCDOOR"                                        ] = Type::IfcDoor;
    string_map["IFCDOORLININGPROPERTIES"                        ] = Type::IfcDoorLiningProperties;
    string_map["IFCDOORPANELOPERATIONENUM"                      ] = Type::IfcDoorPanelOperationEnum;
    string_map["IFCDOORPANELPOSITIONENUM"                       ] = Type::IfcDoorPanelPositionEnum;
    string_map["IFCDOORPANELPROPERTIES"                         ] = Type::IfcDoorPanelProperties;
    string_map["IFCDOORSTANDARDCASE"                            ] = Type::IfcDoorStandardCase;
    string_map["IFCDOORSTYLE"                                   ] = Type::IfcDoorStyle;
    string_map["IFCDOORSTYLECONSTRUCTIONENUM"                   ] = Type::IfcDoorStyleConstructionEnum;
    string_map["IFCDOORSTYLEOPERATIONENUM"                      ] = Type::IfcDoorStyleOperationEnum;
    string_map["IFCDOORTYPE"                                    ] = Type::IfcDoorType;
    string_map["IFCDOORTYPEENUM"                                ] = Type::IfcDoorTypeEnum;
    string_map["IFCDOORTYPEOPERATIONENUM"                       ] = Type::IfcDoorTypeOperationEnum;
    string_map["IFCDOSEEQUIVALENTMEASURE"                       ] = Type::IfcDoseEquivalentMeasure;
    string_map["IFCDRAUGHTINGPREDEFINEDCOLOUR"                  ] = Type::IfcDraughtingPreDefinedColour;
    string_map["IFCDRAUGHTINGPREDEFINEDCURVEFONT"               ] = Type::IfcDraughtingPreDefinedCurveFont;
    string_map["IFCDUCTFITTING"                                 ] = Type::IfcDuctFitting;
    string_map["IFCDUCTFITTINGTYPE"                             ] = Type::IfcDuctFittingType;
    string_map["IFCDUCTFITTINGTYPEENUM"                         ] = Type::IfcDuctFittingTypeEnum;
    string_map["IFCDUCTSEGMENT"                                 ] = Type::IfcDuctSegment;
    string_map["IFCDUCTSEGMENTTYPE"                             ] = Type::IfcDuctSegmentType;
    string_map["IFCDUCTSEGMENTTYPEENUM"                         ] = Type::IfcDuctSegmentTypeEnum;
    string_map["IFCDUCTSILENCER"                                ] = Type::IfcDuctSilencer;
    string_map["IFCDUCTSILENCERTYPE"                            ] = Type::IfcDuctSilencerType;
    string_map["IFCDUCTSILENCERTYPEENUM"                        ] = Type::IfcDuctSilencerTypeEnum;
    string_map["IFCDURATION"                                    ] = Type::IfcDuration;
    string_map["IFCDYNAMICVISCOSITYMEASURE"                     ] = Type::IfcDynamicViscosityMeasure;
    string_map["IFCEDGE"                                        ] = Type::IfcEdge;
    string_map["IFCEDGECURVE"                                   ] = Type::IfcEdgeCurve;
    string_map["IFCEDGELOOP"                                    ] = Type::IfcEdgeLoop;
    string_map["IFCELECTRICAPPLIANCE"                           ] = Type::IfcElectricAppliance;
    string_map["IFCELECTRICAPPLIANCETYPE"                       ] = Type::IfcElectricApplianceType;
    string_map["IFCELECTRICAPPLIANCETYPEENUM"                   ] = Type::IfcElectricApplianceTypeEnum;
    string_map["IFCELECTRICCAPACITANCEMEASURE"                  ] = Type::IfcElectricCapacitanceMeasure;
    string_map["IFCELECTRICCHARGEMEASURE"                       ] = Type::IfcElectricChargeMeasure;
    string_map["IFCELECTRICCONDUCTANCEMEASURE"                  ] = Type::IfcElectricConductanceMeasure;
    string_map["IFCELECTRICCURRENTMEASURE"                      ] = Type::IfcElectricCurrentMeasure;
    string_map["IFCELECTRICDISTRIBUTIONBOARD"                   ] = Type::IfcElectricDistributionBoard;
    string_map["IFCELECTRICDISTRIBUTIONBOARDTYPE"               ] = Type::IfcElectricDistributionBoardType;
    string_map["IFCELECTRICDISTRIBUTIONBOARDTYPEENUM"           ] = Type::IfcElectricDistributionBoardTypeEnum;
    string_map["IFCELECTRICFLOWSTORAGEDEVICE"                   ] = Type::IfcElectricFlowStorageDevice;
    string_map["IFCELECTRICFLOWSTORAGEDEVICETYPE"               ] = Type::IfcElectricFlowStorageDeviceType;
    string_map["IFCELECTRICFLOWSTORAGEDEVICETYPEENUM"           ] = Type::IfcElectricFlowStorageDeviceTypeEnum;
    string_map["IFCELECTRICGENERATOR"                           ] = Type::IfcElectricGenerator;
    string_map["IFCELECTRICGENERATORTYPE"                       ] = Type::IfcElectricGeneratorType;
    string_map["IFCELECTRICGENERATORTYPEENUM"                   ] = Type::IfcElectricGeneratorTypeEnum;
    string_map["IFCELECTRICMOTOR"                               ] = Type::IfcElectricMotor;
    string_map["IFCELECTRICMOTORTYPE"                           ] = Type::IfcElectricMotorType;
    string_map["IFCELECTRICMOTORTYPEENUM"                       ] = Type::IfcElectricMotorTypeEnum;
    string_map["IFCELECTRICRESISTANCEMEASURE"                   ] = Type::IfcElectricResistanceMeasure;
    string_map["IFCELECTRICTIMECONTROL"                         ] = Type::IfcElectricTimeControl;
    string_map["IFCELECTRICTIMECONTROLTYPE"                     ] = Type::IfcElectricTimeControlType;
    string_map["IFCELECTRICTIMECONTROLTYPEENUM"                 ] = Type::IfcElectricTimeControlTypeEnum;
    string_map["IFCELECTRICVOLTAGEMEASURE"                      ] = Type::IfcElectricVoltageMeasure;
    string_map["IFCELEMENT"                                     ] = Type::IfcElement;
    string_map["IFCELEMENTARYSURFACE"                           ] = Type::IfcElementarySurface;
    string_map["IFCELEMENTASSEMBLY"                             ] = Type::IfcElementAssembly;
    string_map["IFCELEMENTASSEMBLYTYPE"                         ] = Type::IfcElementAssemblyType;
    string_map["IFCELEMENTASSEMBLYTYPEENUM"                     ] = Type::IfcElementAssemblyTypeEnum;
    string_map["IFCELEMENTCOMPONENT"                            ] = Type::IfcElementComponent;
    string_map["IFCELEMENTCOMPONENTTYPE"                        ] = Type::IfcElementComponentType;
    string_map["IFCELEMENTCOMPOSITIONENUM"                      ] = Type::IfcElementCompositionEnum;
    string_map["IFCELEMENTQUANTITY"                             ] = Type::IfcElementQuantity;
    string_map["IFCELEMENTTYPE"                                 ] = Type::IfcElementType;
    string_map["IFCELLIPSE"                                     ] = Type::IfcEllipse;
    string_map["IFCELLIPSEPROFILEDEF"                           ] = Type::IfcEllipseProfileDef;
    string_map["IFCENERGYCONVERSIONDEVICE"                      ] = Type::IfcEnergyConversionDevice;
    string_map["IFCENERGYCONVERSIONDEVICETYPE"                  ] = Type::IfcEnergyConversionDeviceType;
    string_map["IFCENERGYMEASURE"                               ] = Type::IfcEnergyMeasure;
    string_map["IFCENGINE"                                      ] = Type::IfcEngine;
    string_map["IFCENGINETYPE"                                  ] = Type::IfcEngineType;
    string_map["IFCENGINETYPEENUM"                              ] = Type::IfcEngineTypeEnum;
    string_map["IFCEVAPORATIVECOOLER"                           ] = Type::IfcEvaporativeCooler;
    string_map["IFCEVAPORATIVECOOLERTYPE"                       ] = Type::IfcEvaporativeCoolerType;
    string_map["IFCEVAPORATIVECOOLERTYPEENUM"                   ] = Type::IfcEvaporativeCoolerTypeEnum;
    string_map["IFCEVAPORATOR"                                  ] = Type::IfcEvaporator;
    string_map["IFCEVAPORATORTYPE"                              ] = Type::IfcEvaporatorType;
    string_map["IFCEVAPORATORTYPEENUM"                          ] = Type::IfcEvaporatorTypeEnum;
    string_map["IFCEVENT"                                       ] = Type::IfcEvent;
    string_map["IFCEVENTTIME"                                   ] = Type::IfcEventTime;
    string_map["IFCEVENTTRIGGERTYPEENUM"                        ] = Type::IfcEventTriggerTypeEnum;
    string_map["IFCEVENTTYPE"                                   ] = Type::IfcEventType;
    string_map["IFCEVENTTYPEENUM"                               ] = Type::IfcEventTypeEnum;
    string_map["IFCEXTENDEDPROPERTIES"                          ] = Type::IfcExtendedProperties;
    string_map["IFCEXTERNALINFORMATION"                         ] = Type::IfcExternalInformation;
    string_map["IFCEXTERNALLYDEFINEDHATCHSTYLE"                 ] = Type::IfcExternallyDefinedHatchStyle;
    string_map["IFCEXTERNALLYDEFINEDSURFACESTYLE"               ] = Type::IfcExternallyDefinedSurfaceStyle;
    string_map["IFCEXTERNALLYDEFINEDTEXTFONT"                   ] = Type::IfcExternallyDefinedTextFont;
    string_map["IFCEXTERNALREFERENCE"                           ] = Type::IfcExternalReference;
    string_map["IFCEXTERNALREFERENCERELATIONSHIP"               ] = Type::IfcExternalReferenceRelationship;
    string_map["IFCEXTERNALSPATIALELEMENT"                      ] = Type::IfcExternalSpatialElement;
    string_map["IFCEXTERNALSPATIALELEMENTTYPEENUM"              ] = Type::IfcExternalSpatialElementTypeEnum;
    string_map["IFCEXTERNALSPATIALSTRUCTUREELEMENT"             ] = Type::IfcExternalSpatialStructureElement;
    string_map["IFCEXTRUDEDAREASOLID"                           ] = Type::IfcExtrudedAreaSolid;
    string_map["IFCEXTRUDEDAREASOLIDTAPERED"                    ] = Type::IfcExtrudedAreaSolidTapered;
    string_map["IFCFACE"                                        ] = Type::IfcFace;
    string_map["IFCFACEBASEDSURFACEMODEL"                       ] = Type::IfcFaceBasedSurfaceModel;
    string_map["IFCFACEBOUND"                                   ] = Type::IfcFaceBound;
    string_map["IFCFACEOUTERBOUND"                              ] = Type::IfcFaceOuterBound;
    string_map["IFCFACESURFACE"                                 ] = Type::IfcFaceSurface;
    string_map["IFCFACETEDBREP"                                 ] = Type::IfcFacetedBrep;
    string_map["IFCFACETEDBREPWITHVOIDS"                        ] = Type::IfcFacetedBrepWithVoids;
    string_map["IFCFAILURECONNECTIONCONDITION"                  ] = Type::IfcFailureConnectionCondition;
    string_map["IFCFAN"                                         ] = Type::IfcFan;
    string_map["IFCFANTYPE"                                     ] = Type::IfcFanType;
    string_map["IFCFANTYPEENUM"                                 ] = Type::IfcFanTypeEnum;
    string_map["IFCFASTENER"                                    ] = Type::IfcFastener;
    string_map["IFCFASTENERTYPE"                                ] = Type::IfcFastenerType;
    string_map["IFCFASTENERTYPEENUM"                            ] = Type::IfcFastenerTypeEnum;
    string_map["IFCFEATUREELEMENT"                              ] = Type::IfcFeatureElement;
    string_map["IFCFEATUREELEMENTADDITION"                      ] = Type::IfcFeatureElementAddition;
    string_map["IFCFEATUREELEMENTSUBTRACTION"                   ] = Type::IfcFeatureElementSubtraction;
    string_map["IFCFILLAREASTYLE"                               ] = Type::IfcFillAreaStyle;
    string_map["IFCFILLAREASTYLEHATCHING"                       ] = Type::IfcFillAreaStyleHatching;
    string_map["IFCFILLAREASTYLETILES"                          ] = Type::IfcFillAreaStyleTiles;
    string_map["IFCFILLSTYLESELECT"                             ] = Type::IfcFillStyleSelect;
    string_map["IFCFILTER"                                      ] = Type::IfcFilter;
    string_map["IFCFILTERTYPE"                                  ] = Type::IfcFilterType;
    string_map["IFCFILTERTYPEENUM"                              ] = Type::IfcFilterTypeEnum;
    string_map["IFCFIRESUPPRESSIONTERMINAL"                     ] = Type::IfcFireSuppressionTerminal;
    string_map["IFCFIRESUPPRESSIONTERMINALTYPE"                 ] = Type::IfcFireSuppressionTerminalType;
    string_map["IFCFIRESUPPRESSIONTERMINALTYPEENUM"             ] = Type::IfcFireSuppressionTerminalTypeEnum;
    string_map["IFCFIXEDREFERENCESWEPTAREASOLID"                ] = Type::IfcFixedReferenceSweptAreaSolid;
    string_map["IFCFLOWCONTROLLER"                              ] = Type::IfcFlowController;
    string_map["IFCFLOWCONTROLLERTYPE"                          ] = Type::IfcFlowControllerType;
    string_map["IFCFLOWDIRECTIONENUM"                           ] = Type::IfcFlowDirectionEnum;
    string_map["IFCFLOWFITTING"                                 ] = Type::IfcFlowFitting;
    string_map["IFCFLOWFITTINGTYPE"                             ] = Type::IfcFlowFittingType;
    string_map["IFCFLOWINSTRUMENT"                              ] = Type::IfcFlowInstrument;
    string_map["IFCFLOWINSTRUMENTTYPE"                          ] = Type::IfcFlowInstrumentType;
    string_map["IFCFLOWINSTRUMENTTYPEENUM"                      ] = Type::IfcFlowInstrumentTypeEnum;
    string_map["IFCFLOWMETER"                                   ] = Type::IfcFlowMeter;
    string_map["IFCFLOWMETERTYPE"                               ] = Type::IfcFlowMeterType;
    string_map["IFCFLOWMETERTYPEENUM"                           ] = Type::IfcFlowMeterTypeEnum;
    string_map["IFCFLOWMOVINGDEVICE"                            ] = Type::IfcFlowMovingDevice;
    string_map["IFCFLOWMOVINGDEVICETYPE"                        ] = Type::IfcFlowMovingDeviceType;
    string_map["IFCFLOWSEGMENT"                                 ] = Type::IfcFlowSegment;
    string_map["IFCFLOWSEGMENTTYPE"                             ] = Type::IfcFlowSegmentType;
    string_map["IFCFLOWSTORAGEDEVICE"                           ] = Type::IfcFlowStorageDevice;
    string_map["IFCFLOWSTORAGEDEVICETYPE"                       ] = Type::IfcFlowStorageDeviceType;
    string_map["IFCFLOWTERMINAL"                                ] = Type::IfcFlowTerminal;
    string_map["IFCFLOWTERMINALTYPE"                            ] = Type::IfcFlowTerminalType;
    string_map["IFCFLOWTREATMENTDEVICE"                         ] = Type::IfcFlowTreatmentDevice;
    string_map["IFCFLOWTREATMENTDEVICETYPE"                     ] = Type::IfcFlowTreatmentDeviceType;
    string_map["IFCFONTSTYLE"                                   ] = Type::IfcFontStyle;
    string_map["IFCFONTVARIANT"                                 ] = Type::IfcFontVariant;
    string_map["IFCFONTWEIGHT"                                  ] = Type::IfcFontWeight;
    string_map["IFCFOOTING"                                     ] = Type::IfcFooting;
    string_map["IFCFOOTINGTYPE"                                 ] = Type::IfcFootingType;
    string_map["IFCFOOTINGTYPEENUM"                             ] = Type::IfcFootingTypeEnum;
    string_map["IFCFORCEMEASURE"                                ] = Type::IfcForceMeasure;
    string_map["IFCFREQUENCYMEASURE"                            ] = Type::IfcFrequencyMeasure;
    string_map["IFCFURNISHINGELEMENT"                           ] = Type::IfcFurnishingElement;
    string_map["IFCFURNISHINGELEMENTTYPE"                       ] = Type::IfcFurnishingElementType;
    string_map["IFCFURNITURE"                                   ] = Type::IfcFurniture;
    string_map["IFCFURNITURETYPE"                               ] = Type::IfcFurnitureType;
    string_map["IFCFURNITURETYPEENUM"                           ] = Type::IfcFurnitureTypeEnum;
    string_map["IFCGEOGRAPHICELEMENT"                           ] = Type::IfcGeographicElement;
    string_map["IFCGEOGRAPHICELEMENTTYPE"                       ] = Type::IfcGeographicElementType;
    string_map["IFCGEOGRAPHICELEMENTTYPEENUM"                   ] = Type::IfcGeographicElementTypeEnum;
    string_map["IFCGEOMETRICCURVESET"                           ] = Type::IfcGeometricCurveSet;
    string_map["IFCGEOMETRICPROJECTIONENUM"                     ] = Type::IfcGeometricProjectionEnum;
    string_map["IFCGEOMETRICREPRESENTATIONCONTEXT"              ] = Type::IfcGeometricRepresentationContext;
    string_map["IFCGEOMETRICREPRESENTATIONITEM"                 ] = Type::IfcGeometricRepresentationItem;
    string_map["IFCGEOMETRICREPRESENTATIONSUBCONTEXT"           ] = Type::IfcGeometricRepresentationSubContext;
    string_map["IFCGEOMETRICSET"                                ] = Type::IfcGeometricSet;
    string_map["IFCGEOMETRICSETSELECT"                          ] = Type::IfcGeometricSetSelect;
    string_map["IFCGLOBALLYUNIQUEID"                            ] = Type::IfcGloballyUniqueId;
    string_map["IFCGLOBALORLOCALENUM"                           ] = Type::IfcGlobalOrLocalEnum;
    string_map["IFCGRID"                                        ] = Type::IfcGrid;
    string_map["IFCGRIDAXIS"                                    ] = Type::IfcGridAxis;
    string_map["IFCGRIDPLACEMENT"                               ] = Type::IfcGridPlacement;
    string_map["IFCGRIDPLACEMENTDIRECTIONSELECT"                ] = Type::IfcGridPlacementDirectionSelect;
    string_map["IFCGRIDTYPEENUM"                                ] = Type::IfcGridTypeEnum;
    string_map["IFCGROUP"                                       ] = Type::IfcGroup;
    string_map["IFCHALFSPACESOLID"                              ] = Type::IfcHalfSpaceSolid;
    string_map["IFCHATCHLINEDISTANCESELECT"                     ] = Type::IfcHatchLineDistanceSelect;
    string_map["IFCHEATEXCHANGER"                               ] = Type::IfcHeatExchanger;
    string_map["IFCHEATEXCHANGERTYPE"                           ] = Type::IfcHeatExchangerType;
    string_map["IFCHEATEXCHANGERTYPEENUM"                       ] = Type::IfcHeatExchangerTypeEnum;
    string_map["IFCHEATFLUXDENSITYMEASURE"                      ] = Type::IfcHeatFluxDensityMeasure;
    string_map["IFCHEATINGVALUEMEASURE"                         ] = Type::IfcHeatingValueMeasure;
    string_map["IFCHUMIDIFIER"                                  ] = Type::IfcHumidifier;
    string_map["IFCHUMIDIFIERTYPE"                              ] = Type::IfcHumidifierType;
    string_map["IFCHUMIDIFIERTYPEENUM"                          ] = Type::IfcHumidifierTypeEnum;
    string_map["IFCIDENTIFIER"                                  ] = Type::IfcIdentifier;
    string_map["IFCILLUMINANCEMEASURE"                          ] = Type::IfcIlluminanceMeasure;
    string_map["IFCIMAGETEXTURE"                                ] = Type::IfcImageTexture;
    string_map["IFCINDEXEDCOLOURMAP"                            ] = Type::IfcIndexedColourMap;
    string_map["IFCINDEXEDPOLYCURVE"                            ] = Type::IfcIndexedPolyCurve;
    string_map["IFCINDEXEDPOLYGONALFACE"                        ] = Type::IfcIndexedPolygonalFace;
    string_map["IFCINDEXEDPOLYGONALFACEWITHVOIDS"               ] = Type::IfcIndexedPolygonalFaceWithVoids;
    string_map["IFCINDEXEDTEXTUREMAP"                           ] = Type::IfcIndexedTextureMap;
    string_map["IFCINDEXEDTRIANGLETEXTUREMAP"                   ] = Type::IfcIndexedTriangleTextureMap;
    string_map["IFCINDUCTANCEMEASURE"                           ] = Type::IfcInductanceMeasure;
    string_map["IFCINTEGER"                                     ] = Type::IfcInteger;
    string_map["IFCINTEGERCOUNTRATEMEASURE"                     ] = Type::IfcIntegerCountRateMeasure;
    string_map["IFCINTERCEPTOR"                                 ] = Type::IfcInterceptor;
    string_map["IFCINTERCEPTORTYPE"                             ] = Type::IfcInterceptorType;
    string_map["IFCINTERCEPTORTYPEENUM"                         ] = Type::IfcInterceptorTypeEnum;
    string_map["IFCINTERNALOREXTERNALENUM"                      ] = Type::IfcInternalOrExternalEnum;
    string_map["IFCINTERSECTIONCURVE"                           ] = Type::IfcIntersectionCurve;
    string_map["IFCINVENTORY"                                   ] = Type::IfcInventory;
    string_map["IFCINVENTORYTYPEENUM"                           ] = Type::IfcInventoryTypeEnum;
    string_map["IFCIONCONCENTRATIONMEASURE"                     ] = Type::IfcIonConcentrationMeasure;
    string_map["IFCIRREGULARTIMESERIES"                         ] = Type::IfcIrregularTimeSeries;
    string_map["IFCIRREGULARTIMESERIESVALUE"                    ] = Type::IfcIrregularTimeSeriesValue;
    string_map["IFCISHAPEPROFILEDEF"                            ] = Type::IfcIShapeProfileDef;
    string_map["IFCISOTHERMALMOISTURECAPACITYMEASURE"           ] = Type::IfcIsothermalMoistureCapacityMeasure;
    string_map["IFCJUNCTIONBOX"                                 ] = Type::IfcJunctionBox;
    string_map["IFCJUNCTIONBOXTYPE"                             ] = Type::IfcJunctionBoxType;
    string_map["IFCJUNCTIONBOXTYPEENUM"                         ] = Type::IfcJunctionBoxTypeEnum;
    string_map["IFCKINEMATICVISCOSITYMEASURE"                   ] = Type::IfcKinematicViscosityMeasure;
    string_map["IFCKNOTTYPE"                                    ] = Type::IfcKnotType;
    string_map["IFCLABEL"                                       ] = Type::IfcLabel;
    string_map["IFCLABORRESOURCE"                               ] = Type::IfcLaborResource;
    string_map["IFCLABORRESOURCETYPE"                           ] = Type::IfcLaborResourceType;
    string_map["IFCLABORRESOURCETYPEENUM"                       ] = Type::IfcLaborResourceTypeEnum;
    string_map["IFCLAGTIME"                                     ] = Type::IfcLagTime;
    string_map["IFCLAMP"                                        ] = Type::IfcLamp;
    string_map["IFCLAMPTYPE"                                    ] = Type::IfcLampType;
    string_map["IFCLAMPTYPEENUM"                                ] = Type::IfcLampTypeEnum;
    string_map["IFCLANGUAGEID"                                  ] = Type::IfcLanguageId;
    string_map["IFCLAYEREDITEM"                                 ] = Type::IfcLayeredItem;
    string_map["IFCLAYERSETDIRECTIONENUM"                       ] = Type::IfcLayerSetDirectionEnum;
    string_map["IFCLENGTHMEASURE"                               ] = Type::IfcLengthMeasure;
    string_map["IFCLIBRARYINFORMATION"                          ] = Type::IfcLibraryInformation;
    string_map["IFCLIBRARYREFERENCE"                            ] = Type::IfcLibraryReference;
    string_map["IFCLIBRARYSELECT"                               ] = Type::IfcLibrarySelect;
    string_map["IFCLIGHTDISTRIBUTIONCURVEENUM"                  ] = Type::IfcLightDistributionCurveEnum;
    string_map["IFCLIGHTDISTRIBUTIONDATA"                       ] = Type::IfcLightDistributionData;
    string_map["IFCLIGHTDISTRIBUTIONDATASOURCESELECT"           ] = Type::IfcLightDistributionDataSourceSelect;
    string_map["IFCLIGHTEMISSIONSOURCEENUM"                     ] = Type::IfcLightEmissionSourceEnum;
    string_map["IFCLIGHTFIXTURE"                                ] = Type::IfcLightFixture;
    string_map["IFCLIGHTFIXTURETYPE"                            ] = Type::IfcLightFixtureType;
    string_map["IFCLIGHTFIXTURETYPEENUM"                        ] = Type::IfcLightFixtureTypeEnum;
    string_map["IFCLIGHTINTENSITYDISTRIBUTION"                  ] = Type::IfcLightIntensityDistribution;
    string_map["IFCLIGHTSOURCE"                                 ] = Type::IfcLightSource;
    string_map["IFCLIGHTSOURCEAMBIENT"                          ] = Type::IfcLightSourceAmbient;
    string_map["IFCLIGHTSOURCEDIRECTIONAL"                      ] = Type::IfcLightSourceDirectional;
    string_map["IFCLIGHTSOURCEGONIOMETRIC"                      ] = Type::IfcLightSourceGoniometric;
    string_map["IFCLIGHTSOURCEPOSITIONAL"                       ] = Type::IfcLightSourcePositional;
    string_map["IFCLIGHTSOURCESPOT"                             ] = Type::IfcLightSourceSpot;
    string_map["IFCLINE"                                        ] = Type::IfcLine;
    string_map["IFCLINEARFORCEMEASURE"                          ] = Type::IfcLinearForceMeasure;
    string_map["IFCLINEARMOMENTMEASURE"                         ] = Type::IfcLinearMomentMeasure;
    string_map["IFCLINEARSTIFFNESSMEASURE"                      ] = Type::IfcLinearStiffnessMeasure;
    string_map["IFCLINEARVELOCITYMEASURE"                       ] = Type::IfcLinearVelocityMeasure;
    string_map["IFCLINEINDEX"                                   ] = Type::IfcLineIndex;
    string_map["IFCLOADGROUPTYPEENUM"                           ] = Type::IfcLoadGroupTypeEnum;
    string_map["IFCLOCALPLACEMENT"                              ] = Type::IfcLocalPlacement;
    string_map["IFCLOGICAL"                                     ] = Type::IfcLogical;
    string_map["IFCLOGICALOPERATORENUM"                         ] = Type::IfcLogicalOperatorEnum;
    string_map["IFCLOOP"                                        ] = Type::IfcLoop;
    string_map["IFCLSHAPEPROFILEDEF"                            ] = Type::IfcLShapeProfileDef;
    string_map["IFCLUMINOUSFLUXMEASURE"                         ] = Type::IfcLuminousFluxMeasure;
    string_map["IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE"        ] = Type::IfcLuminousIntensityDistributionMeasure;
    string_map["IFCLUMINOUSINTENSITYMEASURE"                    ] = Type::IfcLuminousIntensityMeasure;
    string_map["IFCMAGNETICFLUXDENSITYMEASURE"                  ] = Type::IfcMagneticFluxDensityMeasure;
    string_map["IFCMAGNETICFLUXMEASURE"                         ] = Type::IfcMagneticFluxMeasure;
    string_map["IFCMANIFOLDSOLIDBREP"                           ] = Type::IfcManifoldSolidBrep;
    string_map["IFCMAPCONVERSION"                               ] = Type::IfcMapConversion;
    string_map["IFCMAPPEDITEM"                                  ] = Type::IfcMappedItem;
    string_map["IFCMASSDENSITYMEASURE"                          ] = Type::IfcMassDensityMeasure;
    string_map["IFCMASSFLOWRATEMEASURE"                         ] = Type::IfcMassFlowRateMeasure;
    string_map["IFCMASSMEASURE"                                 ] = Type::IfcMassMeasure;
    string_map["IFCMASSPERLENGTHMEASURE"                        ] = Type::IfcMassPerLengthMeasure;
    string_map["IFCMATERIAL"                                    ] = Type::IfcMaterial;
    string_map["IFCMATERIALCLASSIFICATIONRELATIONSHIP"          ] = Type::IfcMaterialClassificationRelationship;
    string_map["IFCMATERIALCONSTITUENT"                         ] = Type::IfcMaterialConstituent;
    string_map["IFCMATERIALCONSTITUENTSET"                      ] = Type::IfcMaterialConstituentSet;
    string_map["IFCMATERIALDEFINITION"                          ] = Type::IfcMaterialDefinition;
    string_map["IFCMATERIALDEFINITIONREPRESENTATION"            ] = Type::IfcMaterialDefinitionRepresentation;
    string_map["IFCMATERIALLAYER"                               ] = Type::IfcMaterialLayer;
    string_map["IFCMATERIALLAYERSET"                            ] = Type::IfcMaterialLayerSet;
    string_map["IFCMATERIALLAYERSETUSAGE"                       ] = Type::IfcMaterialLayerSetUsage;
    string_map["IFCMATERIALLAYERWITHOFFSETS"                    ] = Type::IfcMaterialLayerWithOffsets;
    string_map["IFCMATERIALLIST"                                ] = Type::IfcMaterialList;
    string_map["IFCMATERIALPROFILE"                             ] = Type::IfcMaterialProfile;
    string_map["IFCMATERIALPROFILESET"                          ] = Type::IfcMaterialProfileSet;
    string_map["IFCMATERIALPROFILESETUSAGE"                     ] = Type::IfcMaterialProfileSetUsage;
    string_map["IFCMATERIALPROFILESETUSAGETAPERING"             ] = Type::IfcMaterialProfileSetUsageTapering;
    string_map["IFCMATERIALPROFILEWITHOFFSETS"                  ] = Type::IfcMaterialProfileWithOffsets;
    string_map["IFCMATERIALPROPERTIES"                          ] = Type::IfcMaterialProperties;
    string_map["IFCMATERIALRELATIONSHIP"                        ] = Type::IfcMaterialRelationship;
    string_map["IFCMATERIALSELECT"                              ] = Type::IfcMaterialSelect;
    string_map["IFCMATERIALUSAGEDEFINITION"                     ] = Type::IfcMaterialUsageDefinition;
    string_map["IFCMEASUREVALUE"                                ] = Type::IfcMeasureValue;
    string_map["IFCMEASUREWITHUNIT"                             ] = Type::IfcMeasureWithUnit;
    string_map["IFCMECHANICALFASTENER"                          ] = Type::IfcMechanicalFastener;
    string_map["IFCMECHANICALFASTENERTYPE"                      ] = Type::IfcMechanicalFastenerType;
    string_map["IFCMECHANICALFASTENERTYPEENUM"                  ] = Type::IfcMechanicalFastenerTypeEnum;
    string_map["IFCMEDICALDEVICE"                               ] = Type::IfcMedicalDevice;
    string_map["IFCMEDICALDEVICETYPE"                           ] = Type::IfcMedicalDeviceType;
    string_map["IFCMEDICALDEVICETYPEENUM"                       ] = Type::IfcMedicalDeviceTypeEnum;
    string_map["IFCMEMBER"                                      ] = Type::IfcMember;
    string_map["IFCMEMBERSTANDARDCASE"                          ] = Type::IfcMemberStandardCase;
    string_map["IFCMEMBERTYPE"                                  ] = Type::IfcMemberType;
    string_map["IFCMEMBERTYPEENUM"                              ] = Type::IfcMemberTypeEnum;
    string_map["IFCMETRIC"                                      ] = Type::IfcMetric;
    string_map["IFCMETRICVALUESELECT"                           ] = Type::IfcMetricValueSelect;
    string_map["IFCMIRROREDPROFILEDEF"                          ] = Type::IfcMirroredProfileDef;
    string_map["IFCMODULUSOFELASTICITYMEASURE"                  ] = Type::IfcModulusOfElasticityMeasure;
    string_map["IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE"      ] = Type::IfcModulusOfLinearSubgradeReactionMeasure;
    string_map["IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE"  ] = Type::IfcModulusOfRotationalSubgradeReactionMeasure;
    string_map["IFCMODULUSOFROTATIONALSUBGRADEREACTIONSELECT"   ] = Type::IfcModulusOfRotationalSubgradeReactionSelect;
    string_map["IFCMODULUSOFSUBGRADEREACTIONMEASURE"            ] = Type::IfcModulusOfSubgradeReactionMeasure;
    string_map["IFCMODULUSOFSUBGRADEREACTIONSELECT"             ] = Type::IfcModulusOfSubgradeReactionSelect;
    string_map["IFCMODULUSOFTRANSLATIONALSUBGRADEREACTIONSELECT"] = Type::IfcModulusOfTranslationalSubgradeReactionSelect;
    string_map["IFCMOISTUREDIFFUSIVITYMEASURE"                  ] = Type::IfcMoistureDiffusivityMeasure;
    string_map["IFCMOLECULARWEIGHTMEASURE"                      ] = Type::IfcMolecularWeightMeasure;
    string_map["IFCMOMENTOFINERTIAMEASURE"                      ] = Type::IfcMomentOfInertiaMeasure;
    string_map["IFCMONETARYMEASURE"                             ] = Type::IfcMonetaryMeasure;
    string_map["IFCMONETARYUNIT"                                ] = Type::IfcMonetaryUnit;
    string_map["IFCMONTHINYEARNUMBER"                           ] = Type::IfcMonthInYearNumber;
    string_map["IFCMOTORCONNECTION"                             ] = Type::IfcMotorConnection;
    string_map["IFCMOTORCONNECTIONTYPE"                         ] = Type::IfcMotorConnectionType;
    string_map["IFCMOTORCONNECTIONTYPEENUM"                     ] = Type::IfcMotorConnectionTypeEnum;
    string_map["IFCNAMEDUNIT"                                   ] = Type::IfcNamedUnit;
    string_map["IFCNONNEGATIVELENGTHMEASURE"                    ] = Type::IfcNonNegativeLengthMeasure;
    string_map["IFCNORMALISEDRATIOMEASURE"                      ] = Type::IfcNormalisedRatioMeasure;
    string_map["IFCNULLSTYLE"                                   ] = Type::IfcNullStyle;
    string_map["IFCNUMERICMEASURE"                              ] = Type::IfcNumericMeasure;
    string_map["IFCOBJECT"                                      ] = Type::IfcObject;
    string_map["IFCOBJECTDEFINITION"                            ] = Type::IfcObjectDefinition;
    string_map["IFCOBJECTIVE"                                   ] = Type::IfcObjective;
    string_map["IFCOBJECTIVEENUM"                               ] = Type::IfcObjectiveEnum;
    string_map["IFCOBJECTPLACEMENT"                             ] = Type::IfcObjectPlacement;
    string_map["IFCOBJECTREFERENCESELECT"                       ] = Type::IfcObjectReferenceSelect;
    string_map["IFCOBJECTTYPEENUM"                              ] = Type::IfcObjectTypeEnum;
    string_map["IFCOCCUPANT"                                    ] = Type::IfcOccupant;
    string_map["IFCOCCUPANTTYPEENUM"                            ] = Type::IfcOccupantTypeEnum;
    string_map["IFCOFFSETCURVE2D"                               ] = Type::IfcOffsetCurve2D;
    string_map["IFCOFFSETCURVE3D"                               ] = Type::IfcOffsetCurve3D;
    string_map["IFCOPENINGELEMENT"                              ] = Type::IfcOpeningElement;
    string_map["IFCOPENINGELEMENTTYPEENUM"                      ] = Type::IfcOpeningElementTypeEnum;
    string_map["IFCOPENINGSTANDARDCASE"                         ] = Type::IfcOpeningStandardCase;
    string_map["IFCOPENSHELL"                                   ] = Type::IfcOpenShell;
    string_map["IFCORGANIZATION"                                ] = Type::IfcOrganization;
    string_map["IFCORGANIZATIONRELATIONSHIP"                    ] = Type::IfcOrganizationRelationship;
    string_map["IFCORIENTEDEDGE"                                ] = Type::IfcOrientedEdge;
    string_map["IFCOUTERBOUNDARYCURVE"                          ] = Type::IfcOuterBoundaryCurve;
    string_map["IFCOUTLET"                                      ] = Type::IfcOutlet;
    string_map["IFCOUTLETTYPE"                                  ] = Type::IfcOutletType;
    string_map["IFCOUTLETTYPEENUM"                              ] = Type::IfcOutletTypeEnum;
    string_map["IFCOWNERHISTORY"                                ] = Type::IfcOwnerHistory;
    string_map["IFCPARAMETERIZEDPROFILEDEF"                     ] = Type::IfcParameterizedProfileDef;
    string_map["IFCPARAMETERVALUE"                              ] = Type::IfcParameterValue;
    string_map["IFCPATH"                                        ] = Type::IfcPath;
    string_map["IFCPCURVE"                                      ] = Type::IfcPcurve;
    string_map["IFCPERFORMANCEHISTORY"                          ] = Type::IfcPerformanceHistory;
    string_map["IFCPERFORMANCEHISTORYTYPEENUM"                  ] = Type::IfcPerformanceHistoryTypeEnum;
    string_map["IFCPERMEABLECOVERINGOPERATIONENUM"              ] = Type::IfcPermeableCoveringOperationEnum;
    string_map["IFCPERMEABLECOVERINGPROPERTIES"                 ] = Type::IfcPermeableCoveringProperties;
    string_map["IFCPERMIT"                                      ] = Type::IfcPermit;
    string_map["IFCPERMITTYPEENUM"                              ] = Type::IfcPermitTypeEnum;
    string_map["IFCPERSON"                                      ] = Type::IfcPerson;
    string_map["IFCPERSONANDORGANIZATION"                       ] = Type::IfcPersonAndOrganization;
    string_map["IFCPHMEASURE"                                   ] = Type::IfcPHMeasure;
    string_map["IFCPHYSICALCOMPLEXQUANTITY"                     ] = Type::IfcPhysicalComplexQuantity;
    string_map["IFCPHYSICALORVIRTUALENUM"                       ] = Type::IfcPhysicalOrVirtualEnum;
    string_map["IFCPHYSICALQUANTITY"                            ] = Type::IfcPhysicalQuantity;
    string_map["IFCPHYSICALSIMPLEQUANTITY"                      ] = Type::IfcPhysicalSimpleQuantity;
    string_map["IFCPILE"                                        ] = Type::IfcPile;
    string_map["IFCPILECONSTRUCTIONENUM"                        ] = Type::IfcPileConstructionEnum;
    string_map["IFCPILETYPE"                                    ] = Type::IfcPileType;
    string_map["IFCPILETYPEENUM"                                ] = Type::IfcPileTypeEnum;
    string_map["IFCPIPEFITTING"                                 ] = Type::IfcPipeFitting;
    string_map["IFCPIPEFITTINGTYPE"                             ] = Type::IfcPipeFittingType;
    string_map["IFCPIPEFITTINGTYPEENUM"                         ] = Type::IfcPipeFittingTypeEnum;
    string_map["IFCPIPESEGMENT"                                 ] = Type::IfcPipeSegment;
    string_map["IFCPIPESEGMENTTYPE"                             ] = Type::IfcPipeSegmentType;
    string_map["IFCPIPESEGMENTTYPEENUM"                         ] = Type::IfcPipeSegmentTypeEnum;
    string_map["IFCPIXELTEXTURE"                                ] = Type::IfcPixelTexture;
    string_map["IFCPLACEMENT"                                   ] = Type::IfcPlacement;
    string_map["IFCPLANARBOX"                                   ] = Type::IfcPlanarBox;
    string_map["IFCPLANAREXTENT"                                ] = Type::IfcPlanarExtent;
    string_map["IFCPLANARFORCEMEASURE"                          ] = Type::IfcPlanarForceMeasure;
    string_map["IFCPLANE"                                       ] = Type::IfcPlane;
    string_map["IFCPLANEANGLEMEASURE"                           ] = Type::IfcPlaneAngleMeasure;
    string_map["IFCPLATE"                                       ] = Type::IfcPlate;
    string_map["IFCPLATESTANDARDCASE"                           ] = Type::IfcPlateStandardCase;
    string_map["IFCPLATETYPE"                                   ] = Type::IfcPlateType;
    string_map["IFCPLATETYPEENUM"                               ] = Type::IfcPlateTypeEnum;
    string_map["IFCPOINT"                                       ] = Type::IfcPoint;
    string_map["IFCPOINTONCURVE"                                ] = Type::IfcPointOnCurve;
    string_map["IFCPOINTONSURFACE"                              ] = Type::IfcPointOnSurface;
    string_map["IFCPOINTORVERTEXPOINT"                          ] = Type::IfcPointOrVertexPoint;
    string_map["IFCPOLYGONALBOUNDEDHALFSPACE"                   ] = Type::IfcPolygonalBoundedHalfSpace;
    string_map["IFCPOLYGONALFACESET"                            ] = Type::IfcPolygonalFaceSet;
    string_map["IFCPOLYLINE"                                    ] = Type::IfcPolyline;
    string_map["IFCPOLYLOOP"                                    ] = Type::IfcPolyLoop;
    string_map["IFCPORT"                                        ] = Type::IfcPort;
    string_map["IFCPOSITIVEINTEGER"                             ] = Type::IfcPositiveInteger;
    string_map["IFCPOSITIVELENGTHMEASURE"                       ] = Type::IfcPositiveLengthMeasure;
    string_map["IFCPOSITIVEPLANEANGLEMEASURE"                   ] = Type::IfcPositivePlaneAngleMeasure;
    string_map["IFCPOSITIVERATIOMEASURE"                        ] = Type::IfcPositiveRatioMeasure;
    string_map["IFCPOSTALADDRESS"                               ] = Type::IfcPostalAddress;
    string_map["IFCPOWERMEASURE"                                ] = Type::IfcPowerMeasure;
    string_map["IFCPREDEFINEDCOLOUR"                            ] = Type::IfcPreDefinedColour;
    string_map["IFCPREDEFINEDCURVEFONT"                         ] = Type::IfcPreDefinedCurveFont;
    string_map["IFCPREDEFINEDITEM"                              ] = Type::IfcPreDefinedItem;
    string_map["IFCPREDEFINEDPROPERTIES"                        ] = Type::IfcPreDefinedProperties;
    string_map["IFCPREDEFINEDPROPERTYSET"                       ] = Type::IfcPreDefinedPropertySet;
    string_map["IFCPREDEFINEDTEXTFONT"                          ] = Type::IfcPreDefinedTextFont;
    string_map["IFCPREFERREDSURFACECURVEREPRESENTATION"         ] = Type::IfcPreferredSurfaceCurveRepresentation;
    string_map["IFCPRESENTABLETEXT"                             ] = Type::IfcPresentableText;
    string_map["IFCPRESENTATIONITEM"                            ] = Type::IfcPresentationItem;
    string_map["IFCPRESENTATIONLAYERASSIGNMENT"                 ] = Type::IfcPresentationLayerAssignment;
    string_map["IFCPRESENTATIONLAYERWITHSTYLE"                  ] = Type::IfcPresentationLayerWithStyle;
    string_map["IFCPRESENTATIONSTYLE"                           ] = Type::IfcPresentationStyle;
    string_map["IFCPRESENTATIONSTYLEASSIGNMENT"                 ] = Type::IfcPresentationStyleAssignment;
    string_map["IFCPRESENTATIONSTYLESELECT"                     ] = Type::IfcPresentationStyleSelect;
    string_map["IFCPRESSUREMEASURE"                             ] = Type::IfcPressureMeasure;
    string_map["IFCPROCEDURE"                                   ] = Type::IfcProcedure;
    string_map["IFCPROCEDURETYPE"                               ] = Type::IfcProcedureType;
    string_map["IFCPROCEDURETYPEENUM"                           ] = Type::IfcProcedureTypeEnum;
    string_map["IFCPROCESS"                                     ] = Type::IfcProcess;
    string_map["IFCPROCESSSELECT"                               ] = Type::IfcProcessSelect;
    string_map["IFCPRODUCT"                                     ] = Type::IfcProduct;
    string_map["IFCPRODUCTDEFINITIONSHAPE"                      ] = Type::IfcProductDefinitionShape;
    string_map["IFCPRODUCTREPRESENTATION"                       ] = Type::IfcProductRepresentation;
    string_map["IFCPRODUCTREPRESENTATIONSELECT"                 ] = Type::IfcProductRepresentationSelect;
    string_map["IFCPRODUCTSELECT"                               ] = Type::IfcProductSelect;
    string_map["IFCPROFILEDEF"                                  ] = Type::IfcProfileDef;
    string_map["IFCPROFILEPROPERTIES"                           ] = Type::IfcProfileProperties;
    string_map["IFCPROFILETYPEENUM"                             ] = Type::IfcProfileTypeEnum;
    string_map["IFCPROJECT"                                     ] = Type::IfcProject;
    string_map["IFCPROJECTEDCRS"                                ] = Type::IfcProjectedCRS;
    string_map["IFCPROJECTEDORTRUELENGTHENUM"                   ] = Type::IfcProjectedOrTrueLengthEnum;
    string_map["IFCPROJECTIONELEMENT"                           ] = Type::IfcProjectionElement;
    string_map["IFCPROJECTIONELEMENTTYPEENUM"                   ] = Type::IfcProjectionElementTypeEnum;
    string_map["IFCPROJECTLIBRARY"                              ] = Type::IfcProjectLibrary;
    string_map["IFCPROJECTORDER"                                ] = Type::IfcProjectOrder;
    string_map["IFCPROJECTORDERTYPEENUM"                        ] = Type::IfcProjectOrderTypeEnum;
    string_map["IFCPROPERTY"                                    ] = Type::IfcProperty;
    string_map["IFCPROPERTYABSTRACTION"                         ] = Type::IfcPropertyAbstraction;
    string_map["IFCPROPERTYBOUNDEDVALUE"                        ] = Type::IfcPropertyBoundedValue;
    string_map["IFCPROPERTYDEFINITION"                          ] = Type::IfcPropertyDefinition;
    string_map["IFCPROPERTYDEPENDENCYRELATIONSHIP"              ] = Type::IfcPropertyDependencyRelationship;
    string_map["IFCPROPERTYENUMERATEDVALUE"                     ] = Type::IfcPropertyEnumeratedValue;
    string_map["IFCPROPERTYENUMERATION"                         ] = Type::IfcPropertyEnumeration;
    string_map["IFCPROPERTYLISTVALUE"                           ] = Type::IfcPropertyListValue;
    string_map["IFCPROPERTYREFERENCEVALUE"                      ] = Type::IfcPropertyReferenceValue;
    string_map["IFCPROPERTYSET"                                 ] = Type::IfcPropertySet;
    string_map["IFCPROPERTYSETDEFINITION"                       ] = Type::IfcPropertySetDefinition;
    string_map["IFCPROPERTYSETDEFINITIONSELECT"                 ] = Type::IfcPropertySetDefinitionSelect;
    string_map["IFCPROPERTYSETDEFINITIONSET"                    ] = Type::IfcPropertySetDefinitionSet;
    string_map["IFCPROPERTYSETTEMPLATE"                         ] = Type::IfcPropertySetTemplate;
    string_map["IFCPROPERTYSETTEMPLATETYPEENUM"                 ] = Type::IfcPropertySetTemplateTypeEnum;
    string_map["IFCPROPERTYSINGLEVALUE"                         ] = Type::IfcPropertySingleValue;
    string_map["IFCPROPERTYTABLEVALUE"                          ] = Type::IfcPropertyTableValue;
    string_map["IFCPROPERTYTEMPLATE"                            ] = Type::IfcPropertyTemplate;
    string_map["IFCPROPERTYTEMPLATEDEFINITION"                  ] = Type::IfcPropertyTemplateDefinition;
    string_map["IFCPROTECTIVEDEVICE"                            ] = Type::IfcProtectiveDevice;
    string_map["IFCPROTECTIVEDEVICETRIPPINGUNIT"                ] = Type::IfcProtectiveDeviceTrippingUnit;
    string_map["IFCPROTECTIVEDEVICETRIPPINGUNITTYPE"            ] = Type::IfcProtectiveDeviceTrippingUnitType;
    string_map["IFCPROTECTIVEDEVICETRIPPINGUNITTYPEENUM"        ] = Type::IfcProtectiveDeviceTrippingUnitTypeEnum;
    string_map["IFCPROTECTIVEDEVICETYPE"                        ] = Type::IfcProtectiveDeviceType;
    string_map["IFCPROTECTIVEDEVICETYPEENUM"                    ] = Type::IfcProtectiveDeviceTypeEnum;
    string_map["IFCPROXY"                                       ] = Type::IfcProxy;
    string_map["IFCPUMP"                                        ] = Type::IfcPump;
    string_map["IFCPUMPTYPE"                                    ] = Type::IfcPumpType;
    string_map["IFCPUMPTYPEENUM"                                ] = Type::IfcPumpTypeEnum;
    string_map["IFCQUANTITYAREA"                                ] = Type::IfcQuantityArea;
    string_map["IFCQUANTITYCOUNT"                               ] = Type::IfcQuantityCount;
    string_map["IFCQUANTITYLENGTH"                              ] = Type::IfcQuantityLength;
    string_map["IFCQUANTITYSET"                                 ] = Type::IfcQuantitySet;
    string_map["IFCQUANTITYTIME"                                ] = Type::IfcQuantityTime;
    string_map["IFCQUANTITYVOLUME"                              ] = Type::IfcQuantityVolume;
    string_map["IFCQUANTITYWEIGHT"                              ] = Type::IfcQuantityWeight;
    string_map["IFCRADIOACTIVITYMEASURE"                        ] = Type::IfcRadioActivityMeasure;
    string_map["IFCRAILING"                                     ] = Type::IfcRailing;
    string_map["IFCRAILINGTYPE"                                 ] = Type::IfcRailingType;
    string_map["IFCRAILINGTYPEENUM"                             ] = Type::IfcRailingTypeEnum;
    string_map["IFCRAMP"                                        ] = Type::IfcRamp;
    string_map["IFCRAMPFLIGHT"                                  ] = Type::IfcRampFlight;
    string_map["IFCRAMPFLIGHTTYPE"                              ] = Type::IfcRampFlightType;
    string_map["IFCRAMPFLIGHTTYPEENUM"                          ] = Type::IfcRampFlightTypeEnum;
    string_map["IFCRAMPTYPE"                                    ] = Type::IfcRampType;
    string_map["IFCRAMPTYPEENUM"                                ] = Type::IfcRampTypeEnum;
    string_map["IFCRATIOMEASURE"                                ] = Type::IfcRatioMeasure;
    string_map["IFCRATIONALBSPLINECURVEWITHKNOTS"               ] = Type::IfcRationalBSplineCurveWithKnots;
    string_map["IFCRATIONALBSPLINESURFACEWITHKNOTS"             ] = Type::IfcRationalBSplineSurfaceWithKnots;
    string_map["IFCREAL"                                        ] = Type::IfcReal;
    string_map["IFCRECTANGLEHOLLOWPROFILEDEF"                   ] = Type::IfcRectangleHollowProfileDef;
    string_map["IFCRECTANGLEPROFILEDEF"                         ] = Type::IfcRectangleProfileDef;
    string_map["IFCRECTANGULARPYRAMID"                          ] = Type::IfcRectangularPyramid;
    string_map["IFCRECTANGULARTRIMMEDSURFACE"                   ] = Type::IfcRectangularTrimmedSurface;
    string_map["IFCRECURRENCEPATTERN"                           ] = Type::IfcRecurrencePattern;
    string_map["IFCRECURRENCETYPEENUM"                          ] = Type::IfcRecurrenceTypeEnum;
    string_map["IFCREFERENCE"                                   ] = Type::IfcReference;
    string_map["IFCREFLECTANCEMETHODENUM"                       ] = Type::IfcReflectanceMethodEnum;
    string_map["IFCREGULARTIMESERIES"                           ] = Type::IfcRegularTimeSeries;
    string_map["IFCREINFORCEMENTBARPROPERTIES"                  ] = Type::IfcReinforcementBarProperties;
    string_map["IFCREINFORCEMENTDEFINITIONPROPERTIES"           ] = Type::IfcReinforcementDefinitionProperties;
    string_map["IFCREINFORCINGBAR"                              ] = Type::IfcReinforcingBar;
    string_map["IFCREINFORCINGBARROLEENUM"                      ] = Type::IfcReinforcingBarRoleEnum;
    string_map["IFCREINFORCINGBARSURFACEENUM"                   ] = Type::IfcReinforcingBarSurfaceEnum;
    string_map["IFCREINFORCINGBARTYPE"                          ] = Type::IfcReinforcingBarType;
    string_map["IFCREINFORCINGBARTYPEENUM"                      ] = Type::IfcReinforcingBarTypeEnum;
    string_map["IFCREINFORCINGELEMENT"                          ] = Type::IfcReinforcingElement;
    string_map["IFCREINFORCINGELEMENTTYPE"                      ] = Type::IfcReinforcingElementType;
    string_map["IFCREINFORCINGMESH"                             ] = Type::IfcReinforcingMesh;
    string_map["IFCREINFORCINGMESHTYPE"                         ] = Type::IfcReinforcingMeshType;
    string_map["IFCREINFORCINGMESHTYPEENUM"                     ] = Type::IfcReinforcingMeshTypeEnum;
    string_map["IFCRELAGGREGATES"                               ] = Type::IfcRelAggregates;
    string_map["IFCRELASSIGNS"                                  ] = Type::IfcRelAssigns;
    string_map["IFCRELASSIGNSTOACTOR"                           ] = Type::IfcRelAssignsToActor;
    string_map["IFCRELASSIGNSTOCONTROL"                         ] = Type::IfcRelAssignsToControl;
    string_map["IFCRELASSIGNSTOGROUP"                           ] = Type::IfcRelAssignsToGroup;
    string_map["IFCRELASSIGNSTOGROUPBYFACTOR"                   ] = Type::IfcRelAssignsToGroupByFactor;
    string_map["IFCRELASSIGNSTOPROCESS"                         ] = Type::IfcRelAssignsToProcess;
    string_map["IFCRELASSIGNSTOPRODUCT"                         ] = Type::IfcRelAssignsToProduct;
    string_map["IFCRELASSIGNSTORESOURCE"                        ] = Type::IfcRelAssignsToResource;
    string_map["IFCRELASSOCIATES"                               ] = Type::IfcRelAssociates;
    string_map["IFCRELASSOCIATESAPPROVAL"                       ] = Type::IfcRelAssociatesApproval;
    string_map["IFCRELASSOCIATESCLASSIFICATION"                 ] = Type::IfcRelAssociatesClassification;
    string_map["IFCRELASSOCIATESCONSTRAINT"                     ] = Type::IfcRelAssociatesConstraint;
    string_map["IFCRELASSOCIATESDOCUMENT"                       ] = Type::IfcRelAssociatesDocument;
    string_map["IFCRELASSOCIATESLIBRARY"                        ] = Type::IfcRelAssociatesLibrary;
    string_map["IFCRELASSOCIATESMATERIAL"                       ] = Type::IfcRelAssociatesMaterial;
    string_map["IFCRELATIONSHIP"                                ] = Type::IfcRelationship;
    string_map["IFCRELCONNECTS"                                 ] = Type::IfcRelConnects;
    string_map["IFCRELCONNECTSELEMENTS"                         ] = Type::IfcRelConnectsElements;
    string_map["IFCRELCONNECTSPATHELEMENTS"                     ] = Type::IfcRelConnectsPathElements;
    string_map["IFCRELCONNECTSPORTS"                            ] = Type::IfcRelConnectsPorts;
    string_map["IFCRELCONNECTSPORTTOELEMENT"                    ] = Type::IfcRelConnectsPortToElement;
    string_map["IFCRELCONNECTSSTRUCTURALACTIVITY"               ] = Type::IfcRelConnectsStructuralActivity;
    string_map["IFCRELCONNECTSSTRUCTURALMEMBER"                 ] = Type::IfcRelConnectsStructuralMember;
    string_map["IFCRELCONNECTSWITHECCENTRICITY"                 ] = Type::IfcRelConnectsWithEccentricity;
    string_map["IFCRELCONNECTSWITHREALIZINGELEMENTS"            ] = Type::IfcRelConnectsWithRealizingElements;
    string_map["IFCRELCONTAINEDINSPATIALSTRUCTURE"              ] = Type::IfcRelContainedInSpatialStructure;
    string_map["IFCRELCOVERSBLDGELEMENTS"                       ] = Type::IfcRelCoversBldgElements;
    string_map["IFCRELCOVERSSPACES"                             ] = Type::IfcRelCoversSpaces;
    string_map["IFCRELDECLARES"                                 ] = Type::IfcRelDeclares;
    string_map["IFCRELDECOMPOSES"                               ] = Type::IfcRelDecomposes;
    string_map["IFCRELDEFINES"                                  ] = Type::IfcRelDefines;
    string_map["IFCRELDEFINESBYOBJECT"                          ] = Type::IfcRelDefinesByObject;
    string_map["IFCRELDEFINESBYPROPERTIES"                      ] = Type::IfcRelDefinesByProperties;
    string_map["IFCRELDEFINESBYTEMPLATE"                        ] = Type::IfcRelDefinesByTemplate;
    string_map["IFCRELDEFINESBYTYPE"                            ] = Type::IfcRelDefinesByType;
    string_map["IFCRELFILLSELEMENT"                             ] = Type::IfcRelFillsElement;
    string_map["IFCRELFLOWCONTROLELEMENTS"                      ] = Type::IfcRelFlowControlElements;
    string_map["IFCRELINTERFERESELEMENTS"                       ] = Type::IfcRelInterferesElements;
    string_map["IFCRELNESTS"                                    ] = Type::IfcRelNests;
    string_map["IFCRELPROJECTSELEMENT"                          ] = Type::IfcRelProjectsElement;
    string_map["IFCRELREFERENCEDINSPATIALSTRUCTURE"             ] = Type::IfcRelReferencedInSpatialStructure;
    string_map["IFCRELSEQUENCE"                                 ] = Type::IfcRelSequence;
    string_map["IFCRELSERVICESBUILDINGS"                        ] = Type::IfcRelServicesBuildings;
    string_map["IFCRELSPACEBOUNDARY"                            ] = Type::IfcRelSpaceBoundary;
    string_map["IFCRELSPACEBOUNDARY1STLEVEL"                    ] = Type::IfcRelSpaceBoundary1stLevel;
    string_map["IFCRELSPACEBOUNDARY2NDLEVEL"                    ] = Type::IfcRelSpaceBoundary2ndLevel;
    string_map["IFCRELVOIDSELEMENT"                             ] = Type::IfcRelVoidsElement;
    string_map["IFCREPARAMETRISEDCOMPOSITECURVESEGMENT"         ] = Type::IfcReparametrisedCompositeCurveSegment;
    string_map["IFCREPRESENTATION"                              ] = Type::IfcRepresentation;
    string_map["IFCREPRESENTATIONCONTEXT"                       ] = Type::IfcRepresentationContext;
    string_map["IFCREPRESENTATIONITEM"                          ] = Type::IfcRepresentationItem;
    string_map["IFCREPRESENTATIONMAP"                           ] = Type::IfcRepresentationMap;
    string_map["IFCRESOURCE"                                    ] = Type::IfcResource;
    string_map["IFCRESOURCEAPPROVALRELATIONSHIP"                ] = Type::IfcResourceApprovalRelationship;
    string_map["IFCRESOURCECONSTRAINTRELATIONSHIP"              ] = Type::IfcResourceConstraintRelationship;
    string_map["IFCRESOURCELEVELRELATIONSHIP"                   ] = Type::IfcResourceLevelRelationship;
    string_map["IFCRESOURCEOBJECTSELECT"                        ] = Type::IfcResourceObjectSelect;
    string_map["IFCRESOURCESELECT"                              ] = Type::IfcResourceSelect;
    string_map["IFCRESOURCETIME"                                ] = Type::IfcResourceTime;
    string_map["IFCREVOLVEDAREASOLID"                           ] = Type::IfcRevolvedAreaSolid;
    string_map["IFCREVOLVEDAREASOLIDTAPERED"                    ] = Type::IfcRevolvedAreaSolidTapered;
    string_map["IFCRIGHTCIRCULARCONE"                           ] = Type::IfcRightCircularCone;
    string_map["IFCRIGHTCIRCULARCYLINDER"                       ] = Type::IfcRightCircularCylinder;
    string_map["IFCROLEENUM"                                    ] = Type::IfcRoleEnum;
    string_map["IFCROOF"                                        ] = Type::IfcRoof;
    string_map["IFCROOFTYPE"                                    ] = Type::IfcRoofType;
    string_map["IFCROOFTYPEENUM"                                ] = Type::IfcRoofTypeEnum;
    string_map["IFCROOT"                                        ] = Type::IfcRoot;
    string_map["IFCROTATIONALFREQUENCYMEASURE"                  ] = Type::IfcRotationalFrequencyMeasure;
    string_map["IFCROTATIONALMASSMEASURE"                       ] = Type::IfcRotationalMassMeasure;
    string_map["IFCROTATIONALSTIFFNESSMEASURE"                  ] = Type::IfcRotationalStiffnessMeasure;
    string_map["IFCROTATIONALSTIFFNESSSELECT"                   ] = Type::IfcRotationalStiffnessSelect;
    string_map["IFCROUNDEDRECTANGLEPROFILEDEF"                  ] = Type::IfcRoundedRectangleProfileDef;
    string_map["IFCSANITARYTERMINAL"                            ] = Type::IfcSanitaryTerminal;
    string_map["IFCSANITARYTERMINALTYPE"                        ] = Type::IfcSanitaryTerminalType;
    string_map["IFCSANITARYTERMINALTYPEENUM"                    ] = Type::IfcSanitaryTerminalTypeEnum;
    string_map["IFCSCHEDULINGTIME"                              ] = Type::IfcSchedulingTime;
    string_map["IFCSEAMCURVE"                                   ] = Type::IfcSeamCurve;
    string_map["IFCSECTIONALAREAINTEGRALMEASURE"                ] = Type::IfcSectionalAreaIntegralMeasure;
    string_map["IFCSECTIONEDSPINE"                              ] = Type::IfcSectionedSpine;
    string_map["IFCSECTIONMODULUSMEASURE"                       ] = Type::IfcSectionModulusMeasure;
    string_map["IFCSECTIONPROPERTIES"                           ] = Type::IfcSectionProperties;
    string_map["IFCSECTIONREINFORCEMENTPROPERTIES"              ] = Type::IfcSectionReinforcementProperties;
    string_map["IFCSECTIONTYPEENUM"                             ] = Type::IfcSectionTypeEnum;
    string_map["IFCSEGMENTINDEXSELECT"                          ] = Type::IfcSegmentIndexSelect;
    string_map["IFCSENSOR"                                      ] = Type::IfcSensor;
    string_map["IFCSENSORTYPE"                                  ] = Type::IfcSensorType;
    string_map["IFCSENSORTYPEENUM"                              ] = Type::IfcSensorTypeEnum;
    string_map["IFCSEQUENCEENUM"                                ] = Type::IfcSequenceEnum;
    string_map["IFCSHADINGDEVICE"                               ] = Type::IfcShadingDevice;
    string_map["IFCSHADINGDEVICETYPE"                           ] = Type::IfcShadingDeviceType;
    string_map["IFCSHADINGDEVICETYPEENUM"                       ] = Type::IfcShadingDeviceTypeEnum;
    string_map["IFCSHAPEASPECT"                                 ] = Type::IfcShapeAspect;
    string_map["IFCSHAPEMODEL"                                  ] = Type::IfcShapeModel;
    string_map["IFCSHAPEREPRESENTATION"                         ] = Type::IfcShapeRepresentation;
    string_map["IFCSHEARMODULUSMEASURE"                         ] = Type::IfcShearModulusMeasure;
    string_map["IFCSHELL"                                       ] = Type::IfcShell;
    string_map["IFCSHELLBASEDSURFACEMODEL"                      ] = Type::IfcShellBasedSurfaceModel;
    string_map["IFCSIMPLEPROPERTY"                              ] = Type::IfcSimpleProperty;
    string_map["IFCSIMPLEPROPERTYTEMPLATE"                      ] = Type::IfcSimplePropertyTemplate;
    string_map["IFCSIMPLEPROPERTYTEMPLATETYPEENUM"              ] = Type::IfcSimplePropertyTemplateTypeEnum;
    string_map["IFCSIMPLEVALUE"                                 ] = Type::IfcSimpleValue;
    string_map["IFCSIPREFIX"                                    ] = Type::IfcSIPrefix;
    string_map["IFCSITE"                                        ] = Type::IfcSite;
    string_map["IFCSIUNIT"                                      ] = Type::IfcSIUnit;
    string_map["IFCSIUNITNAME"                                  ] = Type::IfcSIUnitName;
    string_map["IFCSIZESELECT"                                  ] = Type::IfcSizeSelect;
    string_map["IFCSLAB"                                        ] = Type::IfcSlab;
    string_map["IFCSLABELEMENTEDCASE"                           ] = Type::IfcSlabElementedCase;
    string_map["IFCSLABSTANDARDCASE"                            ] = Type::IfcSlabStandardCase;
    string_map["IFCSLABTYPE"                                    ] = Type::IfcSlabType;
    string_map["IFCSLABTYPEENUM"                                ] = Type::IfcSlabTypeEnum;
    string_map["IFCSLIPPAGECONNECTIONCONDITION"                 ] = Type::IfcSlippageConnectionCondition;
    string_map["IFCSOLARDEVICE"                                 ] = Type::IfcSolarDevice;
    string_map["IFCSOLARDEVICETYPE"                             ] = Type::IfcSolarDeviceType;
    string_map["IFCSOLARDEVICETYPEENUM"                         ] = Type::IfcSolarDeviceTypeEnum;
    string_map["IFCSOLIDANGLEMEASURE"                           ] = Type::IfcSolidAngleMeasure;
    string_map["IFCSOLIDMODEL"                                  ] = Type::IfcSolidModel;
    string_map["IFCSOLIDORSHELL"                                ] = Type::IfcSolidOrShell;
    string_map["IFCSOUNDPOWERLEVELMEASURE"                      ] = Type::IfcSoundPowerLevelMeasure;
    string_map["IFCSOUNDPOWERMEASURE"                           ] = Type::IfcSoundPowerMeasure;
    string_map["IFCSOUNDPRESSURELEVELMEASURE"                   ] = Type::IfcSoundPressureLevelMeasure;
    string_map["IFCSOUNDPRESSUREMEASURE"                        ] = Type::IfcSoundPressureMeasure;
    string_map["IFCSPACE"                                       ] = Type::IfcSpace;
    string_map["IFCSPACEBOUNDARYSELECT"                         ] = Type::IfcSpaceBoundarySelect;
    string_map["IFCSPACEHEATER"                                 ] = Type::IfcSpaceHeater;
    string_map["IFCSPACEHEATERTYPE"                             ] = Type::IfcSpaceHeaterType;
    string_map["IFCSPACEHEATERTYPEENUM"                         ] = Type::IfcSpaceHeaterTypeEnum;
    string_map["IFCSPACETYPE"                                   ] = Type::IfcSpaceType;
    string_map["IFCSPACETYPEENUM"                               ] = Type::IfcSpaceTypeEnum;
    string_map["IFCSPATIALELEMENT"                              ] = Type::IfcSpatialElement;
    string_map["IFCSPATIALELEMENTTYPE"                          ] = Type::IfcSpatialElementType;
    string_map["IFCSPATIALSTRUCTUREELEMENT"                     ] = Type::IfcSpatialStructureElement;
    string_map["IFCSPATIALSTRUCTUREELEMENTTYPE"                 ] = Type::IfcSpatialStructureElementType;
    string_map["IFCSPATIALZONE"                                 ] = Type::IfcSpatialZone;
    string_map["IFCSPATIALZONETYPE"                             ] = Type::IfcSpatialZoneType;
    string_map["IFCSPATIALZONETYPEENUM"                         ] = Type::IfcSpatialZoneTypeEnum;
    string_map["IFCSPECIFICHEATCAPACITYMEASURE"                 ] = Type::IfcSpecificHeatCapacityMeasure;
    string_map["IFCSPECULAREXPONENT"                            ] = Type::IfcSpecularExponent;
    string_map["IFCSPECULARHIGHLIGHTSELECT"                     ] = Type::IfcSpecularHighlightSelect;
    string_map["IFCSPECULARROUGHNESS"                           ] = Type::IfcSpecularRoughness;
    string_map["IFCSPHERE"                                      ] = Type::IfcSphere;
    string_map["IFCSPHERICALSURFACE"                            ] = Type::IfcSphericalSurface;
    string_map["IFCSTACKTERMINAL"                               ] = Type::IfcStackTerminal;
    string_map["IFCSTACKTERMINALTYPE"                           ] = Type::IfcStackTerminalType;
    string_map["IFCSTACKTERMINALTYPEENUM"                       ] = Type::IfcStackTerminalTypeEnum;
    string_map["IFCSTAIR"                                       ] = Type::IfcStair;
    string_map["IFCSTAIRFLIGHT"                                 ] = Type::IfcStairFlight;
    string_map["IFCSTAIRFLIGHTTYPE"                             ] = Type::IfcStairFlightType;
    string_map["IFCSTAIRFLIGHTTYPEENUM"                         ] = Type::IfcStairFlightTypeEnum;
    string_map["IFCSTAIRTYPE"                                   ] = Type::IfcStairType;
    string_map["IFCSTAIRTYPEENUM"                               ] = Type::IfcStairTypeEnum;
    string_map["IFCSTATEENUM"                                   ] = Type::IfcStateEnum;
    string_map["IFCSTRIPPEDOPTIONAL"                            ] = Type::IfcStrippedOptional;
    string_map["IFCSTRUCTURALACTION"                            ] = Type::IfcStructuralAction;
    string_map["IFCSTRUCTURALACTIVITY"                          ] = Type::IfcStructuralActivity;
    string_map["IFCSTRUCTURALACTIVITYASSIGNMENTSELECT"          ] = Type::IfcStructuralActivityAssignmentSelect;
    string_map["IFCSTRUCTURALANALYSISMODEL"                     ] = Type::IfcStructuralAnalysisModel;
    string_map["IFCSTRUCTURALCONNECTION"                        ] = Type::IfcStructuralConnection;
    string_map["IFCSTRUCTURALCONNECTIONCONDITION"               ] = Type::IfcStructuralConnectionCondition;
    string_map["IFCSTRUCTURALCURVEACTION"                       ] = Type::IfcStructuralCurveAction;
    string_map["IFCSTRUCTURALCURVEACTIVITYTYPEENUM"             ] = Type::IfcStructuralCurveActivityTypeEnum;
    string_map["IFCSTRUCTURALCURVECONNECTION"                   ] = Type::IfcStructuralCurveConnection;
    string_map["IFCSTRUCTURALCURVEMEMBER"                       ] = Type::IfcStructuralCurveMember;
    string_map["IFCSTRUCTURALCURVEMEMBERTYPEENUM"               ] = Type::IfcStructuralCurveMemberTypeEnum;
    string_map["IFCSTRUCTURALCURVEMEMBERVARYING"                ] = Type::IfcStructuralCurveMemberVarying;
    string_map["IFCSTRUCTURALCURVEREACTION"                     ] = Type::IfcStructuralCurveReaction;
    string_map["IFCSTRUCTURALITEM"                              ] = Type::IfcStructuralItem;
    string_map["IFCSTRUCTURALLINEARACTION"                      ] = Type::IfcStructuralLinearAction;
    string_map["IFCSTRUCTURALLOAD"                              ] = Type::IfcStructuralLoad;
    string_map["IFCSTRUCTURALLOADCASE"                          ] = Type::IfcStructuralLoadCase;
    string_map["IFCSTRUCTURALLOADCONFIGURATION"                 ] = Type::IfcStructuralLoadConfiguration;
    string_map["IFCSTRUCTURALLOADGROUP"                         ] = Type::IfcStructuralLoadGroup;
    string_map["IFCSTRUCTURALLOADLINEARFORCE"                   ] = Type::IfcStructuralLoadLinearForce;
    string_map["IFCSTRUCTURALLOADORRESULT"                      ] = Type::IfcStructuralLoadOrResult;
    string_map["IFCSTRUCTURALLOADPLANARFORCE"                   ] = Type::IfcStructuralLoadPlanarForce;
    string_map["IFCSTRUCTURALLOADSINGLEDISPLACEMENT"            ] = Type::IfcStructuralLoadSingleDisplacement;
    string_map["IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION"  ] = Type::IfcStructuralLoadSingleDisplacementDistortion;
    string_map["IFCSTRUCTURALLOADSINGLEFORCE"                   ] = Type::IfcStructuralLoadSingleForce;
    string_map["IFCSTRUCTURALLOADSINGLEFORCEWARPING"            ] = Type::IfcStructuralLoadSingleForceWarping;
    string_map["IFCSTRUCTURALLOADSTATIC"                        ] = Type::IfcStructuralLoadStatic;
    string_map["IFCSTRUCTURALLOADTEMPERATURE"                   ] = Type::IfcStructuralLoadTemperature;
    string_map["IFCSTRUCTURALMEMBER"                            ] = Type::IfcStructuralMember;
    string_map["IFCSTRUCTURALPLANARACTION"                      ] = Type::IfcStructuralPlanarAction;
    string_map["IFCSTRUCTURALPOINTACTION"                       ] = Type::IfcStructuralPointAction;
    string_map["IFCSTRUCTURALPOINTCONNECTION"                   ] = Type::IfcStructuralPointConnection;
    string_map["IFCSTRUCTURALPOINTREACTION"                     ] = Type::IfcStructuralPointReaction;
    string_map["IFCSTRUCTURALREACTION"                          ] = Type::IfcStructuralReaction;
    string_map["IFCSTRUCTURALRESULTGROUP"                       ] = Type::IfcStructuralResultGroup;
    string_map["IFCSTRUCTURALSURFACEACTION"                     ] = Type::IfcStructuralSurfaceAction;
    string_map["IFCSTRUCTURALSURFACEACTIVITYTYPEENUM"           ] = Type::IfcStructuralSurfaceActivityTypeEnum;
    string_map["IFCSTRUCTURALSURFACECONNECTION"                 ] = Type::IfcStructuralSurfaceConnection;
    string_map["IFCSTRUCTURALSURFACEMEMBER"                     ] = Type::IfcStructuralSurfaceMember;
    string_map["IFCSTRUCTURALSURFACEMEMBERTYPEENUM"             ] = Type::IfcStructuralSurfaceMemberTypeEnum;
    string_map["IFCSTRUCTURALSURFACEMEMBERVARYING"              ] = Type::IfcStructuralSurfaceMemberVarying;
    string_map["IFCSTRUCTURALSURFACEREACTION"                   ] = Type::IfcStructuralSurfaceReaction;
    string_map["IFCSTYLEASSIGNMENTSELECT"                       ] = Type::IfcStyleAssignmentSelect;
    string_map["IFCSTYLEDITEM"                                  ] = Type::IfcStyledItem;
    string_map["IFCSTYLEDREPRESENTATION"                        ] = Type::IfcStyledRepresentation;
    string_map["IFCSTYLEMODEL"                                  ] = Type::IfcStyleModel;
    string_map["IFCSUBCONTRACTRESOURCE"                         ] = Type::IfcSubContractResource;
    string_map["IFCSUBCONTRACTRESOURCETYPE"                     ] = Type::IfcSubContractResourceType;
    string_map["IFCSUBCONTRACTRESOURCETYPEENUM"                 ] = Type::IfcSubContractResourceTypeEnum;
    string_map["IFCSUBEDGE"                                     ] = Type::IfcSubedge;
    string_map["IFCSURFACE"                                     ] = Type::IfcSurface;
    string_map["IFCSURFACECURVE"                                ] = Type::IfcSurfaceCurve;
    string_map["IFCSURFACECURVESWEPTAREASOLID"                  ] = Type::IfcSurfaceCurveSweptAreaSolid;
    string_map["IFCSURFACEFEATURE"                              ] = Type::IfcSurfaceFeature;
    string_map["IFCSURFACEFEATURETYPEENUM"                      ] = Type::IfcSurfaceFeatureTypeEnum;
    string_map["IFCSURFACEOFLINEAREXTRUSION"                    ] = Type::IfcSurfaceOfLinearExtrusion;
    string_map["IFCSURFACEOFREVOLUTION"                         ] = Type::IfcSurfaceOfRevolution;
    string_map["IFCSURFACEORFACESURFACE"                        ] = Type::IfcSurfaceOrFaceSurface;
    string_map["IFCSURFACEREINFORCEMENTAREA"                    ] = Type::IfcSurfaceReinforcementArea;
    string_map["IFCSURFACESIDE"                                 ] = Type::IfcSurfaceSide;
    string_map["IFCSURFACESTYLE"                                ] = Type::IfcSurfaceStyle;
    string_map["IFCSURFACESTYLEELEMENTSELECT"                   ] = Type::IfcSurfaceStyleElementSelect;
    string_map["IFCSURFACESTYLELIGHTING"                        ] = Type::IfcSurfaceStyleLighting;
    string_map["IFCSURFACESTYLEREFRACTION"                      ] = Type::IfcSurfaceStyleRefraction;
    string_map["IFCSURFACESTYLERENDERING"                       ] = Type::IfcSurfaceStyleRendering;
    string_map["IFCSURFACESTYLESHADING"                         ] = Type::IfcSurfaceStyleShading;
    string_map["IFCSURFACESTYLEWITHTEXTURES"                    ] = Type::IfcSurfaceStyleWithTextures;
    string_map["IFCSURFACETEXTURE"                              ] = Type::IfcSurfaceTexture;
    string_map["IFCSWEPTAREASOLID"                              ] = Type::IfcSweptAreaSolid;
    string_map["IFCSWEPTDISKSOLID"                              ] = Type::IfcSweptDiskSolid;
    string_map["IFCSWEPTDISKSOLIDPOLYGONAL"                     ] = Type::IfcSweptDiskSolidPolygonal;
    string_map["IFCSWEPTSURFACE"                                ] = Type::IfcSweptSurface;
    string_map["IFCSWITCHINGDEVICE"                             ] = Type::IfcSwitchingDevice;
    string_map["IFCSWITCHINGDEVICETYPE"                         ] = Type::IfcSwitchingDeviceType;
    string_map["IFCSWITCHINGDEVICETYPEENUM"                     ] = Type::IfcSwitchingDeviceTypeEnum;
    string_map["IFCSYSTEM"                                      ] = Type::IfcSystem;
    string_map["IFCSYSTEMFURNITUREELEMENT"                      ] = Type::IfcSystemFurnitureElement;
    string_map["IFCSYSTEMFURNITUREELEMENTTYPE"                  ] = Type::IfcSystemFurnitureElementType;
    string_map["IFCSYSTEMFURNITUREELEMENTTYPEENUM"              ] = Type::IfcSystemFurnitureElementTypeEnum;
    string_map["IFCTABLE"                                       ] = Type::IfcTable;
    string_map["IFCTABLECOLUMN"                                 ] = Type::IfcTableColumn;
    string_map["IFCTABLEROW"                                    ] = Type::IfcTableRow;
    string_map["IFCTANK"                                        ] = Type::IfcTank;
    string_map["IFCTANKTYPE"                                    ] = Type::IfcTankType;
    string_map["IFCTANKTYPEENUM"                                ] = Type::IfcTankTypeEnum;
    string_map["IFCTASK"                                        ] = Type::IfcTask;
    string_map["IFCTASKDURATIONENUM"                            ] = Type::IfcTaskDurationEnum;
    string_map["IFCTASKTIME"                                    ] = Type::IfcTaskTime;
    string_map["IFCTASKTIMERECURRING"                           ] = Type::IfcTaskTimeRecurring;
    string_map["IFCTASKTYPE"                                    ] = Type::IfcTaskType;
    string_map["IFCTASKTYPEENUM"                                ] = Type::IfcTaskTypeEnum;
    string_map["IFCTELECOMADDRESS"                              ] = Type::IfcTelecomAddress;
    string_map["IFCTEMPERATUREGRADIENTMEASURE"                  ] = Type::IfcTemperatureGradientMeasure;
    string_map["IFCTEMPERATURERATEOFCHANGEMEASURE"              ] = Type::IfcTemperatureRateOfChangeMeasure;
    string_map["IFCTENDON"                                      ] = Type::IfcTendon;
    string_map["IFCTENDONANCHOR"                                ] = Type::IfcTendonAnchor;
    string_map["IFCTENDONANCHORTYPE"                            ] = Type::IfcTendonAnchorType;
    string_map["IFCTENDONANCHORTYPEENUM"                        ] = Type::IfcTendonAnchorTypeEnum;
    string_map["IFCTENDONTYPE"                                  ] = Type::IfcTendonType;
    string_map["IFCTENDONTYPEENUM"                              ] = Type::IfcTendonTypeEnum;
    string_map["IFCTESSELLATEDFACESET"                          ] = Type::IfcTessellatedFaceSet;
    string_map["IFCTESSELLATEDITEM"                             ] = Type::IfcTessellatedItem;
    string_map["IFCTEXT"                                        ] = Type::IfcText;
    string_map["IFCTEXTALIGNMENT"                               ] = Type::IfcTextAlignment;
    string_map["IFCTEXTDECORATION"                              ] = Type::IfcTextDecoration;
    string_map["IFCTEXTFONTNAME"                                ] = Type::IfcTextFontName;
    string_map["IFCTEXTFONTSELECT"                              ] = Type::IfcTextFontSelect;
    string_map["IFCTEXTLITERAL"                                 ] = Type::IfcTextLiteral;
    string_map["IFCTEXTLITERALWITHEXTENT"                       ] = Type::IfcTextLiteralWithExtent;
    string_map["IFCTEXTPATH"                                    ] = Type::IfcTextPath;
    string_map["IFCTEXTSTYLE"                                   ] = Type::IfcTextStyle;
    string_map["IFCTEXTSTYLEFONTMODEL"                          ] = Type::IfcTextStyleFontModel;
    string_map["IFCTEXTSTYLEFORDEFINEDFONT"                     ] = Type::IfcTextStyleForDefinedFont;
    string_map["IFCTEXTSTYLETEXTMODEL"                          ] = Type::IfcTextStyleTextModel;
    string_map["IFCTEXTTRANSFORMATION"                          ] = Type::IfcTextTransformation;
    string_map["IFCTEXTURECOORDINATE"                           ] = Type::IfcTextureCoordinate;
    string_map["IFCTEXTURECOORDINATEGENERATOR"                  ] = Type::IfcTextureCoordinateGenerator;
    string_map["IFCTEXTUREMAP"                                  ] = Type::IfcTextureMap;
    string_map["IFCTEXTUREVERTEX"                               ] = Type::IfcTextureVertex;
    string_map["IFCTEXTUREVERTEXLIST"                           ] = Type::IfcTextureVertexList;
    string_map["IFCTHERMALADMITTANCEMEASURE"                    ] = Type::IfcThermalAdmittanceMeasure;
    string_map["IFCTHERMALCONDUCTIVITYMEASURE"                  ] = Type::IfcThermalConductivityMeasure;
    string_map["IFCTHERMALEXPANSIONCOEFFICIENTMEASURE"          ] = Type::IfcThermalExpansionCoefficientMeasure;
    string_map["IFCTHERMALRESISTANCEMEASURE"                    ] = Type::IfcThermalResistanceMeasure;
    string_map["IFCTHERMALTRANSMITTANCEMEASURE"                 ] = Type::IfcThermalTransmittanceMeasure;
    string_map["IFCTHERMODYNAMICTEMPERATUREMEASURE"             ] = Type::IfcThermodynamicTemperatureMeasure;
    string_map["IFCTIME"                                        ] = Type::IfcTime;
    string_map["IFCTIMEMEASURE"                                 ] = Type::IfcTimeMeasure;
    string_map["IFCTIMEORRATIOSELECT"                           ] = Type::IfcTimeOrRatioSelect;
    string_map["IFCTIMEPERIOD"                                  ] = Type::IfcTimePeriod;
    string_map["IFCTIMESERIES"                                  ] = Type::IfcTimeSeries;
    string_map["IFCTIMESERIESDATATYPEENUM"                      ] = Type::IfcTimeSeriesDataTypeEnum;
    string_map["IFCTIMESERIESVALUE"                             ] = Type::IfcTimeSeriesValue;
    string_map["IFCTIMESTAMP"                                   ] = Type::IfcTimeStamp;
    string_map["IFCTOPOLOGICALREPRESENTATIONITEM"               ] = Type::IfcTopologicalRepresentationItem;
    string_map["IFCTOPOLOGYREPRESENTATION"                      ] = Type::IfcTopologyRepresentation;
    string_map["IFCTOROIDALSURFACE"                             ] = Type::IfcToroidalSurface;
    string_map["IFCTORQUEMEASURE"                               ] = Type::IfcTorqueMeasure;
    string_map["IFCTRANSFORMER"                                 ] = Type::IfcTransformer;
    string_map["IFCTRANSFORMERTYPE"                             ] = Type::IfcTransformerType;
    string_map["IFCTRANSFORMERTYPEENUM"                         ] = Type::IfcTransformerTypeEnum;
    string_map["IFCTRANSITIONCODE"                              ] = Type::IfcTransitionCode;
    string_map["IFCTRANSLATIONALSTIFFNESSSELECT"                ] = Type::IfcTranslationalStiffnessSelect;
    string_map["IFCTRANSPORTELEMENT"                            ] = Type::IfcTransportElement;
    string_map["IFCTRANSPORTELEMENTTYPE"                        ] = Type::IfcTransportElementType;
    string_map["IFCTRANSPORTELEMENTTYPEENUM"                    ] = Type::IfcTransportElementTypeEnum;
    string_map["IFCTRAPEZIUMPROFILEDEF"                         ] = Type::IfcTrapeziumProfileDef;
    string_map["IFCTRIANGULATEDFACESET"                         ] = Type::IfcTriangulatedFaceSet;
    string_map["IFCTRIMMEDCURVE"                                ] = Type::IfcTrimmedCurve;
    string_map["IFCTRIMMINGPREFERENCE"                          ] = Type::IfcTrimmingPreference;
    string_map["IFCTRIMMINGSELECT"                              ] = Type::IfcTrimmingSelect;
    string_map["IFCTSHAPEPROFILEDEF"                            ] = Type::IfcTShapeProfileDef;
    string_map["IFCTUBEBUNDLE"                                  ] = Type::IfcTubeBundle;
    string_map["IFCTUBEBUNDLETYPE"                              ] = Type::IfcTubeBundleType;
    string_map["IFCTUBEBUNDLETYPEENUM"                          ] = Type::IfcTubeBundleTypeEnum;
    string_map["IFCTYPEOBJECT"                                  ] = Type::IfcTypeObject;
    string_map["IFCTYPEPROCESS"                                 ] = Type::IfcTypeProcess;
    string_map["IFCTYPEPRODUCT"                                 ] = Type::IfcTypeProduct;
    string_map["IFCTYPERESOURCE"                                ] = Type::IfcTypeResource;
    string_map["IFCUNIT"                                        ] = Type::IfcUnit;
    string_map["IFCUNITARYCONTROLELEMENT"                       ] = Type::IfcUnitaryControlElement;
    string_map["IFCUNITARYCONTROLELEMENTTYPE"                   ] = Type::IfcUnitaryControlElementType;
    string_map["IFCUNITARYCONTROLELEMENTTYPEENUM"               ] = Type::IfcUnitaryControlElementTypeEnum;
    string_map["IFCUNITARYEQUIPMENT"                            ] = Type::IfcUnitaryEquipment;
    string_map["IFCUNITARYEQUIPMENTTYPE"                        ] = Type::IfcUnitaryEquipmentType;
    string_map["IFCUNITARYEQUIPMENTTYPEENUM"                    ] = Type::IfcUnitaryEquipmentTypeEnum;
    string_map["IFCUNITASSIGNMENT"                              ] = Type::IfcUnitAssignment;
    string_map["IFCUNITENUM"                                    ] = Type::IfcUnitEnum;
    string_map["IFCURIREFERENCE"                                ] = Type::IfcURIReference;
    string_map["IFCUSHAPEPROFILEDEF"                            ] = Type::IfcUShapeProfileDef;
    string_map["IFCVALUE"                                       ] = Type::IfcValue;
    string_map["IFCVALVE"                                       ] = Type::IfcValve;
    string_map["IFCVALVETYPE"                                   ] = Type::IfcValveType;
    string_map["IFCVALVETYPEENUM"                               ] = Type::IfcValveTypeEnum;
    string_map["IFCVAPORPERMEABILITYMEASURE"                    ] = Type::IfcVaporPermeabilityMeasure;
    string_map["IFCVECTOR"                                      ] = Type::IfcVector;
    string_map["IFCVECTORORDIRECTION"                           ] = Type::IfcVectorOrDirection;
    string_map["IFCVERTEX"                                      ] = Type::IfcVertex;
    string_map["IFCVERTEXLOOP"                                  ] = Type::IfcVertexLoop;
    string_map["IFCVERTEXPOINT"                                 ] = Type::IfcVertexPoint;
    string_map["IFCVIBRATIONISOLATOR"                           ] = Type::IfcVibrationIsolator;
    string_map["IFCVIBRATIONISOLATORTYPE"                       ] = Type::IfcVibrationIsolatorType;
    string_map["IFCVIBRATIONISOLATORTYPEENUM"                   ] = Type::IfcVibrationIsolatorTypeEnum;
    string_map["IFCVIRTUALELEMENT"                              ] = Type::IfcVirtualElement;
    string_map["IFCVIRTUALGRIDINTERSECTION"                     ] = Type::IfcVirtualGridIntersection;
    string_map["IFCVOIDINGFEATURE"                              ] = Type::IfcVoidingFeature;
    string_map["IFCVOIDINGFEATURETYPEENUM"                      ] = Type::IfcVoidingFeatureTypeEnum;
    string_map["IFCVOLUMEMEASURE"                               ] = Type::IfcVolumeMeasure;
    string_map["IFCVOLUMETRICFLOWRATEMEASURE"                   ] = Type::IfcVolumetricFlowRateMeasure;
    string_map["IFCWALL"                                        ] = Type::IfcWall;
    string_map["IFCWALLELEMENTEDCASE"                           ] = Type::IfcWallElementedCase;
    string_map["IFCWALLSTANDARDCASE"                            ] = Type::IfcWallStandardCase;
    string_map["IFCWALLTYPE"                                    ] = Type::IfcWallType;
    string_map["IFCWALLTYPEENUM"                                ] = Type::IfcWallTypeEnum;
    string_map["IFCWARPINGCONSTANTMEASURE"                      ] = Type::IfcWarpingConstantMeasure;
    string_map["IFCWARPINGMOMENTMEASURE"                        ] = Type::IfcWarpingMomentMeasure;
    string_map["IFCWARPINGSTIFFNESSSELECT"                      ] = Type::IfcWarpingStiffnessSelect;
    string_map["IFCWASTETERMINAL"                               ] = Type::IfcWasteTerminal;
    string_map["IFCWASTETERMINALTYPE"                           ] = Type::IfcWasteTerminalType;
    string_map["IFCWASTETERMINALTYPEENUM"                       ] = Type::IfcWasteTerminalTypeEnum;
    string_map["IFCWINDOW"                                      ] = Type::IfcWindow;
    string_map["IFCWINDOWLININGPROPERTIES"                      ] = Type::IfcWindowLiningProperties;
    string_map["IFCWINDOWPANELOPERATIONENUM"                    ] = Type::IfcWindowPanelOperationEnum;
    string_map["IFCWINDOWPANELPOSITIONENUM"                     ] = Type::IfcWindowPanelPositionEnum;
    string_map["IFCWINDOWPANELPROPERTIES"                       ] = Type::IfcWindowPanelProperties;
    string_map["IFCWINDOWSTANDARDCASE"                          ] = Type::IfcWindowStandardCase;
    string_map["IFCWINDOWSTYLE"                                 ] = Type::IfcWindowStyle;
    string_map["IFCWINDOWSTYLECONSTRUCTIONENUM"                 ] = Type::IfcWindowStyleConstructionEnum;
    string_map["IFCWINDOWSTYLEOPERATIONENUM"                    ] = Type::IfcWindowStyleOperationEnum;
    string_map["IFCWINDOWTYPE"                                  ] = Type::IfcWindowType;
    string_map["IFCWINDOWTYPEENUM"                              ] = Type::IfcWindowTypeEnum;
    string_map["IFCWINDOWTYPEPARTITIONINGENUM"                  ] = Type::IfcWindowTypePartitioningEnum;
    string_map["IFCWORKCALENDAR"                                ] = Type::IfcWorkCalendar;
    string_map["IFCWORKCALENDARTYPEENUM"                        ] = Type::IfcWorkCalendarTypeEnum;
    string_map["IFCWORKCONTROL"                                 ] = Type::IfcWorkControl;
    string_map["IFCWORKPLAN"                                    ] = Type::IfcWorkPlan;
    string_map["IFCWORKPLANTYPEENUM"                            ] = Type::IfcWorkPlanTypeEnum;
    string_map["IFCWORKSCHEDULE"                                ] = Type::IfcWorkSchedule;
    string_map["IFCWORKSCHEDULETYPEENUM"                        ] = Type::IfcWorkScheduleTypeEnum;
    string_map["IFCWORKTIME"                                    ] = Type::IfcWorkTime;
    string_map["IFCZONE"                                        ] = Type::IfcZone;
    string_map["IFCZSHAPEPROFILEDEF"                            ] = Type::IfcZShapeProfileDef;
}

Type::Enum Type::FromString(const std::string& s) {
    if (string_map.empty()) InitStringMap();
    std::map<std::string,Type::Enum>::const_iterator it = string_map.find(s);
    if ( it == string_map.end() ) throw IfcException("Unable to find find keyword in schema");
    else return it->second;
}

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

bool Type::IsSimple(Enum v) {
    return v == Type::IfcAbsorbedDoseMeasure || v == Type::IfcAccelerationMeasure || v == Type::IfcAmountOfSubstanceMeasure || v == Type::IfcAngularVelocityMeasure || v == Type::IfcArcIndex || v == Type::IfcAreaDensityMeasure || v == Type::IfcAreaMeasure || v == Type::IfcBinary || v == Type::IfcBoolean || v == Type::IfcColour || v == Type::IfcComplexNumber || v == Type::IfcCompoundPlaneAngleMeasure || v == Type::IfcContextDependentMeasure || v == Type::IfcCountMeasure || v == Type::IfcCurvatureMeasure || v == Type::IfcCurveStyleFontSelect || v == Type::IfcDate || v == Type::IfcDateTime || v == Type::IfcDerivedMeasureValue || v == Type::IfcDescriptiveMeasure || v == Type::IfcDoseEquivalentMeasure || v == Type::IfcDuration || v == Type::IfcDynamicViscosityMeasure || v == Type::IfcElectricCapacitanceMeasure || v == Type::IfcElectricChargeMeasure || v == Type::IfcElectricConductanceMeasure || v == Type::IfcElectricCurrentMeasure || v == Type::IfcElectricResistanceMeasure || v == Type::IfcElectricVoltageMeasure || v == Type::IfcEnergyMeasure || v == Type::IfcForceMeasure || v == Type::IfcFrequencyMeasure || v == Type::IfcHeatFluxDensityMeasure || v == Type::IfcHeatingValueMeasure || v == Type::IfcIdentifier || v == Type::IfcIlluminanceMeasure || v == Type::IfcInductanceMeasure || v == Type::IfcInteger || v == Type::IfcIntegerCountRateMeasure || v == Type::IfcIonConcentrationMeasure || v == Type::IfcIsothermalMoistureCapacityMeasure || v == Type::IfcKinematicViscosityMeasure || v == Type::IfcLabel || v == Type::IfcLengthMeasure || v == Type::IfcLineIndex || v == Type::IfcLinearForceMeasure || v == Type::IfcLinearMomentMeasure || v == Type::IfcLinearStiffnessMeasure || v == Type::IfcLinearVelocityMeasure || v == Type::IfcLogical || v == Type::IfcLuminousFluxMeasure || v == Type::IfcLuminousIntensityDistributionMeasure || v == Type::IfcLuminousIntensityMeasure || v == Type::IfcMagneticFluxDensityMeasure || v == Type::IfcMagneticFluxMeasure || v == Type::IfcMassDensityMeasure || v == Type::IfcMassFlowRateMeasure || v == Type::IfcMassMeasure || v == Type::IfcMassPerLengthMeasure || v == Type::IfcMeasureValue || v == Type::IfcModulusOfElasticityMeasure || v == Type::IfcModulusOfLinearSubgradeReactionMeasure || v == Type::IfcModulusOfRotationalSubgradeReactionMeasure || v == Type::IfcModulusOfSubgradeReactionMeasure || v == Type::IfcMoistureDiffusivityMeasure || v == Type::IfcMolecularWeightMeasure || v == Type::IfcMomentOfInertiaMeasure || v == Type::IfcMonetaryMeasure || v == Type::IfcNonNegativeLengthMeasure || v == Type::IfcNormalisedRatioMeasure || v == Type::IfcNullStyle || v == Type::IfcNumericMeasure || v == Type::IfcPHMeasure || v == Type::IfcParameterValue || v == Type::IfcPlanarForceMeasure || v == Type::IfcPlaneAngleMeasure || v == Type::IfcPositiveInteger || v == Type::IfcPositiveLengthMeasure || v == Type::IfcPositivePlaneAngleMeasure || v == Type::IfcPositiveRatioMeasure || v == Type::IfcPowerMeasure || v == Type::IfcPressureMeasure || v == Type::IfcPropertySetDefinitionSet || v == Type::IfcRadioActivityMeasure || v == Type::IfcRatioMeasure || v == Type::IfcReal || v == Type::IfcRotationalFrequencyMeasure || v == Type::IfcRotationalMassMeasure || v == Type::IfcRotationalStiffnessMeasure || v == Type::IfcSectionModulusMeasure || v == Type::IfcSectionalAreaIntegralMeasure || v == Type::IfcShearModulusMeasure || v == Type::IfcSimpleValue || v == Type::IfcSolidAngleMeasure || v == Type::IfcSoundPowerLevelMeasure || v == Type::IfcSoundPowerMeasure || v == Type::IfcSoundPressureLevelMeasure || v == Type::IfcSoundPressureMeasure || v == Type::IfcSpecificHeatCapacityMeasure || v == Type::IfcSpecularExponent || v == Type::IfcSpecularRoughness || v == Type::IfcTemperatureGradientMeasure || v == Type::IfcTemperatureRateOfChangeMeasure || v == Type::IfcText || v == Type::IfcThermalAdmittanceMeasure || v == Type::IfcThermalConductivityMeasure || v == Type::IfcThermalExpansionCoefficientMeasure || v == Type::IfcThermalResistanceMeasure || v == Type::IfcThermalTransmittanceMeasure || v == Type::IfcThermodynamicTemperatureMeasure || v == Type::IfcTime || v == Type::IfcTimeMeasure || v == Type::IfcTimeStamp || v == Type::IfcTorqueMeasure || v == Type::IfcValue || v == Type::IfcVaporPermeabilityMeasure || v == Type::IfcVolumeMeasure || v == Type::IfcVolumetricFlowRateMeasure || v == Type::IfcWarpingConstantMeasure || v == Type::IfcWarpingMomentMeasure;
}


const char* IfcActionRequestTypeEnum::ToString(IfcActionRequestTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "EMAIL", "FAX", "PHONE", "POST", "VERBAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcActionRequestTypeEnum::IfcActionRequestTypeEnum IfcActionRequestTypeEnum::FromString(const std::string& s) {
    if (s == "EMAIL") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_EMAIL;
    if (s == "FAX") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_FAX;
    if (s == "PHONE") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_PHONE;
    if (s == "POST") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_POST;
    if (s == "VERBAL") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_VERBAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcActionRequestTypeEnum::IfcActionRequestType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcActionSourceTypeEnum::ToString(IfcActionSourceTypeEnum v) {
    if ( v < 0 || v >= 27 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DEAD_LOAD_G", "COMPLETION_G1", "LIVE_LOAD_Q", "SNOW_S", "WIND_W", "PRESTRESSING_P", "SETTLEMENT_U", "TEMPERATURE_T", "EARTHQUAKE_E", "FIRE", "IMPULSE", "IMPACT", "TRANSPORT", "ERECTION", "PROPPING", "SYSTEM_IMPERFECTION", "SHRINKAGE", "CREEP", "LACK_OF_FIT", "BUOYANCY", "ICE", "CURRENT", "WAVE", "RAIN", "BRAKES", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcActionSourceTypeEnum::IfcActionSourceTypeEnum IfcActionSourceTypeEnum::FromString(const std::string& s) {
    if (s == "DEAD_LOAD_G") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_DEAD_LOAD_G;
    if (s == "COMPLETION_G1") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_COMPLETION_G1;
    if (s == "LIVE_LOAD_Q") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_LIVE_LOAD_Q;
    if (s == "SNOW_S") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_SNOW_S;
    if (s == "WIND_W") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_WIND_W;
    if (s == "PRESTRESSING_P") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_PRESTRESSING_P;
    if (s == "SETTLEMENT_U") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_SETTLEMENT_U;
    if (s == "TEMPERATURE_T") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_TEMPERATURE_T;
    if (s == "EARTHQUAKE_E") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_EARTHQUAKE_E;
    if (s == "FIRE") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_FIRE;
    if (s == "IMPULSE") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_IMPULSE;
    if (s == "IMPACT") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_IMPACT;
    if (s == "TRANSPORT") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_TRANSPORT;
    if (s == "ERECTION") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_ERECTION;
    if (s == "PROPPING") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_PROPPING;
    if (s == "SYSTEM_IMPERFECTION") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_SYSTEM_IMPERFECTION;
    if (s == "SHRINKAGE") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_SHRINKAGE;
    if (s == "CREEP") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_CREEP;
    if (s == "LACK_OF_FIT") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_LACK_OF_FIT;
    if (s == "BUOYANCY") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_BUOYANCY;
    if (s == "ICE") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_ICE;
    if (s == "CURRENT") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_CURRENT;
    if (s == "WAVE") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_WAVE;
    if (s == "RAIN") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_RAIN;
    if (s == "BRAKES") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_BRAKES;
    if (s == "USERDEFINED") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcActionSourceTypeEnum::IfcActionSourceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcActionTypeEnum::ToString(IfcActionTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PERMANENT_G", "VARIABLE_Q", "EXTRAORDINARY_A", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcActionTypeEnum::IfcActionTypeEnum IfcActionTypeEnum::FromString(const std::string& s) {
    if (s == "PERMANENT_G") return ::Ifc4::IfcActionTypeEnum::IfcActionType_PERMANENT_G;
    if (s == "VARIABLE_Q") return ::Ifc4::IfcActionTypeEnum::IfcActionType_VARIABLE_Q;
    if (s == "EXTRAORDINARY_A") return ::Ifc4::IfcActionTypeEnum::IfcActionType_EXTRAORDINARY_A;
    if (s == "USERDEFINED") return ::Ifc4::IfcActionTypeEnum::IfcActionType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcActionTypeEnum::IfcActionType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcActuatorTypeEnum::ToString(IfcActuatorTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ELECTRICACTUATOR", "HANDOPERATEDACTUATOR", "HYDRAULICACTUATOR", "PNEUMATICACTUATOR", "THERMOSTATICACTUATOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcActuatorTypeEnum::IfcActuatorTypeEnum IfcActuatorTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRICACTUATOR") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_ELECTRICACTUATOR;
    if (s == "HANDOPERATEDACTUATOR") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_HANDOPERATEDACTUATOR;
    if (s == "HYDRAULICACTUATOR") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_HYDRAULICACTUATOR;
    if (s == "PNEUMATICACTUATOR") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_PNEUMATICACTUATOR;
    if (s == "THERMOSTATICACTUATOR") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_THERMOSTATICACTUATOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcActuatorTypeEnum::IfcActuatorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAddressTypeEnum::ToString(IfcAddressTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "OFFICE", "SITE", "HOME", "DISTRIBUTIONPOINT", "USERDEFINED" };
    return names[v];
}

IfcAddressTypeEnum::IfcAddressTypeEnum IfcAddressTypeEnum::FromString(const std::string& s) {
    if (s == "OFFICE") return ::Ifc4::IfcAddressTypeEnum::IfcAddressType_OFFICE;
    if (s == "SITE") return ::Ifc4::IfcAddressTypeEnum::IfcAddressType_SITE;
    if (s == "HOME") return ::Ifc4::IfcAddressTypeEnum::IfcAddressType_HOME;
    if (s == "DISTRIBUTIONPOINT") return ::Ifc4::IfcAddressTypeEnum::IfcAddressType_DISTRIBUTIONPOINT;
    if (s == "USERDEFINED") return ::Ifc4::IfcAddressTypeEnum::IfcAddressType_USERDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAirTerminalBoxTypeEnum::ToString(IfcAirTerminalBoxTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONSTANTFLOW", "VARIABLEFLOWPRESSUREDEPENDANT", "VARIABLEFLOWPRESSUREINDEPENDANT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum IfcAirTerminalBoxTypeEnum::FromString(const std::string& s) {
    if (s == "CONSTANTFLOW") return ::Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_CONSTANTFLOW;
    if (s == "VARIABLEFLOWPRESSUREDEPENDANT") return ::Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREDEPENDANT;
    if (s == "VARIABLEFLOWPRESSUREINDEPENDANT") return ::Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREINDEPENDANT;
    if (s == "USERDEFINED") return ::Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAirTerminalTypeEnum::ToString(IfcAirTerminalTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DIFFUSER", "GRILLE", "LOUVRE", "REGISTER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum IfcAirTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "DIFFUSER") return ::Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalType_DIFFUSER;
    if (s == "GRILLE") return ::Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalType_GRILLE;
    if (s == "LOUVRE") return ::Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalType_LOUVRE;
    if (s == "REGISTER") return ::Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalType_REGISTER;
    if (s == "USERDEFINED") return ::Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAirTerminalTypeEnum::IfcAirTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAirToAirHeatRecoveryTypeEnum::ToString(IfcAirToAirHeatRecoveryTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FIXEDPLATECOUNTERFLOWEXCHANGER", "FIXEDPLATECROSSFLOWEXCHANGER", "FIXEDPLATEPARALLELFLOWEXCHANGER", "ROTARYWHEEL", "RUNAROUNDCOILLOOP", "HEATPIPE", "TWINTOWERENTHALPYRECOVERYLOOPS", "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS", "THERMOSIPHONCOILTYPEHEATEXCHANGERS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum IfcAirToAirHeatRecoveryTypeEnum::FromString(const std::string& s) {
    if (s == "FIXEDPLATECOUNTERFLOWEXCHANGER") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_FIXEDPLATECOUNTERFLOWEXCHANGER;
    if (s == "FIXEDPLATECROSSFLOWEXCHANGER") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_FIXEDPLATECROSSFLOWEXCHANGER;
    if (s == "FIXEDPLATEPARALLELFLOWEXCHANGER") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_FIXEDPLATEPARALLELFLOWEXCHANGER;
    if (s == "ROTARYWHEEL") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_ROTARYWHEEL;
    if (s == "RUNAROUNDCOILLOOP") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_RUNAROUNDCOILLOOP;
    if (s == "HEATPIPE") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_HEATPIPE;
    if (s == "TWINTOWERENTHALPYRECOVERYLOOPS") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_TWINTOWERENTHALPYRECOVERYLOOPS;
    if (s == "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_THERMOSIPHONSEALEDTUBEHEATEXCHANGERS;
    if (s == "THERMOSIPHONCOILTYPEHEATEXCHANGERS") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_THERMOSIPHONCOILTYPEHEATEXCHANGERS;
    if (s == "USERDEFINED") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAlarmTypeEnum::ToString(IfcAlarmTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BELL", "BREAKGLASSBUTTON", "LIGHT", "MANUALPULLBOX", "SIREN", "WHISTLE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAlarmTypeEnum::IfcAlarmTypeEnum IfcAlarmTypeEnum::FromString(const std::string& s) {
    if (s == "BELL") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_BELL;
    if (s == "BREAKGLASSBUTTON") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_BREAKGLASSBUTTON;
    if (s == "LIGHT") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_LIGHT;
    if (s == "MANUALPULLBOX") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_MANUALPULLBOX;
    if (s == "SIREN") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_SIREN;
    if (s == "WHISTLE") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_WHISTLE;
    if (s == "USERDEFINED") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAlarmTypeEnum::IfcAlarmType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAnalysisModelTypeEnum::ToString(IfcAnalysisModelTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "IN_PLANE_LOADING_2D", "OUT_PLANE_LOADING_2D", "LOADING_3D", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum IfcAnalysisModelTypeEnum::FromString(const std::string& s) {
    if (s == "IN_PLANE_LOADING_2D") return ::Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_IN_PLANE_LOADING_2D;
    if (s == "OUT_PLANE_LOADING_2D") return ::Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_OUT_PLANE_LOADING_2D;
    if (s == "LOADING_3D") return ::Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_LOADING_3D;
    if (s == "USERDEFINED") return ::Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAnalysisTheoryTypeEnum::ToString(IfcAnalysisTheoryTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FIRST_ORDER_THEORY", "SECOND_ORDER_THEORY", "THIRD_ORDER_THEORY", "FULL_NONLINEAR_THEORY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum IfcAnalysisTheoryTypeEnum::FromString(const std::string& s) {
    if (s == "FIRST_ORDER_THEORY") return ::Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_FIRST_ORDER_THEORY;
    if (s == "SECOND_ORDER_THEORY") return ::Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_SECOND_ORDER_THEORY;
    if (s == "THIRD_ORDER_THEORY") return ::Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_THIRD_ORDER_THEORY;
    if (s == "FULL_NONLINEAR_THEORY") return ::Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_FULL_NONLINEAR_THEORY;
    if (s == "USERDEFINED") return ::Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcArithmeticOperatorEnum::ToString(IfcArithmeticOperatorEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ADD", "DIVIDE", "MULTIPLY", "SUBTRACT" };
    return names[v];
}

IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum IfcArithmeticOperatorEnum::FromString(const std::string& s) {
    if (s == "ADD") return ::Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperator_ADD;
    if (s == "DIVIDE") return ::Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperator_DIVIDE;
    if (s == "MULTIPLY") return ::Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperator_MULTIPLY;
    if (s == "SUBTRACT") return ::Ifc4::IfcArithmeticOperatorEnum::IfcArithmeticOperator_SUBTRACT;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAssemblyPlaceEnum::ToString(IfcAssemblyPlaceEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SITE", "FACTORY", "NOTDEFINED" };
    return names[v];
}

IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum IfcAssemblyPlaceEnum::FromString(const std::string& s) {
    if (s == "SITE") return ::Ifc4::IfcAssemblyPlaceEnum::IfcAssemblyPlace_SITE;
    if (s == "FACTORY") return ::Ifc4::IfcAssemblyPlaceEnum::IfcAssemblyPlace_FACTORY;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAssemblyPlaceEnum::IfcAssemblyPlace_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcAudioVisualApplianceTypeEnum::ToString(IfcAudioVisualApplianceTypeEnum v) {
    if ( v < 0 || v >= 13 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AMPLIFIER", "CAMERA", "DISPLAY", "MICROPHONE", "PLAYER", "PROJECTOR", "RECEIVER", "SPEAKER", "SWITCHER", "TELEPHONE", "TUNER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum IfcAudioVisualApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "AMPLIFIER") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_AMPLIFIER;
    if (s == "CAMERA") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_CAMERA;
    if (s == "DISPLAY") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_DISPLAY;
    if (s == "MICROPHONE") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_MICROPHONE;
    if (s == "PLAYER") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_PLAYER;
    if (s == "PROJECTOR") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_PROJECTOR;
    if (s == "RECEIVER") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_RECEIVER;
    if (s == "SPEAKER") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_SPEAKER;
    if (s == "SWITCHER") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_SWITCHER;
    if (s == "TELEPHONE") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_TELEPHONE;
    if (s == "TUNER") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_TUNER;
    if (s == "USERDEFINED") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBSplineCurveForm::ToString(IfcBSplineCurveForm v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "POLYLINE_FORM", "CIRCULAR_ARC", "ELLIPTIC_ARC", "PARABOLIC_ARC", "HYPERBOLIC_ARC", "UNSPECIFIED" };
    return names[v];
}

IfcBSplineCurveForm::IfcBSplineCurveForm IfcBSplineCurveForm::FromString(const std::string& s) {
    if (s == "POLYLINE_FORM") return ::Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm_POLYLINE_FORM;
    if (s == "CIRCULAR_ARC") return ::Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm_CIRCULAR_ARC;
    if (s == "ELLIPTIC_ARC") return ::Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm_ELLIPTIC_ARC;
    if (s == "PARABOLIC_ARC") return ::Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm_PARABOLIC_ARC;
    if (s == "HYPERBOLIC_ARC") return ::Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm_HYPERBOLIC_ARC;
    if (s == "UNSPECIFIED") return ::Ifc4::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBSplineSurfaceForm::ToString(IfcBSplineSurfaceForm v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PLANE_SURF", "CYLINDRICAL_SURF", "CONICAL_SURF", "SPHERICAL_SURF", "TOROIDAL_SURF", "SURF_OF_REVOLUTION", "RULED_SURF", "GENERALISED_CONE", "QUADRIC_SURF", "SURF_OF_LINEAR_EXTRUSION", "UNSPECIFIED" };
    return names[v];
}

IfcBSplineSurfaceForm::IfcBSplineSurfaceForm IfcBSplineSurfaceForm::FromString(const std::string& s) {
    if (s == "PLANE_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_PLANE_SURF;
    if (s == "CYLINDRICAL_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_CYLINDRICAL_SURF;
    if (s == "CONICAL_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_CONICAL_SURF;
    if (s == "SPHERICAL_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_SPHERICAL_SURF;
    if (s == "TOROIDAL_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_TOROIDAL_SURF;
    if (s == "SURF_OF_REVOLUTION") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_SURF_OF_REVOLUTION;
    if (s == "RULED_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_RULED_SURF;
    if (s == "GENERALISED_CONE") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_GENERALISED_CONE;
    if (s == "QUADRIC_SURF") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_QUADRIC_SURF;
    if (s == "SURF_OF_LINEAR_EXTRUSION") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_SURF_OF_LINEAR_EXTRUSION;
    if (s == "UNSPECIFIED") return ::Ifc4::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_UNSPECIFIED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBeamTypeEnum::ToString(IfcBeamTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BEAM", "JOIST", "HOLLOWCORE", "LINTEL", "SPANDREL", "T_BEAM", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcBeamTypeEnum::IfcBeamTypeEnum IfcBeamTypeEnum::FromString(const std::string& s) {
    if (s == "BEAM") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_BEAM;
    if (s == "JOIST") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_JOIST;
    if (s == "HOLLOWCORE") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_HOLLOWCORE;
    if (s == "LINTEL") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_LINTEL;
    if (s == "SPANDREL") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_SPANDREL;
    if (s == "T_BEAM") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_T_BEAM;
    if (s == "USERDEFINED") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcBeamTypeEnum::IfcBeamType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBenchmarkEnum::ToString(IfcBenchmarkEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "GREATERTHAN", "GREATERTHANOREQUALTO", "LESSTHAN", "LESSTHANOREQUALTO", "EQUALTO", "NOTEQUALTO", "INCLUDES", "NOTINCLUDES", "INCLUDEDIN", "NOTINCLUDEDIN" };
    return names[v];
}

IfcBenchmarkEnum::IfcBenchmarkEnum IfcBenchmarkEnum::FromString(const std::string& s) {
    if (s == "GREATERTHAN") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_GREATERTHAN;
    if (s == "GREATERTHANOREQUALTO") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_GREATERTHANOREQUALTO;
    if (s == "LESSTHAN") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_LESSTHAN;
    if (s == "LESSTHANOREQUALTO") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_LESSTHANOREQUALTO;
    if (s == "EQUALTO") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_EQUALTO;
    if (s == "NOTEQUALTO") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_NOTEQUALTO;
    if (s == "INCLUDES") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_INCLUDES;
    if (s == "NOTINCLUDES") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_NOTINCLUDES;
    if (s == "INCLUDEDIN") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_INCLUDEDIN;
    if (s == "NOTINCLUDEDIN") return ::Ifc4::IfcBenchmarkEnum::IfcBenchmark_NOTINCLUDEDIN;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBoilerTypeEnum::ToString(IfcBoilerTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "WATER", "STEAM", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcBoilerTypeEnum::IfcBoilerTypeEnum IfcBoilerTypeEnum::FromString(const std::string& s) {
    if (s == "WATER") return ::Ifc4::IfcBoilerTypeEnum::IfcBoilerType_WATER;
    if (s == "STEAM") return ::Ifc4::IfcBoilerTypeEnum::IfcBoilerType_STEAM;
    if (s == "USERDEFINED") return ::Ifc4::IfcBoilerTypeEnum::IfcBoilerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcBoilerTypeEnum::IfcBoilerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBooleanOperator::ToString(IfcBooleanOperator v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "UNION", "INTERSECTION", "DIFFERENCE" };
    return names[v];
}

IfcBooleanOperator::IfcBooleanOperator IfcBooleanOperator::FromString(const std::string& s) {
    if (s == "UNION") return ::Ifc4::IfcBooleanOperator::IfcBooleanOperator_UNION;
    if (s == "INTERSECTION") return ::Ifc4::IfcBooleanOperator::IfcBooleanOperator_INTERSECTION;
    if (s == "DIFFERENCE") return ::Ifc4::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBuildingElementPartTypeEnum::ToString(IfcBuildingElementPartTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "INSULATION", "PRECASTPANEL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum IfcBuildingElementPartTypeEnum::FromString(const std::string& s) {
    if (s == "INSULATION") return ::Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_INSULATION;
    if (s == "PRECASTPANEL") return ::Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_PRECASTPANEL;
    if (s == "USERDEFINED") return ::Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBuildingElementProxyTypeEnum::ToString(IfcBuildingElementProxyTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMPLEX", "ELEMENT", "PARTIAL", "PROVISIONFORVOID", "PROVISIONFORSPACE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum IfcBuildingElementProxyTypeEnum::FromString(const std::string& s) {
    if (s == "COMPLEX") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_COMPLEX;
    if (s == "ELEMENT") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_ELEMENT;
    if (s == "PARTIAL") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_PARTIAL;
    if (s == "PROVISIONFORVOID") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_PROVISIONFORVOID;
    if (s == "PROVISIONFORSPACE") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_PROVISIONFORSPACE;
    if (s == "USERDEFINED") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBuildingSystemTypeEnum::ToString(IfcBuildingSystemTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FENESTRATION", "FOUNDATION", "LOADBEARING", "OUTERSHELL", "SHADING", "TRANSPORT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum IfcBuildingSystemTypeEnum::FromString(const std::string& s) {
    if (s == "FENESTRATION") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_FENESTRATION;
    if (s == "FOUNDATION") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_FOUNDATION;
    if (s == "LOADBEARING") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_LOADBEARING;
    if (s == "OUTERSHELL") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_OUTERSHELL;
    if (s == "SHADING") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_SHADING;
    if (s == "TRANSPORT") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_TRANSPORT;
    if (s == "USERDEFINED") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcBurnerTypeEnum::ToString(IfcBurnerTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcBurnerTypeEnum::IfcBurnerTypeEnum IfcBurnerTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcBurnerTypeEnum::IfcBurnerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcBurnerTypeEnum::IfcBurnerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCableCarrierFittingTypeEnum::ToString(IfcCableCarrierFittingTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BEND", "CROSS", "REDUCER", "TEE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum IfcCableCarrierFittingTypeEnum::FromString(const std::string& s) {
    if (s == "BEND") return ::Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_BEND;
    if (s == "CROSS") return ::Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_CROSS;
    if (s == "REDUCER") return ::Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_REDUCER;
    if (s == "TEE") return ::Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_TEE;
    if (s == "USERDEFINED") return ::Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCableCarrierSegmentTypeEnum::ToString(IfcCableCarrierSegmentTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CABLELADDERSEGMENT", "CABLETRAYSEGMENT", "CABLETRUNKINGSEGMENT", "CONDUITSEGMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum IfcCableCarrierSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CABLELADDERSEGMENT") return ::Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLELADDERSEGMENT;
    if (s == "CABLETRAYSEGMENT") return ::Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLETRAYSEGMENT;
    if (s == "CABLETRUNKINGSEGMENT") return ::Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLETRUNKINGSEGMENT;
    if (s == "CONDUITSEGMENT") return ::Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CONDUITSEGMENT;
    if (s == "USERDEFINED") return ::Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCableFittingTypeEnum::ToString(IfcCableFittingTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONNECTOR", "ENTRY", "EXIT", "JUNCTION", "TRANSITION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCableFittingTypeEnum::IfcCableFittingTypeEnum IfcCableFittingTypeEnum::FromString(const std::string& s) {
    if (s == "CONNECTOR") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_CONNECTOR;
    if (s == "ENTRY") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_ENTRY;
    if (s == "EXIT") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_EXIT;
    if (s == "JUNCTION") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_JUNCTION;
    if (s == "TRANSITION") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_TRANSITION;
    if (s == "USERDEFINED") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCableFittingTypeEnum::IfcCableFittingType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCableSegmentTypeEnum::ToString(IfcCableSegmentTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BUSBARSEGMENT", "CABLESEGMENT", "CONDUCTORSEGMENT", "CORESEGMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum IfcCableSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "BUSBARSEGMENT") return ::Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentType_BUSBARSEGMENT;
    if (s == "CABLESEGMENT") return ::Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentType_CABLESEGMENT;
    if (s == "CONDUCTORSEGMENT") return ::Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentType_CONDUCTORSEGMENT;
    if (s == "CORESEGMENT") return ::Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentType_CORESEGMENT;
    if (s == "USERDEFINED") return ::Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCableSegmentTypeEnum::IfcCableSegmentType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcChangeActionEnum::ToString(IfcChangeActionEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "NOCHANGE", "MODIFIED", "ADDED", "DELETED", "NOTDEFINED" };
    return names[v];
}

IfcChangeActionEnum::IfcChangeActionEnum IfcChangeActionEnum::FromString(const std::string& s) {
    if (s == "NOCHANGE") return ::Ifc4::IfcChangeActionEnum::IfcChangeAction_NOCHANGE;
    if (s == "MODIFIED") return ::Ifc4::IfcChangeActionEnum::IfcChangeAction_MODIFIED;
    if (s == "ADDED") return ::Ifc4::IfcChangeActionEnum::IfcChangeAction_ADDED;
    if (s == "DELETED") return ::Ifc4::IfcChangeActionEnum::IfcChangeAction_DELETED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcChangeActionEnum::IfcChangeAction_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcChillerTypeEnum::ToString(IfcChillerTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRCOOLED", "WATERCOOLED", "HEATRECOVERY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcChillerTypeEnum::IfcChillerTypeEnum IfcChillerTypeEnum::FromString(const std::string& s) {
    if (s == "AIRCOOLED") return ::Ifc4::IfcChillerTypeEnum::IfcChillerType_AIRCOOLED;
    if (s == "WATERCOOLED") return ::Ifc4::IfcChillerTypeEnum::IfcChillerType_WATERCOOLED;
    if (s == "HEATRECOVERY") return ::Ifc4::IfcChillerTypeEnum::IfcChillerType_HEATRECOVERY;
    if (s == "USERDEFINED") return ::Ifc4::IfcChillerTypeEnum::IfcChillerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcChillerTypeEnum::IfcChillerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcChimneyTypeEnum::ToString(IfcChimneyTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcChimneyTypeEnum::IfcChimneyTypeEnum IfcChimneyTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcChimneyTypeEnum::IfcChimneyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcChimneyTypeEnum::IfcChimneyType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCoilTypeEnum::ToString(IfcCoilTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DXCOOLINGCOIL", "ELECTRICHEATINGCOIL", "GASHEATINGCOIL", "HYDRONICCOIL", "STEAMHEATINGCOIL", "WATERCOOLINGCOIL", "WATERHEATINGCOIL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCoilTypeEnum::IfcCoilTypeEnum IfcCoilTypeEnum::FromString(const std::string& s) {
    if (s == "DXCOOLINGCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_DXCOOLINGCOIL;
    if (s == "ELECTRICHEATINGCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_ELECTRICHEATINGCOIL;
    if (s == "GASHEATINGCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_GASHEATINGCOIL;
    if (s == "HYDRONICCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_HYDRONICCOIL;
    if (s == "STEAMHEATINGCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_STEAMHEATINGCOIL;
    if (s == "WATERCOOLINGCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_WATERCOOLINGCOIL;
    if (s == "WATERHEATINGCOIL") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_WATERHEATINGCOIL;
    if (s == "USERDEFINED") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCoilTypeEnum::IfcCoilType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcColumnTypeEnum::ToString(IfcColumnTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COLUMN", "PILASTER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcColumnTypeEnum::IfcColumnTypeEnum IfcColumnTypeEnum::FromString(const std::string& s) {
    if (s == "COLUMN") return ::Ifc4::IfcColumnTypeEnum::IfcColumnType_COLUMN;
    if (s == "PILASTER") return ::Ifc4::IfcColumnTypeEnum::IfcColumnType_PILASTER;
    if (s == "USERDEFINED") return ::Ifc4::IfcColumnTypeEnum::IfcColumnType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcColumnTypeEnum::IfcColumnType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCommunicationsApplianceTypeEnum::ToString(IfcCommunicationsApplianceTypeEnum v) {
    if ( v < 0 || v >= 14 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ANTENNA", "COMPUTER", "FAX", "GATEWAY", "MODEM", "NETWORKAPPLIANCE", "NETWORKBRIDGE", "NETWORKHUB", "PRINTER", "REPEATER", "ROUTER", "SCANNER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum IfcCommunicationsApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "ANTENNA") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_ANTENNA;
    if (s == "COMPUTER") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_COMPUTER;
    if (s == "FAX") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_FAX;
    if (s == "GATEWAY") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_GATEWAY;
    if (s == "MODEM") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_MODEM;
    if (s == "NETWORKAPPLIANCE") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NETWORKAPPLIANCE;
    if (s == "NETWORKBRIDGE") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NETWORKBRIDGE;
    if (s == "NETWORKHUB") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NETWORKHUB;
    if (s == "PRINTER") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_PRINTER;
    if (s == "REPEATER") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_REPEATER;
    if (s == "ROUTER") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_ROUTER;
    if (s == "SCANNER") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_SCANNER;
    if (s == "USERDEFINED") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcComplexPropertyTemplateTypeEnum::ToString(IfcComplexPropertyTemplateTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "P_COMPLEX", "Q_COMPLEX" };
    return names[v];
}

IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum IfcComplexPropertyTemplateTypeEnum::FromString(const std::string& s) {
    if (s == "P_COMPLEX") return ::Ifc4::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateType_P_COMPLEX;
    if (s == "Q_COMPLEX") return ::Ifc4::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateType_Q_COMPLEX;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCompressorTypeEnum::ToString(IfcCompressorTypeEnum v) {
    if ( v < 0 || v >= 17 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DYNAMIC", "RECIPROCATING", "ROTARY", "SCROLL", "TROCHOIDAL", "SINGLESTAGE", "BOOSTER", "OPENTYPE", "HERMETIC", "SEMIHERMETIC", "WELDEDSHELLHERMETIC", "ROLLINGPISTON", "ROTARYVANE", "SINGLESCREW", "TWINSCREW", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCompressorTypeEnum::IfcCompressorTypeEnum IfcCompressorTypeEnum::FromString(const std::string& s) {
    if (s == "DYNAMIC") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_DYNAMIC;
    if (s == "RECIPROCATING") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_RECIPROCATING;
    if (s == "ROTARY") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_ROTARY;
    if (s == "SCROLL") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_SCROLL;
    if (s == "TROCHOIDAL") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_TROCHOIDAL;
    if (s == "SINGLESTAGE") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_SINGLESTAGE;
    if (s == "BOOSTER") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_BOOSTER;
    if (s == "OPENTYPE") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_OPENTYPE;
    if (s == "HERMETIC") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_HERMETIC;
    if (s == "SEMIHERMETIC") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_SEMIHERMETIC;
    if (s == "WELDEDSHELLHERMETIC") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_WELDEDSHELLHERMETIC;
    if (s == "ROLLINGPISTON") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_ROLLINGPISTON;
    if (s == "ROTARYVANE") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_ROTARYVANE;
    if (s == "SINGLESCREW") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_SINGLESCREW;
    if (s == "TWINSCREW") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_TWINSCREW;
    if (s == "USERDEFINED") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCompressorTypeEnum::IfcCompressorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCondenserTypeEnum::ToString(IfcCondenserTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRCOOLED", "EVAPORATIVECOOLED", "WATERCOOLED", "WATERCOOLEDBRAZEDPLATE", "WATERCOOLEDSHELLCOIL", "WATERCOOLEDSHELLTUBE", "WATERCOOLEDTUBEINTUBE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCondenserTypeEnum::IfcCondenserTypeEnum IfcCondenserTypeEnum::FromString(const std::string& s) {
    if (s == "AIRCOOLED") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_AIRCOOLED;
    if (s == "EVAPORATIVECOOLED") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_EVAPORATIVECOOLED;
    if (s == "WATERCOOLED") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLED;
    if (s == "WATERCOOLEDBRAZEDPLATE") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDBRAZEDPLATE;
    if (s == "WATERCOOLEDSHELLCOIL") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDSHELLCOIL;
    if (s == "WATERCOOLEDSHELLTUBE") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDSHELLTUBE;
    if (s == "WATERCOOLEDTUBEINTUBE") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDTUBEINTUBE;
    if (s == "USERDEFINED") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCondenserTypeEnum::IfcCondenserType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcConnectionTypeEnum::ToString(IfcConnectionTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ATPATH", "ATSTART", "ATEND", "NOTDEFINED" };
    return names[v];
}

IfcConnectionTypeEnum::IfcConnectionTypeEnum IfcConnectionTypeEnum::FromString(const std::string& s) {
    if (s == "ATPATH") return ::Ifc4::IfcConnectionTypeEnum::IfcConnectionType_ATPATH;
    if (s == "ATSTART") return ::Ifc4::IfcConnectionTypeEnum::IfcConnectionType_ATSTART;
    if (s == "ATEND") return ::Ifc4::IfcConnectionTypeEnum::IfcConnectionType_ATEND;
    if (s == "NOTDEFINED") return ::Ifc4::IfcConnectionTypeEnum::IfcConnectionType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcConstraintEnum::ToString(IfcConstraintEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "HARD", "SOFT", "ADVISORY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcConstraintEnum::IfcConstraintEnum IfcConstraintEnum::FromString(const std::string& s) {
    if (s == "HARD") return ::Ifc4::IfcConstraintEnum::IfcConstraint_HARD;
    if (s == "SOFT") return ::Ifc4::IfcConstraintEnum::IfcConstraint_SOFT;
    if (s == "ADVISORY") return ::Ifc4::IfcConstraintEnum::IfcConstraint_ADVISORY;
    if (s == "USERDEFINED") return ::Ifc4::IfcConstraintEnum::IfcConstraint_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcConstraintEnum::IfcConstraint_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcConstructionEquipmentResourceTypeEnum::ToString(IfcConstructionEquipmentResourceTypeEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DEMOLISHING", "EARTHMOVING", "ERECTING", "HEATING", "LIGHTING", "PAVING", "PUMPING", "TRANSPORTING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum IfcConstructionEquipmentResourceTypeEnum::FromString(const std::string& s) {
    if (s == "DEMOLISHING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_DEMOLISHING;
    if (s == "EARTHMOVING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_EARTHMOVING;
    if (s == "ERECTING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_ERECTING;
    if (s == "HEATING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_HEATING;
    if (s == "LIGHTING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_LIGHTING;
    if (s == "PAVING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_PAVING;
    if (s == "PUMPING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_PUMPING;
    if (s == "TRANSPORTING") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_TRANSPORTING;
    if (s == "USERDEFINED") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcConstructionMaterialResourceTypeEnum::ToString(IfcConstructionMaterialResourceTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AGGREGATES", "CONCRETE", "DRYWALL", "FUEL", "GYPSUM", "MASONRY", "METAL", "PLASTIC", "WOOD", "NOTDEFINED", "USERDEFINED" };
    return names[v];
}

IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum IfcConstructionMaterialResourceTypeEnum::FromString(const std::string& s) {
    if (s == "AGGREGATES") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_AGGREGATES;
    if (s == "CONCRETE") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_CONCRETE;
    if (s == "DRYWALL") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_DRYWALL;
    if (s == "FUEL") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_FUEL;
    if (s == "GYPSUM") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_GYPSUM;
    if (s == "MASONRY") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_MASONRY;
    if (s == "METAL") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_METAL;
    if (s == "PLASTIC") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_PLASTIC;
    if (s == "WOOD") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_WOOD;
    if (s == "NOTDEFINED") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_NOTDEFINED;
    if (s == "USERDEFINED") return ::Ifc4::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_USERDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcConstructionProductResourceTypeEnum::ToString(IfcConstructionProductResourceTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ASSEMBLY", "FORMWORK", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum IfcConstructionProductResourceTypeEnum::FromString(const std::string& s) {
    if (s == "ASSEMBLY") return ::Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_ASSEMBLY;
    if (s == "FORMWORK") return ::Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_FORMWORK;
    if (s == "USERDEFINED") return ::Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcControllerTypeEnum::ToString(IfcControllerTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FLOATING", "PROGRAMMABLE", "PROPORTIONAL", "MULTIPOSITION", "TWOPOSITION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcControllerTypeEnum::IfcControllerTypeEnum IfcControllerTypeEnum::FromString(const std::string& s) {
    if (s == "FLOATING") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_FLOATING;
    if (s == "PROGRAMMABLE") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_PROGRAMMABLE;
    if (s == "PROPORTIONAL") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_PROPORTIONAL;
    if (s == "MULTIPOSITION") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_MULTIPOSITION;
    if (s == "TWOPOSITION") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_TWOPOSITION;
    if (s == "USERDEFINED") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcControllerTypeEnum::IfcControllerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCooledBeamTypeEnum::ToString(IfcCooledBeamTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ACTIVE", "PASSIVE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum IfcCooledBeamTypeEnum::FromString(const std::string& s) {
    if (s == "ACTIVE") return ::Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamType_ACTIVE;
    if (s == "PASSIVE") return ::Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamType_PASSIVE;
    if (s == "USERDEFINED") return ::Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCooledBeamTypeEnum::IfcCooledBeamType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCoolingTowerTypeEnum::ToString(IfcCoolingTowerTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "NATURALDRAFT", "MECHANICALINDUCEDDRAFT", "MECHANICALFORCEDDRAFT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum IfcCoolingTowerTypeEnum::FromString(const std::string& s) {
    if (s == "NATURALDRAFT") return ::Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_NATURALDRAFT;
    if (s == "MECHANICALINDUCEDDRAFT") return ::Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_MECHANICALINDUCEDDRAFT;
    if (s == "MECHANICALFORCEDDRAFT") return ::Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_MECHANICALFORCEDDRAFT;
    if (s == "USERDEFINED") return ::Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCostItemTypeEnum::ToString(IfcCostItemTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCostItemTypeEnum::IfcCostItemTypeEnum IfcCostItemTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcCostItemTypeEnum::IfcCostItemType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCostItemTypeEnum::IfcCostItemType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCostScheduleTypeEnum::ToString(IfcCostScheduleTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BUDGET", "COSTPLAN", "ESTIMATE", "TENDER", "PRICEDBILLOFQUANTITIES", "UNPRICEDBILLOFQUANTITIES", "SCHEDULEOFRATES", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum IfcCostScheduleTypeEnum::FromString(const std::string& s) {
    if (s == "BUDGET") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_BUDGET;
    if (s == "COSTPLAN") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_COSTPLAN;
    if (s == "ESTIMATE") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_ESTIMATE;
    if (s == "TENDER") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_TENDER;
    if (s == "PRICEDBILLOFQUANTITIES") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_PRICEDBILLOFQUANTITIES;
    if (s == "UNPRICEDBILLOFQUANTITIES") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_UNPRICEDBILLOFQUANTITIES;
    if (s == "SCHEDULEOFRATES") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_SCHEDULEOFRATES;
    if (s == "USERDEFINED") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCostScheduleTypeEnum::IfcCostScheduleType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCoveringTypeEnum::ToString(IfcCoveringTypeEnum v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CEILING", "FLOORING", "CLADDING", "ROOFING", "MOLDING", "SKIRTINGBOARD", "INSULATION", "MEMBRANE", "SLEEVING", "WRAPPING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCoveringTypeEnum::IfcCoveringTypeEnum IfcCoveringTypeEnum::FromString(const std::string& s) {
    if (s == "CEILING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_CEILING;
    if (s == "FLOORING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_FLOORING;
    if (s == "CLADDING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_CLADDING;
    if (s == "ROOFING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_ROOFING;
    if (s == "MOLDING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_MOLDING;
    if (s == "SKIRTINGBOARD") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_SKIRTINGBOARD;
    if (s == "INSULATION") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_INSULATION;
    if (s == "MEMBRANE") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_MEMBRANE;
    if (s == "SLEEVING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_SLEEVING;
    if (s == "WRAPPING") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_WRAPPING;
    if (s == "USERDEFINED") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCoveringTypeEnum::IfcCoveringType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCrewResourceTypeEnum::ToString(IfcCrewResourceTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "OFFICE", "SITE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum IfcCrewResourceTypeEnum::FromString(const std::string& s) {
    if (s == "OFFICE") return ::Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceType_OFFICE;
    if (s == "SITE") return ::Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceType_SITE;
    if (s == "USERDEFINED") return ::Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCrewResourceTypeEnum::IfcCrewResourceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCurtainWallTypeEnum::ToString(IfcCurtainWallTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum IfcCurtainWallTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcCurtainWallTypeEnum::IfcCurtainWallType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCurtainWallTypeEnum::IfcCurtainWallType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcCurveInterpolationEnum::ToString(IfcCurveInterpolationEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "LINEAR", "LOG_LINEAR", "LOG_LOG", "NOTDEFINED" };
    return names[v];
}

IfcCurveInterpolationEnum::IfcCurveInterpolationEnum IfcCurveInterpolationEnum::FromString(const std::string& s) {
    if (s == "LINEAR") return ::Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolation_LINEAR;
    if (s == "LOG_LINEAR") return ::Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolation_LOG_LINEAR;
    if (s == "LOG_LOG") return ::Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolation_LOG_LOG;
    if (s == "NOTDEFINED") return ::Ifc4::IfcCurveInterpolationEnum::IfcCurveInterpolation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDamperTypeEnum::ToString(IfcDamperTypeEnum v) {
    if ( v < 0 || v >= 13 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BACKDRAFTDAMPER", "BALANCINGDAMPER", "BLASTDAMPER", "CONTROLDAMPER", "FIREDAMPER", "FIRESMOKEDAMPER", "FUMEHOODEXHAUST", "GRAVITYDAMPER", "GRAVITYRELIEFDAMPER", "RELIEFDAMPER", "SMOKEDAMPER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDamperTypeEnum::IfcDamperTypeEnum IfcDamperTypeEnum::FromString(const std::string& s) {
    if (s == "BACKDRAFTDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_BACKDRAFTDAMPER;
    if (s == "BALANCINGDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_BALANCINGDAMPER;
    if (s == "BLASTDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_BLASTDAMPER;
    if (s == "CONTROLDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_CONTROLDAMPER;
    if (s == "FIREDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_FIREDAMPER;
    if (s == "FIRESMOKEDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_FIRESMOKEDAMPER;
    if (s == "FUMEHOODEXHAUST") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_FUMEHOODEXHAUST;
    if (s == "GRAVITYDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_GRAVITYDAMPER;
    if (s == "GRAVITYRELIEFDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_GRAVITYRELIEFDAMPER;
    if (s == "RELIEFDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_RELIEFDAMPER;
    if (s == "SMOKEDAMPER") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_SMOKEDAMPER;
    if (s == "USERDEFINED") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDamperTypeEnum::IfcDamperType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDataOriginEnum::ToString(IfcDataOriginEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "MEASURED", "PREDICTED", "SIMULATED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDataOriginEnum::IfcDataOriginEnum IfcDataOriginEnum::FromString(const std::string& s) {
    if (s == "MEASURED") return ::Ifc4::IfcDataOriginEnum::IfcDataOrigin_MEASURED;
    if (s == "PREDICTED") return ::Ifc4::IfcDataOriginEnum::IfcDataOrigin_PREDICTED;
    if (s == "SIMULATED") return ::Ifc4::IfcDataOriginEnum::IfcDataOrigin_SIMULATED;
    if (s == "USERDEFINED") return ::Ifc4::IfcDataOriginEnum::IfcDataOrigin_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDataOriginEnum::IfcDataOrigin_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDerivedUnitEnum::ToString(IfcDerivedUnitEnum v) {
    if ( v < 0 || v >= 53 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ANGULARVELOCITYUNIT", "AREADENSITYUNIT", "COMPOUNDPLANEANGLEUNIT", "DYNAMICVISCOSITYUNIT", "HEATFLUXDENSITYUNIT", "INTEGERCOUNTRATEUNIT", "ISOTHERMALMOISTURECAPACITYUNIT", "KINEMATICVISCOSITYUNIT", "LINEARVELOCITYUNIT", "MASSDENSITYUNIT", "MASSFLOWRATEUNIT", "MOISTUREDIFFUSIVITYUNIT", "MOLECULARWEIGHTUNIT", "SPECIFICHEATCAPACITYUNIT", "THERMALADMITTANCEUNIT", "THERMALCONDUCTANCEUNIT", "THERMALRESISTANCEUNIT", "THERMALTRANSMITTANCEUNIT", "VAPORPERMEABILITYUNIT", "VOLUMETRICFLOWRATEUNIT", "ROTATIONALFREQUENCYUNIT", "TORQUEUNIT", "MOMENTOFINERTIAUNIT", "LINEARMOMENTUNIT", "LINEARFORCEUNIT", "PLANARFORCEUNIT", "MODULUSOFELASTICITYUNIT", "SHEARMODULUSUNIT", "LINEARSTIFFNESSUNIT", "ROTATIONALSTIFFNESSUNIT", "MODULUSOFSUBGRADEREACTIONUNIT", "ACCELERATIONUNIT", "CURVATUREUNIT", "HEATINGVALUEUNIT", "IONCONCENTRATIONUNIT", "LUMINOUSINTENSITYDISTRIBUTIONUNIT", "MASSPERLENGTHUNIT", "MODULUSOFLINEARSUBGRADEREACTIONUNIT", "MODULUSOFROTATIONALSUBGRADEREACTIONUNIT", "PHUNIT", "ROTATIONALMASSUNIT", "SECTIONAREAINTEGRALUNIT", "SECTIONMODULUSUNIT", "SOUNDPOWERLEVELUNIT", "SOUNDPOWERUNIT", "SOUNDPRESSURELEVELUNIT", "SOUNDPRESSUREUNIT", "TEMPERATUREGRADIENTUNIT", "TEMPERATURERATEOFCHANGEUNIT", "THERMALEXPANSIONCOEFFICIENTUNIT", "WARPINGCONSTANTUNIT", "WARPINGMOMENTUNIT", "USERDEFINED" };
    return names[v];
}

IfcDerivedUnitEnum::IfcDerivedUnitEnum IfcDerivedUnitEnum::FromString(const std::string& s) {
    if (s == "ANGULARVELOCITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_ANGULARVELOCITYUNIT;
    if (s == "AREADENSITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_AREADENSITYUNIT;
    if (s == "COMPOUNDPLANEANGLEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_COMPOUNDPLANEANGLEUNIT;
    if (s == "DYNAMICVISCOSITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_DYNAMICVISCOSITYUNIT;
    if (s == "HEATFLUXDENSITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_HEATFLUXDENSITYUNIT;
    if (s == "INTEGERCOUNTRATEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_INTEGERCOUNTRATEUNIT;
    if (s == "ISOTHERMALMOISTURECAPACITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_ISOTHERMALMOISTURECAPACITYUNIT;
    if (s == "KINEMATICVISCOSITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_KINEMATICVISCOSITYUNIT;
    if (s == "LINEARVELOCITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_LINEARVELOCITYUNIT;
    if (s == "MASSDENSITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MASSDENSITYUNIT;
    if (s == "MASSFLOWRATEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MASSFLOWRATEUNIT;
    if (s == "MOISTUREDIFFUSIVITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MOISTUREDIFFUSIVITYUNIT;
    if (s == "MOLECULARWEIGHTUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MOLECULARWEIGHTUNIT;
    if (s == "SPECIFICHEATCAPACITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SPECIFICHEATCAPACITYUNIT;
    if (s == "THERMALADMITTANCEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_THERMALADMITTANCEUNIT;
    if (s == "THERMALCONDUCTANCEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_THERMALCONDUCTANCEUNIT;
    if (s == "THERMALRESISTANCEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_THERMALRESISTANCEUNIT;
    if (s == "THERMALTRANSMITTANCEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_THERMALTRANSMITTANCEUNIT;
    if (s == "VAPORPERMEABILITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_VAPORPERMEABILITYUNIT;
    if (s == "VOLUMETRICFLOWRATEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_VOLUMETRICFLOWRATEUNIT;
    if (s == "ROTATIONALFREQUENCYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_ROTATIONALFREQUENCYUNIT;
    if (s == "TORQUEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_TORQUEUNIT;
    if (s == "MOMENTOFINERTIAUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MOMENTOFINERTIAUNIT;
    if (s == "LINEARMOMENTUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_LINEARMOMENTUNIT;
    if (s == "LINEARFORCEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_LINEARFORCEUNIT;
    if (s == "PLANARFORCEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_PLANARFORCEUNIT;
    if (s == "MODULUSOFELASTICITYUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MODULUSOFELASTICITYUNIT;
    if (s == "SHEARMODULUSUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SHEARMODULUSUNIT;
    if (s == "LINEARSTIFFNESSUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_LINEARSTIFFNESSUNIT;
    if (s == "ROTATIONALSTIFFNESSUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_ROTATIONALSTIFFNESSUNIT;
    if (s == "MODULUSOFSUBGRADEREACTIONUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MODULUSOFSUBGRADEREACTIONUNIT;
    if (s == "ACCELERATIONUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_ACCELERATIONUNIT;
    if (s == "CURVATUREUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_CURVATUREUNIT;
    if (s == "HEATINGVALUEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_HEATINGVALUEUNIT;
    if (s == "IONCONCENTRATIONUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_IONCONCENTRATIONUNIT;
    if (s == "LUMINOUSINTENSITYDISTRIBUTIONUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_LUMINOUSINTENSITYDISTRIBUTIONUNIT;
    if (s == "MASSPERLENGTHUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MASSPERLENGTHUNIT;
    if (s == "MODULUSOFLINEARSUBGRADEREACTIONUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MODULUSOFLINEARSUBGRADEREACTIONUNIT;
    if (s == "MODULUSOFROTATIONALSUBGRADEREACTIONUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_MODULUSOFROTATIONALSUBGRADEREACTIONUNIT;
    if (s == "PHUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_PHUNIT;
    if (s == "ROTATIONALMASSUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_ROTATIONALMASSUNIT;
    if (s == "SECTIONAREAINTEGRALUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SECTIONAREAINTEGRALUNIT;
    if (s == "SECTIONMODULUSUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SECTIONMODULUSUNIT;
    if (s == "SOUNDPOWERLEVELUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SOUNDPOWERLEVELUNIT;
    if (s == "SOUNDPOWERUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SOUNDPOWERUNIT;
    if (s == "SOUNDPRESSURELEVELUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SOUNDPRESSURELEVELUNIT;
    if (s == "SOUNDPRESSUREUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_SOUNDPRESSUREUNIT;
    if (s == "TEMPERATUREGRADIENTUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_TEMPERATUREGRADIENTUNIT;
    if (s == "TEMPERATURERATEOFCHANGEUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_TEMPERATURERATEOFCHANGEUNIT;
    if (s == "THERMALEXPANSIONCOEFFICIENTUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_THERMALEXPANSIONCOEFFICIENTUNIT;
    if (s == "WARPINGCONSTANTUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_WARPINGCONSTANTUNIT;
    if (s == "WARPINGMOMENTUNIT") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_WARPINGMOMENTUNIT;
    if (s == "USERDEFINED") return ::Ifc4::IfcDerivedUnitEnum::IfcDerivedUnit_USERDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDirectionSenseEnum::ToString(IfcDirectionSenseEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "POSITIVE", "NEGATIVE" };
    return names[v];
}

IfcDirectionSenseEnum::IfcDirectionSenseEnum IfcDirectionSenseEnum::FromString(const std::string& s) {
    if (s == "POSITIVE") return ::Ifc4::IfcDirectionSenseEnum::IfcDirectionSense_POSITIVE;
    if (s == "NEGATIVE") return ::Ifc4::IfcDirectionSenseEnum::IfcDirectionSense_NEGATIVE;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDiscreteAccessoryTypeEnum::ToString(IfcDiscreteAccessoryTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ANCHORPLATE", "BRACKET", "SHOE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum IfcDiscreteAccessoryTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORPLATE") return ::Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_ANCHORPLATE;
    if (s == "BRACKET") return ::Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_BRACKET;
    if (s == "SHOE") return ::Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_SHOE;
    if (s == "USERDEFINED") return ::Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDistributionChamberElementTypeEnum::ToString(IfcDistributionChamberElementTypeEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FORMEDDUCT", "INSPECTIONCHAMBER", "INSPECTIONPIT", "MANHOLE", "METERCHAMBER", "SUMP", "TRENCH", "VALVECHAMBER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum IfcDistributionChamberElementTypeEnum::FromString(const std::string& s) {
    if (s == "FORMEDDUCT") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_FORMEDDUCT;
    if (s == "INSPECTIONCHAMBER") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_INSPECTIONCHAMBER;
    if (s == "INSPECTIONPIT") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_INSPECTIONPIT;
    if (s == "MANHOLE") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_MANHOLE;
    if (s == "METERCHAMBER") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_METERCHAMBER;
    if (s == "SUMP") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_SUMP;
    if (s == "TRENCH") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_TRENCH;
    if (s == "VALVECHAMBER") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_VALVECHAMBER;
    if (s == "USERDEFINED") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDistributionPortTypeEnum::ToString(IfcDistributionPortTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CABLE", "CABLECARRIER", "DUCT", "PIPE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum IfcDistributionPortTypeEnum::FromString(const std::string& s) {
    if (s == "CABLE") return ::Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortType_CABLE;
    if (s == "CABLECARRIER") return ::Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortType_CABLECARRIER;
    if (s == "DUCT") return ::Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortType_DUCT;
    if (s == "PIPE") return ::Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortType_PIPE;
    if (s == "USERDEFINED") return ::Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDistributionPortTypeEnum::IfcDistributionPortType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDistributionSystemEnum::ToString(IfcDistributionSystemEnum v) {
    if ( v < 0 || v >= 44 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRCONDITIONING", "AUDIOVISUAL", "CHEMICAL", "CHILLEDWATER", "COMMUNICATION", "COMPRESSEDAIR", "CONDENSERWATER", "CONTROL", "CONVEYING", "DATA", "DISPOSAL", "DOMESTICCOLDWATER", "DOMESTICHOTWATER", "DRAINAGE", "EARTHING", "ELECTRICAL", "ELECTROACOUSTIC", "EXHAUST", "FIREPROTECTION", "FUEL", "GAS", "HAZARDOUS", "HEATING", "LIGHTING", "LIGHTNINGPROTECTION", "MUNICIPALSOLIDWASTE", "OIL", "OPERATIONAL", "POWERGENERATION", "RAINWATER", "REFRIGERATION", "SECURITY", "SEWAGE", "SIGNAL", "STORMWATER", "TELEPHONE", "TV", "VACUUM", "VENT", "VENTILATION", "WASTEWATER", "WATERSUPPLY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDistributionSystemEnum::IfcDistributionSystemEnum IfcDistributionSystemEnum::FromString(const std::string& s) {
    if (s == "AIRCONDITIONING") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_AIRCONDITIONING;
    if (s == "AUDIOVISUAL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_AUDIOVISUAL;
    if (s == "CHEMICAL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_CHEMICAL;
    if (s == "CHILLEDWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_CHILLEDWATER;
    if (s == "COMMUNICATION") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_COMMUNICATION;
    if (s == "COMPRESSEDAIR") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_COMPRESSEDAIR;
    if (s == "CONDENSERWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_CONDENSERWATER;
    if (s == "CONTROL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_CONTROL;
    if (s == "CONVEYING") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_CONVEYING;
    if (s == "DATA") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_DATA;
    if (s == "DISPOSAL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_DISPOSAL;
    if (s == "DOMESTICCOLDWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_DOMESTICCOLDWATER;
    if (s == "DOMESTICHOTWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_DOMESTICHOTWATER;
    if (s == "DRAINAGE") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_DRAINAGE;
    if (s == "EARTHING") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_EARTHING;
    if (s == "ELECTRICAL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_ELECTRICAL;
    if (s == "ELECTROACOUSTIC") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_ELECTROACOUSTIC;
    if (s == "EXHAUST") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_EXHAUST;
    if (s == "FIREPROTECTION") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_FIREPROTECTION;
    if (s == "FUEL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_FUEL;
    if (s == "GAS") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_GAS;
    if (s == "HAZARDOUS") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_HAZARDOUS;
    if (s == "HEATING") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_HEATING;
    if (s == "LIGHTING") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_LIGHTING;
    if (s == "LIGHTNINGPROTECTION") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_LIGHTNINGPROTECTION;
    if (s == "MUNICIPALSOLIDWASTE") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_MUNICIPALSOLIDWASTE;
    if (s == "OIL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_OIL;
    if (s == "OPERATIONAL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_OPERATIONAL;
    if (s == "POWERGENERATION") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_POWERGENERATION;
    if (s == "RAINWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_RAINWATER;
    if (s == "REFRIGERATION") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_REFRIGERATION;
    if (s == "SECURITY") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_SECURITY;
    if (s == "SEWAGE") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_SEWAGE;
    if (s == "SIGNAL") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_SIGNAL;
    if (s == "STORMWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_STORMWATER;
    if (s == "TELEPHONE") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_TELEPHONE;
    if (s == "TV") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_TV;
    if (s == "VACUUM") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_VACUUM;
    if (s == "VENT") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_VENT;
    if (s == "VENTILATION") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_VENTILATION;
    if (s == "WASTEWATER") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_WASTEWATER;
    if (s == "WATERSUPPLY") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_WATERSUPPLY;
    if (s == "USERDEFINED") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDistributionSystemEnum::IfcDistributionSystem_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDocumentConfidentialityEnum::ToString(IfcDocumentConfidentialityEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PUBLIC", "RESTRICTED", "CONFIDENTIAL", "PERSONAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum IfcDocumentConfidentialityEnum::FromString(const std::string& s) {
    if (s == "PUBLIC") return ::Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_PUBLIC;
    if (s == "RESTRICTED") return ::Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_RESTRICTED;
    if (s == "CONFIDENTIAL") return ::Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_CONFIDENTIAL;
    if (s == "PERSONAL") return ::Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_PERSONAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDocumentStatusEnum::ToString(IfcDocumentStatusEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DRAFT", "FINALDRAFT", "FINAL", "REVISION", "NOTDEFINED" };
    return names[v];
}

IfcDocumentStatusEnum::IfcDocumentStatusEnum IfcDocumentStatusEnum::FromString(const std::string& s) {
    if (s == "DRAFT") return ::Ifc4::IfcDocumentStatusEnum::IfcDocumentStatus_DRAFT;
    if (s == "FINALDRAFT") return ::Ifc4::IfcDocumentStatusEnum::IfcDocumentStatus_FINALDRAFT;
    if (s == "FINAL") return ::Ifc4::IfcDocumentStatusEnum::IfcDocumentStatus_FINAL;
    if (s == "REVISION") return ::Ifc4::IfcDocumentStatusEnum::IfcDocumentStatus_REVISION;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDocumentStatusEnum::IfcDocumentStatus_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDoorPanelOperationEnum::ToString(IfcDoorPanelOperationEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SWINGING", "DOUBLE_ACTING", "SLIDING", "FOLDING", "REVOLVING", "ROLLINGUP", "FIXEDPANEL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum IfcDoorPanelOperationEnum::FromString(const std::string& s) {
    if (s == "SWINGING") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_SWINGING;
    if (s == "DOUBLE_ACTING") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_DOUBLE_ACTING;
    if (s == "SLIDING") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_SLIDING;
    if (s == "FOLDING") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_FOLDING;
    if (s == "REVOLVING") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_REVOLVING;
    if (s == "ROLLINGUP") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_ROLLINGUP;
    if (s == "FIXEDPANEL") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_FIXEDPANEL;
    if (s == "USERDEFINED") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDoorPanelPositionEnum::ToString(IfcDoorPanelPositionEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "LEFT", "MIDDLE", "RIGHT", "NOTDEFINED" };
    return names[v];
}

IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum IfcDoorPanelPositionEnum::FromString(const std::string& s) {
    if (s == "LEFT") return ::Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_LEFT;
    if (s == "MIDDLE") return ::Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_MIDDLE;
    if (s == "RIGHT") return ::Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_RIGHT;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDoorStyleConstructionEnum::ToString(IfcDoorStyleConstructionEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ALUMINIUM", "HIGH_GRADE_STEEL", "STEEL", "WOOD", "ALUMINIUM_WOOD", "ALUMINIUM_PLASTIC", "PLASTIC", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum IfcDoorStyleConstructionEnum::FromString(const std::string& s) {
    if (s == "ALUMINIUM") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_ALUMINIUM;
    if (s == "HIGH_GRADE_STEEL") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_HIGH_GRADE_STEEL;
    if (s == "STEEL") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_STEEL;
    if (s == "WOOD") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_WOOD;
    if (s == "ALUMINIUM_WOOD") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_ALUMINIUM_WOOD;
    if (s == "ALUMINIUM_PLASTIC") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_ALUMINIUM_PLASTIC;
    if (s == "PLASTIC") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_PLASTIC;
    if (s == "USERDEFINED") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDoorStyleOperationEnum::ToString(IfcDoorStyleOperationEnum v) {
    if ( v < 0 || v >= 18 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SINGLE_SWING_LEFT", "SINGLE_SWING_RIGHT", "DOUBLE_DOOR_SINGLE_SWING", "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT", "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT", "DOUBLE_SWING_LEFT", "DOUBLE_SWING_RIGHT", "DOUBLE_DOOR_DOUBLE_SWING", "SLIDING_TO_LEFT", "SLIDING_TO_RIGHT", "DOUBLE_DOOR_SLIDING", "FOLDING_TO_LEFT", "FOLDING_TO_RIGHT", "DOUBLE_DOOR_FOLDING", "REVOLVING", "ROLLINGUP", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum IfcDoorStyleOperationEnum::FromString(const std::string& s) {
    if (s == "SINGLE_SWING_LEFT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SINGLE_SWING_LEFT;
    if (s == "SINGLE_SWING_RIGHT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SINGLE_SWING_RIGHT;
    if (s == "DOUBLE_DOOR_SINGLE_SWING") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING;
    if (s == "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT;
    if (s == "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT;
    if (s == "DOUBLE_SWING_LEFT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_SWING_LEFT;
    if (s == "DOUBLE_SWING_RIGHT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_SWING_RIGHT;
    if (s == "DOUBLE_DOOR_DOUBLE_SWING") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_DOUBLE_SWING;
    if (s == "SLIDING_TO_LEFT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SLIDING_TO_LEFT;
    if (s == "SLIDING_TO_RIGHT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SLIDING_TO_RIGHT;
    if (s == "DOUBLE_DOOR_SLIDING") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SLIDING;
    if (s == "FOLDING_TO_LEFT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_FOLDING_TO_LEFT;
    if (s == "FOLDING_TO_RIGHT") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_FOLDING_TO_RIGHT;
    if (s == "DOUBLE_DOOR_FOLDING") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_FOLDING;
    if (s == "REVOLVING") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_REVOLVING;
    if (s == "ROLLINGUP") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_ROLLINGUP;
    if (s == "USERDEFINED") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDoorTypeEnum::ToString(IfcDoorTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DOOR", "GATE", "TRAPDOOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDoorTypeEnum::IfcDoorTypeEnum IfcDoorTypeEnum::FromString(const std::string& s) {
    if (s == "DOOR") return ::Ifc4::IfcDoorTypeEnum::IfcDoorType_DOOR;
    if (s == "GATE") return ::Ifc4::IfcDoorTypeEnum::IfcDoorType_GATE;
    if (s == "TRAPDOOR") return ::Ifc4::IfcDoorTypeEnum::IfcDoorType_TRAPDOOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcDoorTypeEnum::IfcDoorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDoorTypeEnum::IfcDoorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDoorTypeOperationEnum::ToString(IfcDoorTypeOperationEnum v) {
    if ( v < 0 || v >= 20 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SINGLE_SWING_LEFT", "SINGLE_SWING_RIGHT", "DOUBLE_DOOR_SINGLE_SWING", "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT", "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT", "DOUBLE_SWING_LEFT", "DOUBLE_SWING_RIGHT", "DOUBLE_DOOR_DOUBLE_SWING", "SLIDING_TO_LEFT", "SLIDING_TO_RIGHT", "DOUBLE_DOOR_SLIDING", "FOLDING_TO_LEFT", "FOLDING_TO_RIGHT", "DOUBLE_DOOR_FOLDING", "REVOLVING", "ROLLINGUP", "SWING_FIXED_LEFT", "SWING_FIXED_RIGHT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum IfcDoorTypeOperationEnum::FromString(const std::string& s) {
    if (s == "SINGLE_SWING_LEFT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_SINGLE_SWING_LEFT;
    if (s == "SINGLE_SWING_RIGHT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_SINGLE_SWING_RIGHT;
    if (s == "DOUBLE_DOOR_SINGLE_SWING") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING;
    if (s == "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT;
    if (s == "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT;
    if (s == "DOUBLE_SWING_LEFT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_SWING_LEFT;
    if (s == "DOUBLE_SWING_RIGHT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_SWING_RIGHT;
    if (s == "DOUBLE_DOOR_DOUBLE_SWING") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_DOOR_DOUBLE_SWING;
    if (s == "SLIDING_TO_LEFT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_SLIDING_TO_LEFT;
    if (s == "SLIDING_TO_RIGHT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_SLIDING_TO_RIGHT;
    if (s == "DOUBLE_DOOR_SLIDING") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_DOOR_SLIDING;
    if (s == "FOLDING_TO_LEFT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_FOLDING_TO_LEFT;
    if (s == "FOLDING_TO_RIGHT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_FOLDING_TO_RIGHT;
    if (s == "DOUBLE_DOOR_FOLDING") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_DOUBLE_DOOR_FOLDING;
    if (s == "REVOLVING") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_REVOLVING;
    if (s == "ROLLINGUP") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_ROLLINGUP;
    if (s == "SWING_FIXED_LEFT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_SWING_FIXED_LEFT;
    if (s == "SWING_FIXED_RIGHT") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_SWING_FIXED_RIGHT;
    if (s == "USERDEFINED") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDoorTypeOperationEnum::IfcDoorTypeOperation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDuctFittingTypeEnum::ToString(IfcDuctFittingTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BEND", "CONNECTOR", "ENTRY", "EXIT", "JUNCTION", "OBSTRUCTION", "TRANSITION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum IfcDuctFittingTypeEnum::FromString(const std::string& s) {
    if (s == "BEND") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_BEND;
    if (s == "CONNECTOR") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_CONNECTOR;
    if (s == "ENTRY") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_ENTRY;
    if (s == "EXIT") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_EXIT;
    if (s == "JUNCTION") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_JUNCTION;
    if (s == "OBSTRUCTION") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_OBSTRUCTION;
    if (s == "TRANSITION") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_TRANSITION;
    if (s == "USERDEFINED") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDuctFittingTypeEnum::IfcDuctFittingType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDuctSegmentTypeEnum::ToString(IfcDuctSegmentTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "RIGIDSEGMENT", "FLEXIBLESEGMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum IfcDuctSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "RIGIDSEGMENT") return ::Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_RIGIDSEGMENT;
    if (s == "FLEXIBLESEGMENT") return ::Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_FLEXIBLESEGMENT;
    if (s == "USERDEFINED") return ::Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcDuctSilencerTypeEnum::ToString(IfcDuctSilencerTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FLATOVAL", "RECTANGULAR", "ROUND", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum IfcDuctSilencerTypeEnum::FromString(const std::string& s) {
    if (s == "FLATOVAL") return ::Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_FLATOVAL;
    if (s == "RECTANGULAR") return ::Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_RECTANGULAR;
    if (s == "ROUND") return ::Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_ROUND;
    if (s == "USERDEFINED") return ::Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElectricApplianceTypeEnum::ToString(IfcElectricApplianceTypeEnum v) {
    if ( v < 0 || v >= 18 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DISHWASHER", "ELECTRICCOOKER", "FREESTANDINGELECTRICHEATER", "FREESTANDINGFAN", "FREESTANDINGWATERHEATER", "FREESTANDINGWATERCOOLER", "FREEZER", "FRIDGE_FREEZER", "HANDDRYER", "KITCHENMACHINE", "MICROWAVE", "PHOTOCOPIER", "REFRIGERATOR", "TUMBLEDRYER", "VENDINGMACHINE", "WASHINGMACHINE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum IfcElectricApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "DISHWASHER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_DISHWASHER;
    if (s == "ELECTRICCOOKER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_ELECTRICCOOKER;
    if (s == "FREESTANDINGELECTRICHEATER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGELECTRICHEATER;
    if (s == "FREESTANDINGFAN") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGFAN;
    if (s == "FREESTANDINGWATERHEATER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGWATERHEATER;
    if (s == "FREESTANDINGWATERCOOLER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGWATERCOOLER;
    if (s == "FREEZER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREEZER;
    if (s == "FRIDGE_FREEZER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FRIDGE_FREEZER;
    if (s == "HANDDRYER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_HANDDRYER;
    if (s == "KITCHENMACHINE") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_KITCHENMACHINE;
    if (s == "MICROWAVE") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_MICROWAVE;
    if (s == "PHOTOCOPIER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_PHOTOCOPIER;
    if (s == "REFRIGERATOR") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_REFRIGERATOR;
    if (s == "TUMBLEDRYER") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_TUMBLEDRYER;
    if (s == "VENDINGMACHINE") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_VENDINGMACHINE;
    if (s == "WASHINGMACHINE") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_WASHINGMACHINE;
    if (s == "USERDEFINED") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElectricDistributionBoardTypeEnum::ToString(IfcElectricDistributionBoardTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONSUMERUNIT", "DISTRIBUTIONBOARD", "MOTORCONTROLCENTRE", "SWITCHBOARD", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum IfcElectricDistributionBoardTypeEnum::FromString(const std::string& s) {
    if (s == "CONSUMERUNIT") return ::Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_CONSUMERUNIT;
    if (s == "DISTRIBUTIONBOARD") return ::Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_DISTRIBUTIONBOARD;
    if (s == "MOTORCONTROLCENTRE") return ::Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_MOTORCONTROLCENTRE;
    if (s == "SWITCHBOARD") return ::Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_SWITCHBOARD;
    if (s == "USERDEFINED") return ::Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElectricFlowStorageDeviceTypeEnum::ToString(IfcElectricFlowStorageDeviceTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BATTERY", "CAPACITORBANK", "HARMONICFILTER", "INDUCTORBANK", "UPS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum IfcElectricFlowStorageDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "BATTERY") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_BATTERY;
    if (s == "CAPACITORBANK") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_CAPACITORBANK;
    if (s == "HARMONICFILTER") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_HARMONICFILTER;
    if (s == "INDUCTORBANK") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_INDUCTORBANK;
    if (s == "UPS") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_UPS;
    if (s == "USERDEFINED") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElectricGeneratorTypeEnum::ToString(IfcElectricGeneratorTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CHP", "ENGINEGENERATOR", "STANDALONE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum IfcElectricGeneratorTypeEnum::FromString(const std::string& s) {
    if (s == "CHP") return ::Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_CHP;
    if (s == "ENGINEGENERATOR") return ::Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_ENGINEGENERATOR;
    if (s == "STANDALONE") return ::Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_STANDALONE;
    if (s == "USERDEFINED") return ::Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElectricMotorTypeEnum::ToString(IfcElectricMotorTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DC", "INDUCTION", "POLYPHASE", "RELUCTANCESYNCHRONOUS", "SYNCHRONOUS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum IfcElectricMotorTypeEnum::FromString(const std::string& s) {
    if (s == "DC") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_DC;
    if (s == "INDUCTION") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_INDUCTION;
    if (s == "POLYPHASE") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_POLYPHASE;
    if (s == "RELUCTANCESYNCHRONOUS") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_RELUCTANCESYNCHRONOUS;
    if (s == "SYNCHRONOUS") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_SYNCHRONOUS;
    if (s == "USERDEFINED") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElectricMotorTypeEnum::IfcElectricMotorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElectricTimeControlTypeEnum::ToString(IfcElectricTimeControlTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "TIMECLOCK", "TIMEDELAY", "RELAY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum IfcElectricTimeControlTypeEnum::FromString(const std::string& s) {
    if (s == "TIMECLOCK") return ::Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_TIMECLOCK;
    if (s == "TIMEDELAY") return ::Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_TIMEDELAY;
    if (s == "RELAY") return ::Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_RELAY;
    if (s == "USERDEFINED") return ::Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElementAssemblyTypeEnum::ToString(IfcElementAssemblyTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ACCESSORY_ASSEMBLY", "ARCH", "BEAM_GRID", "BRACED_FRAME", "GIRDER", "REINFORCEMENT_UNIT", "RIGID_FRAME", "SLAB_FIELD", "TRUSS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum IfcElementAssemblyTypeEnum::FromString(const std::string& s) {
    if (s == "ACCESSORY_ASSEMBLY") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_ACCESSORY_ASSEMBLY;
    if (s == "ARCH") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_ARCH;
    if (s == "BEAM_GRID") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_BEAM_GRID;
    if (s == "BRACED_FRAME") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_BRACED_FRAME;
    if (s == "GIRDER") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_GIRDER;
    if (s == "REINFORCEMENT_UNIT") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_REINFORCEMENT_UNIT;
    if (s == "RIGID_FRAME") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_RIGID_FRAME;
    if (s == "SLAB_FIELD") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SLAB_FIELD;
    if (s == "TRUSS") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_TRUSS;
    if (s == "USERDEFINED") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcElementCompositionEnum::ToString(IfcElementCompositionEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMPLEX", "ELEMENT", "PARTIAL" };
    return names[v];
}

IfcElementCompositionEnum::IfcElementCompositionEnum IfcElementCompositionEnum::FromString(const std::string& s) {
    if (s == "COMPLEX") return ::Ifc4::IfcElementCompositionEnum::IfcElementComposition_COMPLEX;
    if (s == "ELEMENT") return ::Ifc4::IfcElementCompositionEnum::IfcElementComposition_ELEMENT;
    if (s == "PARTIAL") return ::Ifc4::IfcElementCompositionEnum::IfcElementComposition_PARTIAL;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcEngineTypeEnum::ToString(IfcEngineTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "EXTERNALCOMBUSTION", "INTERNALCOMBUSTION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcEngineTypeEnum::IfcEngineTypeEnum IfcEngineTypeEnum::FromString(const std::string& s) {
    if (s == "EXTERNALCOMBUSTION") return ::Ifc4::IfcEngineTypeEnum::IfcEngineType_EXTERNALCOMBUSTION;
    if (s == "INTERNALCOMBUSTION") return ::Ifc4::IfcEngineTypeEnum::IfcEngineType_INTERNALCOMBUSTION;
    if (s == "USERDEFINED") return ::Ifc4::IfcEngineTypeEnum::IfcEngineType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcEngineTypeEnum::IfcEngineType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcEvaporativeCoolerTypeEnum::ToString(IfcEvaporativeCoolerTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER", "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER", "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER", "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER", "DIRECTEVAPORATIVEAIRWASHER", "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER", "INDIRECTEVAPORATIVEWETCOIL", "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER", "INDIRECTDIRECTCOMBINATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum IfcEvaporativeCoolerTypeEnum::FromString(const std::string& s) {
    if (s == "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER;
    if (s == "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER;
    if (s == "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER;
    if (s == "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER;
    if (s == "DIRECTEVAPORATIVEAIRWASHER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVEAIRWASHER;
    if (s == "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEPACKAGEAIRCOOLER;
    if (s == "INDIRECTEVAPORATIVEWETCOIL") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEWETCOIL;
    if (s == "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER;
    if (s == "INDIRECTDIRECTCOMBINATION") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTDIRECTCOMBINATION;
    if (s == "USERDEFINED") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcEvaporatorTypeEnum::ToString(IfcEvaporatorTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DIRECTEXPANSION", "DIRECTEXPANSIONSHELLANDTUBE", "DIRECTEXPANSIONTUBEINTUBE", "DIRECTEXPANSIONBRAZEDPLATE", "FLOODEDSHELLANDTUBE", "SHELLANDCOIL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum IfcEvaporatorTypeEnum::FromString(const std::string& s) {
    if (s == "DIRECTEXPANSION") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSION;
    if (s == "DIRECTEXPANSIONSHELLANDTUBE") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSIONSHELLANDTUBE;
    if (s == "DIRECTEXPANSIONTUBEINTUBE") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSIONTUBEINTUBE;
    if (s == "DIRECTEXPANSIONBRAZEDPLATE") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSIONBRAZEDPLATE;
    if (s == "FLOODEDSHELLANDTUBE") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_FLOODEDSHELLANDTUBE;
    if (s == "SHELLANDCOIL") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_SHELLANDCOIL;
    if (s == "USERDEFINED") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcEvaporatorTypeEnum::IfcEvaporatorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcEventTriggerTypeEnum::ToString(IfcEventTriggerTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "EVENTRULE", "EVENTMESSAGE", "EVENTTIME", "EVENTCOMPLEX", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum IfcEventTriggerTypeEnum::FromString(const std::string& s) {
    if (s == "EVENTRULE") return ::Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTRULE;
    if (s == "EVENTMESSAGE") return ::Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTMESSAGE;
    if (s == "EVENTTIME") return ::Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTTIME;
    if (s == "EVENTCOMPLEX") return ::Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTCOMPLEX;
    if (s == "USERDEFINED") return ::Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcEventTriggerTypeEnum::IfcEventTriggerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcEventTypeEnum::ToString(IfcEventTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "STARTEVENT", "ENDEVENT", "INTERMEDIATEEVENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcEventTypeEnum::IfcEventTypeEnum IfcEventTypeEnum::FromString(const std::string& s) {
    if (s == "STARTEVENT") return ::Ifc4::IfcEventTypeEnum::IfcEventType_STARTEVENT;
    if (s == "ENDEVENT") return ::Ifc4::IfcEventTypeEnum::IfcEventType_ENDEVENT;
    if (s == "INTERMEDIATEEVENT") return ::Ifc4::IfcEventTypeEnum::IfcEventType_INTERMEDIATEEVENT;
    if (s == "USERDEFINED") return ::Ifc4::IfcEventTypeEnum::IfcEventType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcEventTypeEnum::IfcEventType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcExternalSpatialElementTypeEnum::ToString(IfcExternalSpatialElementTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "EXTERNAL", "EXTERNAL_EARTH", "EXTERNAL_WATER", "EXTERNAL_FIRE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum IfcExternalSpatialElementTypeEnum::FromString(const std::string& s) {
    if (s == "EXTERNAL") return ::Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL;
    if (s == "EXTERNAL_EARTH") return ::Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL_EARTH;
    if (s == "EXTERNAL_WATER") return ::Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL_WATER;
    if (s == "EXTERNAL_FIRE") return ::Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL_FIRE;
    if (s == "USERDEFINED") return ::Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFanTypeEnum::ToString(IfcFanTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CENTRIFUGALFORWARDCURVED", "CENTRIFUGALRADIAL", "CENTRIFUGALBACKWARDINCLINEDCURVED", "CENTRIFUGALAIRFOIL", "TUBEAXIAL", "VANEAXIAL", "PROPELLORAXIAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFanTypeEnum::IfcFanTypeEnum IfcFanTypeEnum::FromString(const std::string& s) {
    if (s == "CENTRIFUGALFORWARDCURVED") return ::Ifc4::IfcFanTypeEnum::IfcFanType_CENTRIFUGALFORWARDCURVED;
    if (s == "CENTRIFUGALRADIAL") return ::Ifc4::IfcFanTypeEnum::IfcFanType_CENTRIFUGALRADIAL;
    if (s == "CENTRIFUGALBACKWARDINCLINEDCURVED") return ::Ifc4::IfcFanTypeEnum::IfcFanType_CENTRIFUGALBACKWARDINCLINEDCURVED;
    if (s == "CENTRIFUGALAIRFOIL") return ::Ifc4::IfcFanTypeEnum::IfcFanType_CENTRIFUGALAIRFOIL;
    if (s == "TUBEAXIAL") return ::Ifc4::IfcFanTypeEnum::IfcFanType_TUBEAXIAL;
    if (s == "VANEAXIAL") return ::Ifc4::IfcFanTypeEnum::IfcFanType_VANEAXIAL;
    if (s == "PROPELLORAXIAL") return ::Ifc4::IfcFanTypeEnum::IfcFanType_PROPELLORAXIAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcFanTypeEnum::IfcFanType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFanTypeEnum::IfcFanType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFastenerTypeEnum::ToString(IfcFastenerTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "GLUE", "MORTAR", "WELD", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFastenerTypeEnum::IfcFastenerTypeEnum IfcFastenerTypeEnum::FromString(const std::string& s) {
    if (s == "GLUE") return ::Ifc4::IfcFastenerTypeEnum::IfcFastenerType_GLUE;
    if (s == "MORTAR") return ::Ifc4::IfcFastenerTypeEnum::IfcFastenerType_MORTAR;
    if (s == "WELD") return ::Ifc4::IfcFastenerTypeEnum::IfcFastenerType_WELD;
    if (s == "USERDEFINED") return ::Ifc4::IfcFastenerTypeEnum::IfcFastenerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFastenerTypeEnum::IfcFastenerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFilterTypeEnum::ToString(IfcFilterTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRPARTICLEFILTER", "COMPRESSEDAIRFILTER", "ODORFILTER", "OILFILTER", "STRAINER", "WATERFILTER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFilterTypeEnum::IfcFilterTypeEnum IfcFilterTypeEnum::FromString(const std::string& s) {
    if (s == "AIRPARTICLEFILTER") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_AIRPARTICLEFILTER;
    if (s == "COMPRESSEDAIRFILTER") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_COMPRESSEDAIRFILTER;
    if (s == "ODORFILTER") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_ODORFILTER;
    if (s == "OILFILTER") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_OILFILTER;
    if (s == "STRAINER") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_STRAINER;
    if (s == "WATERFILTER") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_WATERFILTER;
    if (s == "USERDEFINED") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFilterTypeEnum::IfcFilterType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFireSuppressionTerminalTypeEnum::ToString(IfcFireSuppressionTerminalTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BREECHINGINLET", "FIREHYDRANT", "HOSEREEL", "SPRINKLER", "SPRINKLERDEFLECTOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum IfcFireSuppressionTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "BREECHINGINLET") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_BREECHINGINLET;
    if (s == "FIREHYDRANT") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_FIREHYDRANT;
    if (s == "HOSEREEL") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_HOSEREEL;
    if (s == "SPRINKLER") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_SPRINKLER;
    if (s == "SPRINKLERDEFLECTOR") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_SPRINKLERDEFLECTOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFlowDirectionEnum::ToString(IfcFlowDirectionEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SOURCE", "SINK", "SOURCEANDSINK", "NOTDEFINED" };
    return names[v];
}

IfcFlowDirectionEnum::IfcFlowDirectionEnum IfcFlowDirectionEnum::FromString(const std::string& s) {
    if (s == "SOURCE") return ::Ifc4::IfcFlowDirectionEnum::IfcFlowDirection_SOURCE;
    if (s == "SINK") return ::Ifc4::IfcFlowDirectionEnum::IfcFlowDirection_SINK;
    if (s == "SOURCEANDSINK") return ::Ifc4::IfcFlowDirectionEnum::IfcFlowDirection_SOURCEANDSINK;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFlowDirectionEnum::IfcFlowDirection_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFlowInstrumentTypeEnum::ToString(IfcFlowInstrumentTypeEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PRESSUREGAUGE", "THERMOMETER", "AMMETER", "FREQUENCYMETER", "POWERFACTORMETER", "PHASEANGLEMETER", "VOLTMETER_PEAK", "VOLTMETER_RMS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum IfcFlowInstrumentTypeEnum::FromString(const std::string& s) {
    if (s == "PRESSUREGAUGE") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_PRESSUREGAUGE;
    if (s == "THERMOMETER") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_THERMOMETER;
    if (s == "AMMETER") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_AMMETER;
    if (s == "FREQUENCYMETER") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_FREQUENCYMETER;
    if (s == "POWERFACTORMETER") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_POWERFACTORMETER;
    if (s == "PHASEANGLEMETER") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_PHASEANGLEMETER;
    if (s == "VOLTMETER_PEAK") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_VOLTMETER_PEAK;
    if (s == "VOLTMETER_RMS") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_VOLTMETER_RMS;
    if (s == "USERDEFINED") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFlowMeterTypeEnum::ToString(IfcFlowMeterTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ENERGYMETER", "GASMETER", "OILMETER", "WATERMETER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum IfcFlowMeterTypeEnum::FromString(const std::string& s) {
    if (s == "ENERGYMETER") return ::Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterType_ENERGYMETER;
    if (s == "GASMETER") return ::Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterType_GASMETER;
    if (s == "OILMETER") return ::Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterType_OILMETER;
    if (s == "WATERMETER") return ::Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterType_WATERMETER;
    if (s == "USERDEFINED") return ::Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFlowMeterTypeEnum::IfcFlowMeterType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFootingTypeEnum::ToString(IfcFootingTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CAISSON_FOUNDATION", "FOOTING_BEAM", "PAD_FOOTING", "PILE_CAP", "STRIP_FOOTING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFootingTypeEnum::IfcFootingTypeEnum IfcFootingTypeEnum::FromString(const std::string& s) {
    if (s == "CAISSON_FOUNDATION") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_CAISSON_FOUNDATION;
    if (s == "FOOTING_BEAM") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_FOOTING_BEAM;
    if (s == "PAD_FOOTING") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_PAD_FOOTING;
    if (s == "PILE_CAP") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_PILE_CAP;
    if (s == "STRIP_FOOTING") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_STRIP_FOOTING;
    if (s == "USERDEFINED") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFootingTypeEnum::IfcFootingType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcFurnitureTypeEnum::ToString(IfcFurnitureTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CHAIR", "TABLE", "DESK", "BED", "FILECABINET", "SHELF", "SOFA", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcFurnitureTypeEnum::IfcFurnitureTypeEnum IfcFurnitureTypeEnum::FromString(const std::string& s) {
    if (s == "CHAIR") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_CHAIR;
    if (s == "TABLE") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_TABLE;
    if (s == "DESK") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_DESK;
    if (s == "BED") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_BED;
    if (s == "FILECABINET") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_FILECABINET;
    if (s == "SHELF") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_SHELF;
    if (s == "SOFA") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_SOFA;
    if (s == "USERDEFINED") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcFurnitureTypeEnum::IfcFurnitureType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcGeographicElementTypeEnum::ToString(IfcGeographicElementTypeEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "TERRAIN", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum IfcGeographicElementTypeEnum::FromString(const std::string& s) {
    if (s == "TERRAIN") return ::Ifc4::IfcGeographicElementTypeEnum::IfcGeographicElementType_TERRAIN;
    if (s == "USERDEFINED") return ::Ifc4::IfcGeographicElementTypeEnum::IfcGeographicElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcGeographicElementTypeEnum::IfcGeographicElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcGeometricProjectionEnum::ToString(IfcGeometricProjectionEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "GRAPH_VIEW", "SKETCH_VIEW", "MODEL_VIEW", "PLAN_VIEW", "REFLECTED_PLAN_VIEW", "SECTION_VIEW", "ELEVATION_VIEW", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcGeometricProjectionEnum::IfcGeometricProjectionEnum IfcGeometricProjectionEnum::FromString(const std::string& s) {
    if (s == "GRAPH_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_GRAPH_VIEW;
    if (s == "SKETCH_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_SKETCH_VIEW;
    if (s == "MODEL_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_MODEL_VIEW;
    if (s == "PLAN_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_PLAN_VIEW;
    if (s == "REFLECTED_PLAN_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_REFLECTED_PLAN_VIEW;
    if (s == "SECTION_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_SECTION_VIEW;
    if (s == "ELEVATION_VIEW") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_ELEVATION_VIEW;
    if (s == "USERDEFINED") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcGeometricProjectionEnum::IfcGeometricProjection_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcGlobalOrLocalEnum::ToString(IfcGlobalOrLocalEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "GLOBAL_COORDS", "LOCAL_COORDS" };
    return names[v];
}

IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum IfcGlobalOrLocalEnum::FromString(const std::string& s) {
    if (s == "GLOBAL_COORDS") return ::Ifc4::IfcGlobalOrLocalEnum::IfcGlobalOrLocal_GLOBAL_COORDS;
    if (s == "LOCAL_COORDS") return ::Ifc4::IfcGlobalOrLocalEnum::IfcGlobalOrLocal_LOCAL_COORDS;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcGridTypeEnum::ToString(IfcGridTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "RECTANGULAR", "RADIAL", "TRIANGULAR", "IRREGULAR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcGridTypeEnum::IfcGridTypeEnum IfcGridTypeEnum::FromString(const std::string& s) {
    if (s == "RECTANGULAR") return ::Ifc4::IfcGridTypeEnum::IfcGridType_RECTANGULAR;
    if (s == "RADIAL") return ::Ifc4::IfcGridTypeEnum::IfcGridType_RADIAL;
    if (s == "TRIANGULAR") return ::Ifc4::IfcGridTypeEnum::IfcGridType_TRIANGULAR;
    if (s == "IRREGULAR") return ::Ifc4::IfcGridTypeEnum::IfcGridType_IRREGULAR;
    if (s == "USERDEFINED") return ::Ifc4::IfcGridTypeEnum::IfcGridType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcGridTypeEnum::IfcGridType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcHeatExchangerTypeEnum::ToString(IfcHeatExchangerTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PLATE", "SHELLANDTUBE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum IfcHeatExchangerTypeEnum::FromString(const std::string& s) {
    if (s == "PLATE") return ::Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_PLATE;
    if (s == "SHELLANDTUBE") return ::Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_SHELLANDTUBE;
    if (s == "USERDEFINED") return ::Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcHumidifierTypeEnum::ToString(IfcHumidifierTypeEnum v) {
    if ( v < 0 || v >= 15 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "STEAMINJECTION", "ADIABATICAIRWASHER", "ADIABATICPAN", "ADIABATICWETTEDELEMENT", "ADIABATICATOMIZING", "ADIABATICULTRASONIC", "ADIABATICRIGIDMEDIA", "ADIABATICCOMPRESSEDAIRNOZZLE", "ASSISTEDELECTRIC", "ASSISTEDNATURALGAS", "ASSISTEDPROPANE", "ASSISTEDBUTANE", "ASSISTEDSTEAM", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcHumidifierTypeEnum::IfcHumidifierTypeEnum IfcHumidifierTypeEnum::FromString(const std::string& s) {
    if (s == "STEAMINJECTION") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_STEAMINJECTION;
    if (s == "ADIABATICAIRWASHER") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICAIRWASHER;
    if (s == "ADIABATICPAN") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICPAN;
    if (s == "ADIABATICWETTEDELEMENT") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICWETTEDELEMENT;
    if (s == "ADIABATICATOMIZING") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICATOMIZING;
    if (s == "ADIABATICULTRASONIC") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICULTRASONIC;
    if (s == "ADIABATICRIGIDMEDIA") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICRIGIDMEDIA;
    if (s == "ADIABATICCOMPRESSEDAIRNOZZLE") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICCOMPRESSEDAIRNOZZLE;
    if (s == "ASSISTEDELECTRIC") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDELECTRIC;
    if (s == "ASSISTEDNATURALGAS") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDNATURALGAS;
    if (s == "ASSISTEDPROPANE") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDPROPANE;
    if (s == "ASSISTEDBUTANE") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDBUTANE;
    if (s == "ASSISTEDSTEAM") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDSTEAM;
    if (s == "USERDEFINED") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcHumidifierTypeEnum::IfcHumidifierType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcInterceptorTypeEnum::ToString(IfcInterceptorTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CYCLONIC", "GREASE", "OIL", "PETROL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcInterceptorTypeEnum::IfcInterceptorTypeEnum IfcInterceptorTypeEnum::FromString(const std::string& s) {
    if (s == "CYCLONIC") return ::Ifc4::IfcInterceptorTypeEnum::IfcInterceptorType_CYCLONIC;
    if (s == "GREASE") return ::Ifc4::IfcInterceptorTypeEnum::IfcInterceptorType_GREASE;
    if (s == "OIL") return ::Ifc4::IfcInterceptorTypeEnum::IfcInterceptorType_OIL;
    if (s == "PETROL") return ::Ifc4::IfcInterceptorTypeEnum::IfcInterceptorType_PETROL;
    if (s == "USERDEFINED") return ::Ifc4::IfcInterceptorTypeEnum::IfcInterceptorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcInterceptorTypeEnum::IfcInterceptorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcInternalOrExternalEnum::ToString(IfcInternalOrExternalEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "INTERNAL", "EXTERNAL", "EXTERNAL_EARTH", "EXTERNAL_WATER", "EXTERNAL_FIRE", "NOTDEFINED" };
    return names[v];
}

IfcInternalOrExternalEnum::IfcInternalOrExternalEnum IfcInternalOrExternalEnum::FromString(const std::string& s) {
    if (s == "INTERNAL") return ::Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternal_INTERNAL;
    if (s == "EXTERNAL") return ::Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL;
    if (s == "EXTERNAL_EARTH") return ::Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL_EARTH;
    if (s == "EXTERNAL_WATER") return ::Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL_WATER;
    if (s == "EXTERNAL_FIRE") return ::Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL_FIRE;
    if (s == "NOTDEFINED") return ::Ifc4::IfcInternalOrExternalEnum::IfcInternalOrExternal_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcInventoryTypeEnum::ToString(IfcInventoryTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ASSETINVENTORY", "SPACEINVENTORY", "FURNITUREINVENTORY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcInventoryTypeEnum::IfcInventoryTypeEnum IfcInventoryTypeEnum::FromString(const std::string& s) {
    if (s == "ASSETINVENTORY") return ::Ifc4::IfcInventoryTypeEnum::IfcInventoryType_ASSETINVENTORY;
    if (s == "SPACEINVENTORY") return ::Ifc4::IfcInventoryTypeEnum::IfcInventoryType_SPACEINVENTORY;
    if (s == "FURNITUREINVENTORY") return ::Ifc4::IfcInventoryTypeEnum::IfcInventoryType_FURNITUREINVENTORY;
    if (s == "USERDEFINED") return ::Ifc4::IfcInventoryTypeEnum::IfcInventoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcInventoryTypeEnum::IfcInventoryType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcJunctionBoxTypeEnum::ToString(IfcJunctionBoxTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DATA", "POWER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum IfcJunctionBoxTypeEnum::FromString(const std::string& s) {
    if (s == "DATA") return ::Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_DATA;
    if (s == "POWER") return ::Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_POWER;
    if (s == "USERDEFINED") return ::Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcKnotType::ToString(IfcKnotType v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "UNIFORM_KNOTS", "QUASI_UNIFORM_KNOTS", "PIECEWISE_BEZIER_KNOTS", "UNSPECIFIED" };
    return names[v];
}

IfcKnotType::IfcKnotType IfcKnotType::FromString(const std::string& s) {
    if (s == "UNIFORM_KNOTS") return ::Ifc4::IfcKnotType::IfcKnotType_UNIFORM_KNOTS;
    if (s == "QUASI_UNIFORM_KNOTS") return ::Ifc4::IfcKnotType::IfcKnotType_QUASI_UNIFORM_KNOTS;
    if (s == "PIECEWISE_BEZIER_KNOTS") return ::Ifc4::IfcKnotType::IfcKnotType_PIECEWISE_BEZIER_KNOTS;
    if (s == "UNSPECIFIED") return ::Ifc4::IfcKnotType::IfcKnotType_UNSPECIFIED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLaborResourceTypeEnum::ToString(IfcLaborResourceTypeEnum v) {
    if ( v < 0 || v >= 21 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ADMINISTRATION", "CARPENTRY", "CLEANING", "CONCRETE", "DRYWALL", "ELECTRIC", "FINISHING", "FLOORING", "GENERAL", "HVAC", "LANDSCAPING", "MASONRY", "PAINTING", "PAVING", "PLUMBING", "ROOFING", "SITEGRADING", "STEELWORK", "SURVEYING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum IfcLaborResourceTypeEnum::FromString(const std::string& s) {
    if (s == "ADMINISTRATION") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_ADMINISTRATION;
    if (s == "CARPENTRY") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_CARPENTRY;
    if (s == "CLEANING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_CLEANING;
    if (s == "CONCRETE") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_CONCRETE;
    if (s == "DRYWALL") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_DRYWALL;
    if (s == "ELECTRIC") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_ELECTRIC;
    if (s == "FINISHING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_FINISHING;
    if (s == "FLOORING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_FLOORING;
    if (s == "GENERAL") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_GENERAL;
    if (s == "HVAC") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_HVAC;
    if (s == "LANDSCAPING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_LANDSCAPING;
    if (s == "MASONRY") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_MASONRY;
    if (s == "PAINTING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_PAINTING;
    if (s == "PAVING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_PAVING;
    if (s == "PLUMBING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_PLUMBING;
    if (s == "ROOFING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_ROOFING;
    if (s == "SITEGRADING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_SITEGRADING;
    if (s == "STEELWORK") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_STEELWORK;
    if (s == "SURVEYING") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_SURVEYING;
    if (s == "USERDEFINED") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcLaborResourceTypeEnum::IfcLaborResourceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLampTypeEnum::ToString(IfcLampTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMPACTFLUORESCENT", "FLUORESCENT", "HALOGEN", "HIGHPRESSUREMERCURY", "HIGHPRESSURESODIUM", "LED", "METALHALIDE", "OLED", "TUNGSTENFILAMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcLampTypeEnum::IfcLampTypeEnum IfcLampTypeEnum::FromString(const std::string& s) {
    if (s == "COMPACTFLUORESCENT") return ::Ifc4::IfcLampTypeEnum::IfcLampType_COMPACTFLUORESCENT;
    if (s == "FLUORESCENT") return ::Ifc4::IfcLampTypeEnum::IfcLampType_FLUORESCENT;
    if (s == "HALOGEN") return ::Ifc4::IfcLampTypeEnum::IfcLampType_HALOGEN;
    if (s == "HIGHPRESSUREMERCURY") return ::Ifc4::IfcLampTypeEnum::IfcLampType_HIGHPRESSUREMERCURY;
    if (s == "HIGHPRESSURESODIUM") return ::Ifc4::IfcLampTypeEnum::IfcLampType_HIGHPRESSURESODIUM;
    if (s == "LED") return ::Ifc4::IfcLampTypeEnum::IfcLampType_LED;
    if (s == "METALHALIDE") return ::Ifc4::IfcLampTypeEnum::IfcLampType_METALHALIDE;
    if (s == "OLED") return ::Ifc4::IfcLampTypeEnum::IfcLampType_OLED;
    if (s == "TUNGSTENFILAMENT") return ::Ifc4::IfcLampTypeEnum::IfcLampType_TUNGSTENFILAMENT;
    if (s == "USERDEFINED") return ::Ifc4::IfcLampTypeEnum::IfcLampType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcLampTypeEnum::IfcLampType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLayerSetDirectionEnum::ToString(IfcLayerSetDirectionEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AXIS1", "AXIS2", "AXIS3" };
    return names[v];
}

IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum IfcLayerSetDirectionEnum::FromString(const std::string& s) {
    if (s == "AXIS1") return ::Ifc4::IfcLayerSetDirectionEnum::IfcLayerSetDirection_AXIS1;
    if (s == "AXIS2") return ::Ifc4::IfcLayerSetDirectionEnum::IfcLayerSetDirection_AXIS2;
    if (s == "AXIS3") return ::Ifc4::IfcLayerSetDirectionEnum::IfcLayerSetDirection_AXIS3;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLightDistributionCurveEnum::ToString(IfcLightDistributionCurveEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "TYPE_A", "TYPE_B", "TYPE_C", "NOTDEFINED" };
    return names[v];
}

IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum IfcLightDistributionCurveEnum::FromString(const std::string& s) {
    if (s == "TYPE_A") return ::Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_TYPE_A;
    if (s == "TYPE_B") return ::Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_TYPE_B;
    if (s == "TYPE_C") return ::Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_TYPE_C;
    if (s == "NOTDEFINED") return ::Ifc4::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLightEmissionSourceEnum::ToString(IfcLightEmissionSourceEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMPACTFLUORESCENT", "FLUORESCENT", "HIGHPRESSUREMERCURY", "HIGHPRESSURESODIUM", "LIGHTEMITTINGDIODE", "LOWPRESSURESODIUM", "LOWVOLTAGEHALOGEN", "MAINVOLTAGEHALOGEN", "METALHALIDE", "TUNGSTENFILAMENT", "NOTDEFINED" };
    return names[v];
}

IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum IfcLightEmissionSourceEnum::FromString(const std::string& s) {
    if (s == "COMPACTFLUORESCENT") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_COMPACTFLUORESCENT;
    if (s == "FLUORESCENT") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_FLUORESCENT;
    if (s == "HIGHPRESSUREMERCURY") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_HIGHPRESSUREMERCURY;
    if (s == "HIGHPRESSURESODIUM") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_HIGHPRESSURESODIUM;
    if (s == "LIGHTEMITTINGDIODE") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_LIGHTEMITTINGDIODE;
    if (s == "LOWPRESSURESODIUM") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_LOWPRESSURESODIUM;
    if (s == "LOWVOLTAGEHALOGEN") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_LOWVOLTAGEHALOGEN;
    if (s == "MAINVOLTAGEHALOGEN") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_MAINVOLTAGEHALOGEN;
    if (s == "METALHALIDE") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_METALHALIDE;
    if (s == "TUNGSTENFILAMENT") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_TUNGSTENFILAMENT;
    if (s == "NOTDEFINED") return ::Ifc4::IfcLightEmissionSourceEnum::IfcLightEmissionSource_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLightFixtureTypeEnum::ToString(IfcLightFixtureTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "POINTSOURCE", "DIRECTIONSOURCE", "SECURITYLIGHTING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum IfcLightFixtureTypeEnum::FromString(const std::string& s) {
    if (s == "POINTSOURCE") return ::Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureType_POINTSOURCE;
    if (s == "DIRECTIONSOURCE") return ::Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureType_DIRECTIONSOURCE;
    if (s == "SECURITYLIGHTING") return ::Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureType_SECURITYLIGHTING;
    if (s == "USERDEFINED") return ::Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcLightFixtureTypeEnum::IfcLightFixtureType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLoadGroupTypeEnum::ToString(IfcLoadGroupTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "LOAD_GROUP", "LOAD_CASE", "LOAD_COMBINATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum IfcLoadGroupTypeEnum::FromString(const std::string& s) {
    if (s == "LOAD_GROUP") return ::Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupType_LOAD_GROUP;
    if (s == "LOAD_CASE") return ::Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupType_LOAD_CASE;
    if (s == "LOAD_COMBINATION") return ::Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupType_LOAD_COMBINATION;
    if (s == "USERDEFINED") return ::Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcLoadGroupTypeEnum::IfcLoadGroupType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcLogicalOperatorEnum::ToString(IfcLogicalOperatorEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "LOGICALAND", "LOGICALOR", "LOGICALXOR", "LOGICALNOTAND", "LOGICALNOTOR" };
    return names[v];
}

IfcLogicalOperatorEnum::IfcLogicalOperatorEnum IfcLogicalOperatorEnum::FromString(const std::string& s) {
    if (s == "LOGICALAND") return ::Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALAND;
    if (s == "LOGICALOR") return ::Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALOR;
    if (s == "LOGICALXOR") return ::Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALXOR;
    if (s == "LOGICALNOTAND") return ::Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALNOTAND;
    if (s == "LOGICALNOTOR") return ::Ifc4::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALNOTOR;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcMechanicalFastenerTypeEnum::ToString(IfcMechanicalFastenerTypeEnum v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ANCHORBOLT", "BOLT", "DOWEL", "NAIL", "NAILPLATE", "RIVET", "SCREW", "SHEARCONNECTOR", "STAPLE", "STUDSHEARCONNECTOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum IfcMechanicalFastenerTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORBOLT") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_ANCHORBOLT;
    if (s == "BOLT") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_BOLT;
    if (s == "DOWEL") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_DOWEL;
    if (s == "NAIL") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NAIL;
    if (s == "NAILPLATE") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NAILPLATE;
    if (s == "RIVET") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RIVET;
    if (s == "SCREW") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_SCREW;
    if (s == "SHEARCONNECTOR") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_SHEARCONNECTOR;
    if (s == "STAPLE") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_STAPLE;
    if (s == "STUDSHEARCONNECTOR") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_STUDSHEARCONNECTOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcMedicalDeviceTypeEnum::ToString(IfcMedicalDeviceTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRSTATION", "FEEDAIRUNIT", "OXYGENGENERATOR", "OXYGENPLANT", "VACUUMSTATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum IfcMedicalDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "AIRSTATION") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_AIRSTATION;
    if (s == "FEEDAIRUNIT") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_FEEDAIRUNIT;
    if (s == "OXYGENGENERATOR") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_OXYGENGENERATOR;
    if (s == "OXYGENPLANT") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_OXYGENPLANT;
    if (s == "VACUUMSTATION") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_VACUUMSTATION;
    if (s == "USERDEFINED") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcMemberTypeEnum::ToString(IfcMemberTypeEnum v) {
    if ( v < 0 || v >= 14 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BRACE", "CHORD", "COLLAR", "MEMBER", "MULLION", "PLATE", "POST", "PURLIN", "RAFTER", "STRINGER", "STRUT", "STUD", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcMemberTypeEnum::IfcMemberTypeEnum IfcMemberTypeEnum::FromString(const std::string& s) {
    if (s == "BRACE") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_BRACE;
    if (s == "CHORD") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_CHORD;
    if (s == "COLLAR") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_COLLAR;
    if (s == "MEMBER") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_MEMBER;
    if (s == "MULLION") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_MULLION;
    if (s == "PLATE") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_PLATE;
    if (s == "POST") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_POST;
    if (s == "PURLIN") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_PURLIN;
    if (s == "RAFTER") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_RAFTER;
    if (s == "STRINGER") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_STRINGER;
    if (s == "STRUT") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_STRUT;
    if (s == "STUD") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_STUD;
    if (s == "USERDEFINED") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcMemberTypeEnum::IfcMemberType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcMotorConnectionTypeEnum::ToString(IfcMotorConnectionTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BELTDRIVE", "COUPLING", "DIRECTDRIVE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum IfcMotorConnectionTypeEnum::FromString(const std::string& s) {
    if (s == "BELTDRIVE") return ::Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_BELTDRIVE;
    if (s == "COUPLING") return ::Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_COUPLING;
    if (s == "DIRECTDRIVE") return ::Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_DIRECTDRIVE;
    if (s == "USERDEFINED") return ::Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcNullStyle::ToString(IfcNullStyle v) {
    if ( v < 0 || v >= 1 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "NULL" };
    return names[v];
}

IfcNullStyle::IfcNullStyle IfcNullStyle::FromString(const std::string& s) {
    if (s == "NULL") return ::Ifc4::IfcNullStyle::IfcNullStyle_NULL;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcObjectTypeEnum::ToString(IfcObjectTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PRODUCT", "PROCESS", "CONTROL", "RESOURCE", "ACTOR", "GROUP", "PROJECT", "NOTDEFINED" };
    return names[v];
}

IfcObjectTypeEnum::IfcObjectTypeEnum IfcObjectTypeEnum::FromString(const std::string& s) {
    if (s == "PRODUCT") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_PRODUCT;
    if (s == "PROCESS") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_PROCESS;
    if (s == "CONTROL") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_CONTROL;
    if (s == "RESOURCE") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_RESOURCE;
    if (s == "ACTOR") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_ACTOR;
    if (s == "GROUP") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_GROUP;
    if (s == "PROJECT") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_PROJECT;
    if (s == "NOTDEFINED") return ::Ifc4::IfcObjectTypeEnum::IfcObjectType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcObjectiveEnum::ToString(IfcObjectiveEnum v) {
    if ( v < 0 || v >= 13 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CODECOMPLIANCE", "CODEWAIVER", "DESIGNINTENT", "EXTERNAL", "HEALTHANDSAFETY", "MERGECONFLICT", "MODELVIEW", "PARAMETER", "REQUIREMENT", "SPECIFICATION", "TRIGGERCONDITION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcObjectiveEnum::IfcObjectiveEnum IfcObjectiveEnum::FromString(const std::string& s) {
    if (s == "CODECOMPLIANCE") return ::Ifc4::IfcObjectiveEnum::IfcObjective_CODECOMPLIANCE;
    if (s == "CODEWAIVER") return ::Ifc4::IfcObjectiveEnum::IfcObjective_CODEWAIVER;
    if (s == "DESIGNINTENT") return ::Ifc4::IfcObjectiveEnum::IfcObjective_DESIGNINTENT;
    if (s == "EXTERNAL") return ::Ifc4::IfcObjectiveEnum::IfcObjective_EXTERNAL;
    if (s == "HEALTHANDSAFETY") return ::Ifc4::IfcObjectiveEnum::IfcObjective_HEALTHANDSAFETY;
    if (s == "MERGECONFLICT") return ::Ifc4::IfcObjectiveEnum::IfcObjective_MERGECONFLICT;
    if (s == "MODELVIEW") return ::Ifc4::IfcObjectiveEnum::IfcObjective_MODELVIEW;
    if (s == "PARAMETER") return ::Ifc4::IfcObjectiveEnum::IfcObjective_PARAMETER;
    if (s == "REQUIREMENT") return ::Ifc4::IfcObjectiveEnum::IfcObjective_REQUIREMENT;
    if (s == "SPECIFICATION") return ::Ifc4::IfcObjectiveEnum::IfcObjective_SPECIFICATION;
    if (s == "TRIGGERCONDITION") return ::Ifc4::IfcObjectiveEnum::IfcObjective_TRIGGERCONDITION;
    if (s == "USERDEFINED") return ::Ifc4::IfcObjectiveEnum::IfcObjective_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcObjectiveEnum::IfcObjective_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcOccupantTypeEnum::ToString(IfcOccupantTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ASSIGNEE", "ASSIGNOR", "LESSEE", "LESSOR", "LETTINGAGENT", "OWNER", "TENANT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcOccupantTypeEnum::IfcOccupantTypeEnum IfcOccupantTypeEnum::FromString(const std::string& s) {
    if (s == "ASSIGNEE") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_ASSIGNEE;
    if (s == "ASSIGNOR") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_ASSIGNOR;
    if (s == "LESSEE") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_LESSEE;
    if (s == "LESSOR") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_LESSOR;
    if (s == "LETTINGAGENT") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_LETTINGAGENT;
    if (s == "OWNER") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_OWNER;
    if (s == "TENANT") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_TENANT;
    if (s == "USERDEFINED") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcOccupantTypeEnum::IfcOccupantType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcOpeningElementTypeEnum::ToString(IfcOpeningElementTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "OPENING", "RECESS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum IfcOpeningElementTypeEnum::FromString(const std::string& s) {
    if (s == "OPENING") return ::Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementType_OPENING;
    if (s == "RECESS") return ::Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementType_RECESS;
    if (s == "USERDEFINED") return ::Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcOpeningElementTypeEnum::IfcOpeningElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcOutletTypeEnum::ToString(IfcOutletTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AUDIOVISUALOUTLET", "COMMUNICATIONSOUTLET", "POWEROUTLET", "DATAOUTLET", "TELEPHONEOUTLET", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcOutletTypeEnum::IfcOutletTypeEnum IfcOutletTypeEnum::FromString(const std::string& s) {
    if (s == "AUDIOVISUALOUTLET") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_AUDIOVISUALOUTLET;
    if (s == "COMMUNICATIONSOUTLET") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_COMMUNICATIONSOUTLET;
    if (s == "POWEROUTLET") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_POWEROUTLET;
    if (s == "DATAOUTLET") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_DATAOUTLET;
    if (s == "TELEPHONEOUTLET") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_TELEPHONEOUTLET;
    if (s == "USERDEFINED") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcOutletTypeEnum::IfcOutletType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPerformanceHistoryTypeEnum::ToString(IfcPerformanceHistoryTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum IfcPerformanceHistoryTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPermeableCoveringOperationEnum::ToString(IfcPermeableCoveringOperationEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "GRILL", "LOUVER", "SCREEN", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum IfcPermeableCoveringOperationEnum::FromString(const std::string& s) {
    if (s == "GRILL") return ::Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_GRILL;
    if (s == "LOUVER") return ::Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_LOUVER;
    if (s == "SCREEN") return ::Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_SCREEN;
    if (s == "USERDEFINED") return ::Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPermitTypeEnum::ToString(IfcPermitTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ACCESS", "BUILDING", "WORK", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPermitTypeEnum::IfcPermitTypeEnum IfcPermitTypeEnum::FromString(const std::string& s) {
    if (s == "ACCESS") return ::Ifc4::IfcPermitTypeEnum::IfcPermitType_ACCESS;
    if (s == "BUILDING") return ::Ifc4::IfcPermitTypeEnum::IfcPermitType_BUILDING;
    if (s == "WORK") return ::Ifc4::IfcPermitTypeEnum::IfcPermitType_WORK;
    if (s == "USERDEFINED") return ::Ifc4::IfcPermitTypeEnum::IfcPermitType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPermitTypeEnum::IfcPermitType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPhysicalOrVirtualEnum::ToString(IfcPhysicalOrVirtualEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PHYSICAL", "VIRTUAL", "NOTDEFINED" };
    return names[v];
}

IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum IfcPhysicalOrVirtualEnum::FromString(const std::string& s) {
    if (s == "PHYSICAL") return ::Ifc4::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtual_PHYSICAL;
    if (s == "VIRTUAL") return ::Ifc4::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtual_VIRTUAL;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtual_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPileConstructionEnum::ToString(IfcPileConstructionEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CAST_IN_PLACE", "COMPOSITE", "PRECAST_CONCRETE", "PREFAB_STEEL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPileConstructionEnum::IfcPileConstructionEnum IfcPileConstructionEnum::FromString(const std::string& s) {
    if (s == "CAST_IN_PLACE") return ::Ifc4::IfcPileConstructionEnum::IfcPileConstruction_CAST_IN_PLACE;
    if (s == "COMPOSITE") return ::Ifc4::IfcPileConstructionEnum::IfcPileConstruction_COMPOSITE;
    if (s == "PRECAST_CONCRETE") return ::Ifc4::IfcPileConstructionEnum::IfcPileConstruction_PRECAST_CONCRETE;
    if (s == "PREFAB_STEEL") return ::Ifc4::IfcPileConstructionEnum::IfcPileConstruction_PREFAB_STEEL;
    if (s == "USERDEFINED") return ::Ifc4::IfcPileConstructionEnum::IfcPileConstruction_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPileConstructionEnum::IfcPileConstruction_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPileTypeEnum::ToString(IfcPileTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BORED", "DRIVEN", "JETGROUTING", "COHESION", "FRICTION", "SUPPORT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPileTypeEnum::IfcPileTypeEnum IfcPileTypeEnum::FromString(const std::string& s) {
    if (s == "BORED") return ::Ifc4::IfcPileTypeEnum::IfcPileType_BORED;
    if (s == "DRIVEN") return ::Ifc4::IfcPileTypeEnum::IfcPileType_DRIVEN;
    if (s == "JETGROUTING") return ::Ifc4::IfcPileTypeEnum::IfcPileType_JETGROUTING;
    if (s == "COHESION") return ::Ifc4::IfcPileTypeEnum::IfcPileType_COHESION;
    if (s == "FRICTION") return ::Ifc4::IfcPileTypeEnum::IfcPileType_FRICTION;
    if (s == "SUPPORT") return ::Ifc4::IfcPileTypeEnum::IfcPileType_SUPPORT;
    if (s == "USERDEFINED") return ::Ifc4::IfcPileTypeEnum::IfcPileType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPileTypeEnum::IfcPileType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPipeFittingTypeEnum::ToString(IfcPipeFittingTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BEND", "CONNECTOR", "ENTRY", "EXIT", "JUNCTION", "OBSTRUCTION", "TRANSITION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum IfcPipeFittingTypeEnum::FromString(const std::string& s) {
    if (s == "BEND") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_BEND;
    if (s == "CONNECTOR") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_CONNECTOR;
    if (s == "ENTRY") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_ENTRY;
    if (s == "EXIT") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_EXIT;
    if (s == "JUNCTION") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_JUNCTION;
    if (s == "OBSTRUCTION") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_OBSTRUCTION;
    if (s == "TRANSITION") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_TRANSITION;
    if (s == "USERDEFINED") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPipeFittingTypeEnum::IfcPipeFittingType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPipeSegmentTypeEnum::ToString(IfcPipeSegmentTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CULVERT", "FLEXIBLESEGMENT", "RIGIDSEGMENT", "GUTTER", "SPOOL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum IfcPipeSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CULVERT") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_CULVERT;
    if (s == "FLEXIBLESEGMENT") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_FLEXIBLESEGMENT;
    if (s == "RIGIDSEGMENT") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_RIGIDSEGMENT;
    if (s == "GUTTER") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_GUTTER;
    if (s == "SPOOL") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_SPOOL;
    if (s == "USERDEFINED") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPlateTypeEnum::ToString(IfcPlateTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CURTAIN_PANEL", "SHEET", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPlateTypeEnum::IfcPlateTypeEnum IfcPlateTypeEnum::FromString(const std::string& s) {
    if (s == "CURTAIN_PANEL") return ::Ifc4::IfcPlateTypeEnum::IfcPlateType_CURTAIN_PANEL;
    if (s == "SHEET") return ::Ifc4::IfcPlateTypeEnum::IfcPlateType_SHEET;
    if (s == "USERDEFINED") return ::Ifc4::IfcPlateTypeEnum::IfcPlateType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPlateTypeEnum::IfcPlateType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPreferredSurfaceCurveRepresentation::ToString(IfcPreferredSurfaceCurveRepresentation v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CURVE3D", "PCURVE_S1", "PCURVE_S2" };
    return names[v];
}

IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation IfcPreferredSurfaceCurveRepresentation::FromString(const std::string& s) {
    if (s == "CURVE3D") return ::Ifc4::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation_CURVE3D;
    if (s == "PCURVE_S1") return ::Ifc4::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation_PCURVE_S1;
    if (s == "PCURVE_S2") return ::Ifc4::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation_PCURVE_S2;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProcedureTypeEnum::ToString(IfcProcedureTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ADVICE_CAUTION", "ADVICE_NOTE", "ADVICE_WARNING", "CALIBRATION", "DIAGNOSTIC", "SHUTDOWN", "STARTUP", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcProcedureTypeEnum::IfcProcedureTypeEnum IfcProcedureTypeEnum::FromString(const std::string& s) {
    if (s == "ADVICE_CAUTION") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_ADVICE_CAUTION;
    if (s == "ADVICE_NOTE") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_ADVICE_NOTE;
    if (s == "ADVICE_WARNING") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_ADVICE_WARNING;
    if (s == "CALIBRATION") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_CALIBRATION;
    if (s == "DIAGNOSTIC") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_DIAGNOSTIC;
    if (s == "SHUTDOWN") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_SHUTDOWN;
    if (s == "STARTUP") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_STARTUP;
    if (s == "USERDEFINED") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcProcedureTypeEnum::IfcProcedureType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProfileTypeEnum::ToString(IfcProfileTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CURVE", "AREA" };
    return names[v];
}

IfcProfileTypeEnum::IfcProfileTypeEnum IfcProfileTypeEnum::FromString(const std::string& s) {
    if (s == "CURVE") return ::Ifc4::IfcProfileTypeEnum::IfcProfileType_CURVE;
    if (s == "AREA") return ::Ifc4::IfcProfileTypeEnum::IfcProfileType_AREA;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProjectOrderTypeEnum::ToString(IfcProjectOrderTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CHANGEORDER", "MAINTENANCEWORKORDER", "MOVEORDER", "PURCHASEORDER", "WORKORDER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum IfcProjectOrderTypeEnum::FromString(const std::string& s) {
    if (s == "CHANGEORDER") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_CHANGEORDER;
    if (s == "MAINTENANCEWORKORDER") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_MAINTENANCEWORKORDER;
    if (s == "MOVEORDER") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_MOVEORDER;
    if (s == "PURCHASEORDER") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_PURCHASEORDER;
    if (s == "WORKORDER") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_WORKORDER;
    if (s == "USERDEFINED") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcProjectOrderTypeEnum::IfcProjectOrderType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProjectedOrTrueLengthEnum::ToString(IfcProjectedOrTrueLengthEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PROJECTED_LENGTH", "TRUE_LENGTH" };
    return names[v];
}

IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum IfcProjectedOrTrueLengthEnum::FromString(const std::string& s) {
    if (s == "PROJECTED_LENGTH") return ::Ifc4::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLength_PROJECTED_LENGTH;
    if (s == "TRUE_LENGTH") return ::Ifc4::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLength_TRUE_LENGTH;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProjectionElementTypeEnum::ToString(IfcProjectionElementTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum IfcProjectionElementTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcProjectionElementTypeEnum::IfcProjectionElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcProjectionElementTypeEnum::IfcProjectionElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPropertySetTemplateTypeEnum::ToString(IfcPropertySetTemplateTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PSET_TYPEDRIVENONLY", "PSET_TYPEDRIVENOVERRIDE", "PSET_OCCURRENCEDRIVEN", "PSET_PERFORMANCEDRIVEN", "QTO_TYPEDRIVENONLY", "QTO_TYPEDRIVENOVERRIDE", "QTO_OCCURRENCEDRIVEN", "NOTDEFINED" };
    return names[v];
}

IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum IfcPropertySetTemplateTypeEnum::FromString(const std::string& s) {
    if (s == "PSET_TYPEDRIVENONLY") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_TYPEDRIVENONLY;
    if (s == "PSET_TYPEDRIVENOVERRIDE") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_TYPEDRIVENOVERRIDE;
    if (s == "PSET_OCCURRENCEDRIVEN") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_OCCURRENCEDRIVEN;
    if (s == "PSET_PERFORMANCEDRIVEN") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_PERFORMANCEDRIVEN;
    if (s == "QTO_TYPEDRIVENONLY") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_QTO_TYPEDRIVENONLY;
    if (s == "QTO_TYPEDRIVENOVERRIDE") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_QTO_TYPEDRIVENOVERRIDE;
    if (s == "QTO_OCCURRENCEDRIVEN") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_QTO_OCCURRENCEDRIVEN;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(IfcProtectiveDeviceTrippingUnitTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ELECTRONIC", "ELECTROMAGNETIC", "RESIDUALCURRENT", "THERMAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRONIC") return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_ELECTRONIC;
    if (s == "ELECTROMAGNETIC") return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_ELECTROMAGNETIC;
    if (s == "RESIDUALCURRENT") return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_RESIDUALCURRENT;
    if (s == "THERMAL") return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_THERMAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcProtectiveDeviceTypeEnum::ToString(IfcProtectiveDeviceTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CIRCUITBREAKER", "EARTHLEAKAGECIRCUITBREAKER", "EARTHINGSWITCH", "FUSEDISCONNECTOR", "RESIDUALCURRENTCIRCUITBREAKER", "RESIDUALCURRENTSWITCH", "VARISTOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum IfcProtectiveDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CIRCUITBREAKER") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_CIRCUITBREAKER;
    if (s == "EARTHLEAKAGECIRCUITBREAKER") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_EARTHLEAKAGECIRCUITBREAKER;
    if (s == "EARTHINGSWITCH") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_EARTHINGSWITCH;
    if (s == "FUSEDISCONNECTOR") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_FUSEDISCONNECTOR;
    if (s == "RESIDUALCURRENTCIRCUITBREAKER") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_RESIDUALCURRENTCIRCUITBREAKER;
    if (s == "RESIDUALCURRENTSWITCH") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_RESIDUALCURRENTSWITCH;
    if (s == "VARISTOR") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_VARISTOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcPumpTypeEnum::ToString(IfcPumpTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CIRCULATOR", "ENDSUCTION", "SPLITCASE", "SUBMERSIBLEPUMP", "SUMPPUMP", "VERTICALINLINE", "VERTICALTURBINE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcPumpTypeEnum::IfcPumpTypeEnum IfcPumpTypeEnum::FromString(const std::string& s) {
    if (s == "CIRCULATOR") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_CIRCULATOR;
    if (s == "ENDSUCTION") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_ENDSUCTION;
    if (s == "SPLITCASE") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_SPLITCASE;
    if (s == "SUBMERSIBLEPUMP") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_SUBMERSIBLEPUMP;
    if (s == "SUMPPUMP") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_SUMPPUMP;
    if (s == "VERTICALINLINE") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_VERTICALINLINE;
    if (s == "VERTICALTURBINE") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_VERTICALTURBINE;
    if (s == "USERDEFINED") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcPumpTypeEnum::IfcPumpType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcRailingTypeEnum::ToString(IfcRailingTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "HANDRAIL", "GUARDRAIL", "BALUSTRADE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcRailingTypeEnum::IfcRailingTypeEnum IfcRailingTypeEnum::FromString(const std::string& s) {
    if (s == "HANDRAIL") return ::Ifc4::IfcRailingTypeEnum::IfcRailingType_HANDRAIL;
    if (s == "GUARDRAIL") return ::Ifc4::IfcRailingTypeEnum::IfcRailingType_GUARDRAIL;
    if (s == "BALUSTRADE") return ::Ifc4::IfcRailingTypeEnum::IfcRailingType_BALUSTRADE;
    if (s == "USERDEFINED") return ::Ifc4::IfcRailingTypeEnum::IfcRailingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcRailingTypeEnum::IfcRailingType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcRampFlightTypeEnum::ToString(IfcRampFlightTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "STRAIGHT", "SPIRAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcRampFlightTypeEnum::IfcRampFlightTypeEnum IfcRampFlightTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT") return ::Ifc4::IfcRampFlightTypeEnum::IfcRampFlightType_STRAIGHT;
    if (s == "SPIRAL") return ::Ifc4::IfcRampFlightTypeEnum::IfcRampFlightType_SPIRAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcRampFlightTypeEnum::IfcRampFlightType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcRampFlightTypeEnum::IfcRampFlightType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcRampTypeEnum::ToString(IfcRampTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "STRAIGHT_RUN_RAMP", "TWO_STRAIGHT_RUN_RAMP", "QUARTER_TURN_RAMP", "TWO_QUARTER_TURN_RAMP", "HALF_TURN_RAMP", "SPIRAL_RAMP", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcRampTypeEnum::IfcRampTypeEnum IfcRampTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT_RUN_RAMP") return ::Ifc4::IfcRampTypeEnum::IfcRampType_STRAIGHT_RUN_RAMP;
    if (s == "TWO_STRAIGHT_RUN_RAMP") return ::Ifc4::IfcRampTypeEnum::IfcRampType_TWO_STRAIGHT_RUN_RAMP;
    if (s == "QUARTER_TURN_RAMP") return ::Ifc4::IfcRampTypeEnum::IfcRampType_QUARTER_TURN_RAMP;
    if (s == "TWO_QUARTER_TURN_RAMP") return ::Ifc4::IfcRampTypeEnum::IfcRampType_TWO_QUARTER_TURN_RAMP;
    if (s == "HALF_TURN_RAMP") return ::Ifc4::IfcRampTypeEnum::IfcRampType_HALF_TURN_RAMP;
    if (s == "SPIRAL_RAMP") return ::Ifc4::IfcRampTypeEnum::IfcRampType_SPIRAL_RAMP;
    if (s == "USERDEFINED") return ::Ifc4::IfcRampTypeEnum::IfcRampType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcRampTypeEnum::IfcRampType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcRecurrenceTypeEnum::ToString(IfcRecurrenceTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DAILY", "WEEKLY", "MONTHLY_BY_DAY_OF_MONTH", "MONTHLY_BY_POSITION", "BY_DAY_COUNT", "BY_WEEKDAY_COUNT", "YEARLY_BY_DAY_OF_MONTH", "YEARLY_BY_POSITION" };
    return names[v];
}

IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum IfcRecurrenceTypeEnum::FromString(const std::string& s) {
    if (s == "DAILY") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_DAILY;
    if (s == "WEEKLY") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_WEEKLY;
    if (s == "MONTHLY_BY_DAY_OF_MONTH") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_MONTHLY_BY_DAY_OF_MONTH;
    if (s == "MONTHLY_BY_POSITION") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_MONTHLY_BY_POSITION;
    if (s == "BY_DAY_COUNT") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_BY_DAY_COUNT;
    if (s == "BY_WEEKDAY_COUNT") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_BY_WEEKDAY_COUNT;
    if (s == "YEARLY_BY_DAY_OF_MONTH") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_YEARLY_BY_DAY_OF_MONTH;
    if (s == "YEARLY_BY_POSITION") return ::Ifc4::IfcRecurrenceTypeEnum::IfcRecurrenceType_YEARLY_BY_POSITION;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcReflectanceMethodEnum::ToString(IfcReflectanceMethodEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BLINN", "FLAT", "GLASS", "MATT", "METAL", "MIRROR", "PHONG", "PLASTIC", "STRAUSS", "NOTDEFINED" };
    return names[v];
}

IfcReflectanceMethodEnum::IfcReflectanceMethodEnum IfcReflectanceMethodEnum::FromString(const std::string& s) {
    if (s == "BLINN") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_BLINN;
    if (s == "FLAT") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_FLAT;
    if (s == "GLASS") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_GLASS;
    if (s == "MATT") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_MATT;
    if (s == "METAL") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_METAL;
    if (s == "MIRROR") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_MIRROR;
    if (s == "PHONG") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_PHONG;
    if (s == "PLASTIC") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_PLASTIC;
    if (s == "STRAUSS") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_STRAUSS;
    if (s == "NOTDEFINED") return ::Ifc4::IfcReflectanceMethodEnum::IfcReflectanceMethod_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcReinforcingBarRoleEnum::ToString(IfcReinforcingBarRoleEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "MAIN", "SHEAR", "LIGATURE", "STUD", "PUNCHING", "EDGE", "RING", "ANCHORING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum IfcReinforcingBarRoleEnum::FromString(const std::string& s) {
    if (s == "MAIN") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_MAIN;
    if (s == "SHEAR") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_SHEAR;
    if (s == "LIGATURE") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_LIGATURE;
    if (s == "STUD") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_STUD;
    if (s == "PUNCHING") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_PUNCHING;
    if (s == "EDGE") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_EDGE;
    if (s == "RING") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_RING;
    if (s == "ANCHORING") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_ANCHORING;
    if (s == "USERDEFINED") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcReinforcingBarSurfaceEnum::ToString(IfcReinforcingBarSurfaceEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PLAIN", "TEXTURED" };
    return names[v];
}

IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum IfcReinforcingBarSurfaceEnum::FromString(const std::string& s) {
    if (s == "PLAIN") return ::Ifc4::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurface_PLAIN;
    if (s == "TEXTURED") return ::Ifc4::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurface_TEXTURED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcReinforcingBarTypeEnum::ToString(IfcReinforcingBarTypeEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ANCHORING", "EDGE", "LIGATURE", "MAIN", "PUNCHING", "RING", "SHEAR", "STUD", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum IfcReinforcingBarTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORING") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_ANCHORING;
    if (s == "EDGE") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_EDGE;
    if (s == "LIGATURE") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_LIGATURE;
    if (s == "MAIN") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_MAIN;
    if (s == "PUNCHING") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_PUNCHING;
    if (s == "RING") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_RING;
    if (s == "SHEAR") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_SHEAR;
    if (s == "STUD") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_STUD;
    if (s == "USERDEFINED") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcReinforcingMeshTypeEnum::ToString(IfcReinforcingMeshTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum IfcReinforcingMeshTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcRoleEnum::ToString(IfcRoleEnum v) {
    if ( v < 0 || v >= 23 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SUPPLIER", "MANUFACTURER", "CONTRACTOR", "SUBCONTRACTOR", "ARCHITECT", "STRUCTURALENGINEER", "COSTENGINEER", "CLIENT", "BUILDINGOWNER", "BUILDINGOPERATOR", "MECHANICALENGINEER", "ELECTRICALENGINEER", "PROJECTMANAGER", "FACILITIESMANAGER", "CIVILENGINEER", "COMMISSIONINGENGINEER", "ENGINEER", "OWNER", "CONSULTANT", "CONSTRUCTIONMANAGER", "FIELDCONSTRUCTIONMANAGER", "RESELLER", "USERDEFINED" };
    return names[v];
}

IfcRoleEnum::IfcRoleEnum IfcRoleEnum::FromString(const std::string& s) {
    if (s == "SUPPLIER") return ::Ifc4::IfcRoleEnum::IfcRole_SUPPLIER;
    if (s == "MANUFACTURER") return ::Ifc4::IfcRoleEnum::IfcRole_MANUFACTURER;
    if (s == "CONTRACTOR") return ::Ifc4::IfcRoleEnum::IfcRole_CONTRACTOR;
    if (s == "SUBCONTRACTOR") return ::Ifc4::IfcRoleEnum::IfcRole_SUBCONTRACTOR;
    if (s == "ARCHITECT") return ::Ifc4::IfcRoleEnum::IfcRole_ARCHITECT;
    if (s == "STRUCTURALENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_STRUCTURALENGINEER;
    if (s == "COSTENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_COSTENGINEER;
    if (s == "CLIENT") return ::Ifc4::IfcRoleEnum::IfcRole_CLIENT;
    if (s == "BUILDINGOWNER") return ::Ifc4::IfcRoleEnum::IfcRole_BUILDINGOWNER;
    if (s == "BUILDINGOPERATOR") return ::Ifc4::IfcRoleEnum::IfcRole_BUILDINGOPERATOR;
    if (s == "MECHANICALENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_MECHANICALENGINEER;
    if (s == "ELECTRICALENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_ELECTRICALENGINEER;
    if (s == "PROJECTMANAGER") return ::Ifc4::IfcRoleEnum::IfcRole_PROJECTMANAGER;
    if (s == "FACILITIESMANAGER") return ::Ifc4::IfcRoleEnum::IfcRole_FACILITIESMANAGER;
    if (s == "CIVILENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_CIVILENGINEER;
    if (s == "COMMISSIONINGENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_COMMISSIONINGENGINEER;
    if (s == "ENGINEER") return ::Ifc4::IfcRoleEnum::IfcRole_ENGINEER;
    if (s == "OWNER") return ::Ifc4::IfcRoleEnum::IfcRole_OWNER;
    if (s == "CONSULTANT") return ::Ifc4::IfcRoleEnum::IfcRole_CONSULTANT;
    if (s == "CONSTRUCTIONMANAGER") return ::Ifc4::IfcRoleEnum::IfcRole_CONSTRUCTIONMANAGER;
    if (s == "FIELDCONSTRUCTIONMANAGER") return ::Ifc4::IfcRoleEnum::IfcRole_FIELDCONSTRUCTIONMANAGER;
    if (s == "RESELLER") return ::Ifc4::IfcRoleEnum::IfcRole_RESELLER;
    if (s == "USERDEFINED") return ::Ifc4::IfcRoleEnum::IfcRole_USERDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcRoofTypeEnum::ToString(IfcRoofTypeEnum v) {
    if ( v < 0 || v >= 15 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FLAT_ROOF", "SHED_ROOF", "GABLE_ROOF", "HIP_ROOF", "HIPPED_GABLE_ROOF", "GAMBREL_ROOF", "MANSARD_ROOF", "BARREL_ROOF", "RAINBOW_ROOF", "BUTTERFLY_ROOF", "PAVILION_ROOF", "DOME_ROOF", "FREEFORM", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcRoofTypeEnum::IfcRoofTypeEnum IfcRoofTypeEnum::FromString(const std::string& s) {
    if (s == "FLAT_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_FLAT_ROOF;
    if (s == "SHED_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_SHED_ROOF;
    if (s == "GABLE_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_GABLE_ROOF;
    if (s == "HIP_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_HIP_ROOF;
    if (s == "HIPPED_GABLE_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_HIPPED_GABLE_ROOF;
    if (s == "GAMBREL_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_GAMBREL_ROOF;
    if (s == "MANSARD_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_MANSARD_ROOF;
    if (s == "BARREL_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_BARREL_ROOF;
    if (s == "RAINBOW_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_RAINBOW_ROOF;
    if (s == "BUTTERFLY_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_BUTTERFLY_ROOF;
    if (s == "PAVILION_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_PAVILION_ROOF;
    if (s == "DOME_ROOF") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_DOME_ROOF;
    if (s == "FREEFORM") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_FREEFORM;
    if (s == "USERDEFINED") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcRoofTypeEnum::IfcRoofType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSIPrefix::ToString(IfcSIPrefix v) {
    if ( v < 0 || v >= 16 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "EXA", "PETA", "TERA", "GIGA", "MEGA", "KILO", "HECTO", "DECA", "DECI", "CENTI", "MILLI", "MICRO", "NANO", "PICO", "FEMTO", "ATTO" };
    return names[v];
}

IfcSIPrefix::IfcSIPrefix IfcSIPrefix::FromString(const std::string& s) {
    if (s == "EXA") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_EXA;
    if (s == "PETA") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_PETA;
    if (s == "TERA") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_TERA;
    if (s == "GIGA") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_GIGA;
    if (s == "MEGA") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_MEGA;
    if (s == "KILO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_KILO;
    if (s == "HECTO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_HECTO;
    if (s == "DECA") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_DECA;
    if (s == "DECI") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_DECI;
    if (s == "CENTI") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_CENTI;
    if (s == "MILLI") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_MILLI;
    if (s == "MICRO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_MICRO;
    if (s == "NANO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_NANO;
    if (s == "PICO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_PICO;
    if (s == "FEMTO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_FEMTO;
    if (s == "ATTO") return ::Ifc4::IfcSIPrefix::IfcSIPrefix_ATTO;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSIUnitName::ToString(IfcSIUnitName v) {
    if ( v < 0 || v >= 30 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AMPERE", "BECQUEREL", "CANDELA", "COULOMB", "CUBIC_METRE", "DEGREE_CELSIUS", "FARAD", "GRAM", "GRAY", "HENRY", "HERTZ", "JOULE", "KELVIN", "LUMEN", "LUX", "METRE", "MOLE", "NEWTON", "OHM", "PASCAL", "RADIAN", "SECOND", "SIEMENS", "SIEVERT", "SQUARE_METRE", "STERADIAN", "TESLA", "VOLT", "WATT", "WEBER" };
    return names[v];
}

IfcSIUnitName::IfcSIUnitName IfcSIUnitName::FromString(const std::string& s) {
    if (s == "AMPERE") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_AMPERE;
    if (s == "BECQUEREL") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_BECQUEREL;
    if (s == "CANDELA") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_CANDELA;
    if (s == "COULOMB") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_COULOMB;
    if (s == "CUBIC_METRE") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_CUBIC_METRE;
    if (s == "DEGREE_CELSIUS") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_DEGREE_CELSIUS;
    if (s == "FARAD") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_FARAD;
    if (s == "GRAM") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_GRAM;
    if (s == "GRAY") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_GRAY;
    if (s == "HENRY") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_HENRY;
    if (s == "HERTZ") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_HERTZ;
    if (s == "JOULE") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_JOULE;
    if (s == "KELVIN") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_KELVIN;
    if (s == "LUMEN") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_LUMEN;
    if (s == "LUX") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_LUX;
    if (s == "METRE") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_METRE;
    if (s == "MOLE") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_MOLE;
    if (s == "NEWTON") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_NEWTON;
    if (s == "OHM") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_OHM;
    if (s == "PASCAL") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_PASCAL;
    if (s == "RADIAN") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_RADIAN;
    if (s == "SECOND") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_SECOND;
    if (s == "SIEMENS") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_SIEMENS;
    if (s == "SIEVERT") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_SIEVERT;
    if (s == "SQUARE_METRE") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_SQUARE_METRE;
    if (s == "STERADIAN") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_STERADIAN;
    if (s == "TESLA") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_TESLA;
    if (s == "VOLT") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_VOLT;
    if (s == "WATT") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_WATT;
    if (s == "WEBER") return ::Ifc4::IfcSIUnitName::IfcSIUnitName_WEBER;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSanitaryTerminalTypeEnum::ToString(IfcSanitaryTerminalTypeEnum v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BATH", "BIDET", "CISTERN", "SHOWER", "SINK", "SANITARYFOUNTAIN", "TOILETPAN", "URINAL", "WASHHANDBASIN", "WCSEAT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum IfcSanitaryTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "BATH") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_BATH;
    if (s == "BIDET") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_BIDET;
    if (s == "CISTERN") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_CISTERN;
    if (s == "SHOWER") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_SHOWER;
    if (s == "SINK") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_SINK;
    if (s == "SANITARYFOUNTAIN") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_SANITARYFOUNTAIN;
    if (s == "TOILETPAN") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_TOILETPAN;
    if (s == "URINAL") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_URINAL;
    if (s == "WASHHANDBASIN") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_WASHHANDBASIN;
    if (s == "WCSEAT") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_WCSEAT;
    if (s == "USERDEFINED") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSectionTypeEnum::ToString(IfcSectionTypeEnum v) {
    if ( v < 0 || v >= 2 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "UNIFORM", "TAPERED" };
    return names[v];
}

IfcSectionTypeEnum::IfcSectionTypeEnum IfcSectionTypeEnum::FromString(const std::string& s) {
    if (s == "UNIFORM") return ::Ifc4::IfcSectionTypeEnum::IfcSectionType_UNIFORM;
    if (s == "TAPERED") return ::Ifc4::IfcSectionTypeEnum::IfcSectionType_TAPERED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSensorTypeEnum::ToString(IfcSensorTypeEnum v) {
    if ( v < 0 || v >= 26 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COSENSOR", "CO2SENSOR", "CONDUCTANCESENSOR", "CONTACTSENSOR", "FIRESENSOR", "FLOWSENSOR", "FROSTSENSOR", "GASSENSOR", "HEATSENSOR", "HUMIDITYSENSOR", "IDENTIFIERSENSOR", "IONCONCENTRATIONSENSOR", "LEVELSENSOR", "LIGHTSENSOR", "MOISTURESENSOR", "MOVEMENTSENSOR", "PHSENSOR", "PRESSURESENSOR", "RADIATIONSENSOR", "RADIOACTIVITYSENSOR", "SMOKESENSOR", "SOUNDSENSOR", "TEMPERATURESENSOR", "WINDSENSOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSensorTypeEnum::IfcSensorTypeEnum IfcSensorTypeEnum::FromString(const std::string& s) {
    if (s == "COSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_COSENSOR;
    if (s == "CO2SENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_CO2SENSOR;
    if (s == "CONDUCTANCESENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_CONDUCTANCESENSOR;
    if (s == "CONTACTSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_CONTACTSENSOR;
    if (s == "FIRESENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_FIRESENSOR;
    if (s == "FLOWSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_FLOWSENSOR;
    if (s == "FROSTSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_FROSTSENSOR;
    if (s == "GASSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_GASSENSOR;
    if (s == "HEATSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_HEATSENSOR;
    if (s == "HUMIDITYSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_HUMIDITYSENSOR;
    if (s == "IDENTIFIERSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_IDENTIFIERSENSOR;
    if (s == "IONCONCENTRATIONSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_IONCONCENTRATIONSENSOR;
    if (s == "LEVELSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_LEVELSENSOR;
    if (s == "LIGHTSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_LIGHTSENSOR;
    if (s == "MOISTURESENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_MOISTURESENSOR;
    if (s == "MOVEMENTSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_MOVEMENTSENSOR;
    if (s == "PHSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_PHSENSOR;
    if (s == "PRESSURESENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_PRESSURESENSOR;
    if (s == "RADIATIONSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_RADIATIONSENSOR;
    if (s == "RADIOACTIVITYSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_RADIOACTIVITYSENSOR;
    if (s == "SMOKESENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_SMOKESENSOR;
    if (s == "SOUNDSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_SOUNDSENSOR;
    if (s == "TEMPERATURESENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_TEMPERATURESENSOR;
    if (s == "WINDSENSOR") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_WINDSENSOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSensorTypeEnum::IfcSensorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSequenceEnum::ToString(IfcSequenceEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "START_START", "START_FINISH", "FINISH_START", "FINISH_FINISH", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSequenceEnum::IfcSequenceEnum IfcSequenceEnum::FromString(const std::string& s) {
    if (s == "START_START") return ::Ifc4::IfcSequenceEnum::IfcSequence_START_START;
    if (s == "START_FINISH") return ::Ifc4::IfcSequenceEnum::IfcSequence_START_FINISH;
    if (s == "FINISH_START") return ::Ifc4::IfcSequenceEnum::IfcSequence_FINISH_START;
    if (s == "FINISH_FINISH") return ::Ifc4::IfcSequenceEnum::IfcSequence_FINISH_FINISH;
    if (s == "USERDEFINED") return ::Ifc4::IfcSequenceEnum::IfcSequence_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSequenceEnum::IfcSequence_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcShadingDeviceTypeEnum::ToString(IfcShadingDeviceTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "JALOUSIE", "SHUTTER", "AWNING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum IfcShadingDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "JALOUSIE") return ::Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_JALOUSIE;
    if (s == "SHUTTER") return ::Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_SHUTTER;
    if (s == "AWNING") return ::Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_AWNING;
    if (s == "USERDEFINED") return ::Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSimplePropertyTemplateTypeEnum::ToString(IfcSimplePropertyTemplateTypeEnum v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "P_SINGLEVALUE", "P_ENUMERATEDVALUE", "P_BOUNDEDVALUE", "P_LISTVALUE", "P_TABLEVALUE", "P_REFERENCEVALUE", "Q_LENGTH", "Q_AREA", "Q_VOLUME", "Q_COUNT", "Q_WEIGHT", "Q_TIME" };
    return names[v];
}

IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum IfcSimplePropertyTemplateTypeEnum::FromString(const std::string& s) {
    if (s == "P_SINGLEVALUE") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_SINGLEVALUE;
    if (s == "P_ENUMERATEDVALUE") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_ENUMERATEDVALUE;
    if (s == "P_BOUNDEDVALUE") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_BOUNDEDVALUE;
    if (s == "P_LISTVALUE") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_LISTVALUE;
    if (s == "P_TABLEVALUE") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_TABLEVALUE;
    if (s == "P_REFERENCEVALUE") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_REFERENCEVALUE;
    if (s == "Q_LENGTH") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_LENGTH;
    if (s == "Q_AREA") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_AREA;
    if (s == "Q_VOLUME") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_VOLUME;
    if (s == "Q_COUNT") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_COUNT;
    if (s == "Q_WEIGHT") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_WEIGHT;
    if (s == "Q_TIME") return ::Ifc4::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_TIME;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSlabTypeEnum::ToString(IfcSlabTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FLOOR", "ROOF", "LANDING", "BASESLAB", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSlabTypeEnum::IfcSlabTypeEnum IfcSlabTypeEnum::FromString(const std::string& s) {
    if (s == "FLOOR") return ::Ifc4::IfcSlabTypeEnum::IfcSlabType_FLOOR;
    if (s == "ROOF") return ::Ifc4::IfcSlabTypeEnum::IfcSlabType_ROOF;
    if (s == "LANDING") return ::Ifc4::IfcSlabTypeEnum::IfcSlabType_LANDING;
    if (s == "BASESLAB") return ::Ifc4::IfcSlabTypeEnum::IfcSlabType_BASESLAB;
    if (s == "USERDEFINED") return ::Ifc4::IfcSlabTypeEnum::IfcSlabType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSlabTypeEnum::IfcSlabType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSolarDeviceTypeEnum::ToString(IfcSolarDeviceTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SOLARCOLLECTOR", "SOLARPANEL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum IfcSolarDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "SOLARCOLLECTOR") return ::Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_SOLARCOLLECTOR;
    if (s == "SOLARPANEL") return ::Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_SOLARPANEL;
    if (s == "USERDEFINED") return ::Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSpaceHeaterTypeEnum::ToString(IfcSpaceHeaterTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONVECTOR", "RADIATOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum IfcSpaceHeaterTypeEnum::FromString(const std::string& s) {
    if (s == "CONVECTOR") return ::Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_CONVECTOR;
    if (s == "RADIATOR") return ::Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_RADIATOR;
    if (s == "USERDEFINED") return ::Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSpaceTypeEnum::ToString(IfcSpaceTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SPACE", "PARKING", "GFA", "INTERNAL", "EXTERNAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSpaceTypeEnum::IfcSpaceTypeEnum IfcSpaceTypeEnum::FromString(const std::string& s) {
    if (s == "SPACE") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_SPACE;
    if (s == "PARKING") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_PARKING;
    if (s == "GFA") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_GFA;
    if (s == "INTERNAL") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_INTERNAL;
    if (s == "EXTERNAL") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_EXTERNAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSpaceTypeEnum::IfcSpaceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSpatialZoneTypeEnum::ToString(IfcSpatialZoneTypeEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONSTRUCTION", "FIRESAFETY", "LIGHTING", "OCCUPANCY", "SECURITY", "THERMAL", "TRANSPORT", "VENTILATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum IfcSpatialZoneTypeEnum::FromString(const std::string& s) {
    if (s == "CONSTRUCTION") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_CONSTRUCTION;
    if (s == "FIRESAFETY") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_FIRESAFETY;
    if (s == "LIGHTING") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_LIGHTING;
    if (s == "OCCUPANCY") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_OCCUPANCY;
    if (s == "SECURITY") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_SECURITY;
    if (s == "THERMAL") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_THERMAL;
    if (s == "TRANSPORT") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_TRANSPORT;
    if (s == "VENTILATION") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_VENTILATION;
    if (s == "USERDEFINED") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStackTerminalTypeEnum::ToString(IfcStackTerminalTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BIRDCAGE", "COWL", "RAINWATERHOPPER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum IfcStackTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "BIRDCAGE") return ::Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalType_BIRDCAGE;
    if (s == "COWL") return ::Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalType_COWL;
    if (s == "RAINWATERHOPPER") return ::Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalType_RAINWATERHOPPER;
    if (s == "USERDEFINED") return ::Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStackTerminalTypeEnum::IfcStackTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStairFlightTypeEnum::ToString(IfcStairFlightTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "STRAIGHT", "WINDER", "SPIRAL", "CURVED", "FREEFORM", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStairFlightTypeEnum::IfcStairFlightTypeEnum IfcStairFlightTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_STRAIGHT;
    if (s == "WINDER") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_WINDER;
    if (s == "SPIRAL") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_SPIRAL;
    if (s == "CURVED") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_CURVED;
    if (s == "FREEFORM") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_FREEFORM;
    if (s == "USERDEFINED") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStairFlightTypeEnum::IfcStairFlightType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStairTypeEnum::ToString(IfcStairTypeEnum v) {
    if ( v < 0 || v >= 16 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "STRAIGHT_RUN_STAIR", "TWO_STRAIGHT_RUN_STAIR", "QUARTER_WINDING_STAIR", "QUARTER_TURN_STAIR", "HALF_WINDING_STAIR", "HALF_TURN_STAIR", "TWO_QUARTER_WINDING_STAIR", "TWO_QUARTER_TURN_STAIR", "THREE_QUARTER_WINDING_STAIR", "THREE_QUARTER_TURN_STAIR", "SPIRAL_STAIR", "DOUBLE_RETURN_STAIR", "CURVED_RUN_STAIR", "TWO_CURVED_RUN_STAIR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStairTypeEnum::IfcStairTypeEnum IfcStairTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT_RUN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_STRAIGHT_RUN_STAIR;
    if (s == "TWO_STRAIGHT_RUN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_TWO_STRAIGHT_RUN_STAIR;
    if (s == "QUARTER_WINDING_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_QUARTER_WINDING_STAIR;
    if (s == "QUARTER_TURN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_QUARTER_TURN_STAIR;
    if (s == "HALF_WINDING_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_HALF_WINDING_STAIR;
    if (s == "HALF_TURN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_HALF_TURN_STAIR;
    if (s == "TWO_QUARTER_WINDING_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_TWO_QUARTER_WINDING_STAIR;
    if (s == "TWO_QUARTER_TURN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_TWO_QUARTER_TURN_STAIR;
    if (s == "THREE_QUARTER_WINDING_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_THREE_QUARTER_WINDING_STAIR;
    if (s == "THREE_QUARTER_TURN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_THREE_QUARTER_TURN_STAIR;
    if (s == "SPIRAL_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_SPIRAL_STAIR;
    if (s == "DOUBLE_RETURN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_DOUBLE_RETURN_STAIR;
    if (s == "CURVED_RUN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_CURVED_RUN_STAIR;
    if (s == "TWO_CURVED_RUN_STAIR") return ::Ifc4::IfcStairTypeEnum::IfcStairType_TWO_CURVED_RUN_STAIR;
    if (s == "USERDEFINED") return ::Ifc4::IfcStairTypeEnum::IfcStairType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStairTypeEnum::IfcStairType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStateEnum::ToString(IfcStateEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "READWRITE", "READONLY", "LOCKED", "READWRITELOCKED", "READONLYLOCKED" };
    return names[v];
}

IfcStateEnum::IfcStateEnum IfcStateEnum::FromString(const std::string& s) {
    if (s == "READWRITE") return ::Ifc4::IfcStateEnum::IfcState_READWRITE;
    if (s == "READONLY") return ::Ifc4::IfcStateEnum::IfcState_READONLY;
    if (s == "LOCKED") return ::Ifc4::IfcStateEnum::IfcState_LOCKED;
    if (s == "READWRITELOCKED") return ::Ifc4::IfcStateEnum::IfcState_READWRITELOCKED;
    if (s == "READONLYLOCKED") return ::Ifc4::IfcStateEnum::IfcState_READONLYLOCKED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStructuralCurveActivityTypeEnum::ToString(IfcStructuralCurveActivityTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONST", "LINEAR", "POLYGONAL", "EQUIDISTANT", "SINUS", "PARABOLA", "DISCRETE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum IfcStructuralCurveActivityTypeEnum::FromString(const std::string& s) {
    if (s == "CONST") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_CONST;
    if (s == "LINEAR") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_LINEAR;
    if (s == "POLYGONAL") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_POLYGONAL;
    if (s == "EQUIDISTANT") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_EQUIDISTANT;
    if (s == "SINUS") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_SINUS;
    if (s == "PARABOLA") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_PARABOLA;
    if (s == "DISCRETE") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_DISCRETE;
    if (s == "USERDEFINED") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStructuralCurveMemberTypeEnum::ToString(IfcStructuralCurveMemberTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "RIGID_JOINED_MEMBER", "PIN_JOINED_MEMBER", "CABLE", "TENSION_MEMBER", "COMPRESSION_MEMBER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum IfcStructuralCurveMemberTypeEnum::FromString(const std::string& s) {
    if (s == "RIGID_JOINED_MEMBER") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_RIGID_JOINED_MEMBER;
    if (s == "PIN_JOINED_MEMBER") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_PIN_JOINED_MEMBER;
    if (s == "CABLE") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_CABLE;
    if (s == "TENSION_MEMBER") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_TENSION_MEMBER;
    if (s == "COMPRESSION_MEMBER") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_COMPRESSION_MEMBER;
    if (s == "USERDEFINED") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStructuralSurfaceActivityTypeEnum::ToString(IfcStructuralSurfaceActivityTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONST", "BILINEAR", "DISCRETE", "ISOCONTOUR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum IfcStructuralSurfaceActivityTypeEnum::FromString(const std::string& s) {
    if (s == "CONST") return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_CONST;
    if (s == "BILINEAR") return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_BILINEAR;
    if (s == "DISCRETE") return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_DISCRETE;
    if (s == "ISOCONTOUR") return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_ISOCONTOUR;
    if (s == "USERDEFINED") return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcStructuralSurfaceMemberTypeEnum::ToString(IfcStructuralSurfaceMemberTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BENDING_ELEMENT", "MEMBRANE_ELEMENT", "SHELL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum IfcStructuralSurfaceMemberTypeEnum::FromString(const std::string& s) {
    if (s == "BENDING_ELEMENT") return ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_BENDING_ELEMENT;
    if (s == "MEMBRANE_ELEMENT") return ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_MEMBRANE_ELEMENT;
    if (s == "SHELL") return ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_SHELL;
    if (s == "USERDEFINED") return ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSubContractResourceTypeEnum::ToString(IfcSubContractResourceTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PURCHASE", "WORK", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum IfcSubContractResourceTypeEnum::FromString(const std::string& s) {
    if (s == "PURCHASE") return ::Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_PURCHASE;
    if (s == "WORK") return ::Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_WORK;
    if (s == "USERDEFINED") return ::Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSurfaceFeatureTypeEnum::ToString(IfcSurfaceFeatureTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "MARK", "TAG", "TREATMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum IfcSurfaceFeatureTypeEnum::FromString(const std::string& s) {
    if (s == "MARK") return ::Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_MARK;
    if (s == "TAG") return ::Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TAG;
    if (s == "TREATMENT") return ::Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TREATMENT;
    if (s == "USERDEFINED") return ::Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSurfaceSide::ToString(IfcSurfaceSide v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "POSITIVE", "NEGATIVE", "BOTH" };
    return names[v];
}

IfcSurfaceSide::IfcSurfaceSide IfcSurfaceSide::FromString(const std::string& s) {
    if (s == "POSITIVE") return ::Ifc4::IfcSurfaceSide::IfcSurfaceSide_POSITIVE;
    if (s == "NEGATIVE") return ::Ifc4::IfcSurfaceSide::IfcSurfaceSide_NEGATIVE;
    if (s == "BOTH") return ::Ifc4::IfcSurfaceSide::IfcSurfaceSide_BOTH;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSwitchingDeviceTypeEnum::ToString(IfcSwitchingDeviceTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONTACTOR", "DIMMERSWITCH", "EMERGENCYSTOP", "KEYPAD", "MOMENTARYSWITCH", "SELECTORSWITCH", "STARTER", "SWITCHDISCONNECTOR", "TOGGLESWITCH", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum IfcSwitchingDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CONTACTOR") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_CONTACTOR;
    if (s == "DIMMERSWITCH") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_DIMMERSWITCH;
    if (s == "EMERGENCYSTOP") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_EMERGENCYSTOP;
    if (s == "KEYPAD") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_KEYPAD;
    if (s == "MOMENTARYSWITCH") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_MOMENTARYSWITCH;
    if (s == "SELECTORSWITCH") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_SELECTORSWITCH;
    if (s == "STARTER") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_STARTER;
    if (s == "SWITCHDISCONNECTOR") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_SWITCHDISCONNECTOR;
    if (s == "TOGGLESWITCH") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_TOGGLESWITCH;
    if (s == "USERDEFINED") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcSystemFurnitureElementTypeEnum::ToString(IfcSystemFurnitureElementTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "PANEL", "WORKSURFACE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum IfcSystemFurnitureElementTypeEnum::FromString(const std::string& s) {
    if (s == "PANEL") return ::Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_PANEL;
    if (s == "WORKSURFACE") return ::Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_WORKSURFACE;
    if (s == "USERDEFINED") return ::Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTankTypeEnum::ToString(IfcTankTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BASIN", "BREAKPRESSURE", "EXPANSION", "FEEDANDEXPANSION", "PRESSUREVESSEL", "STORAGE", "VESSEL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTankTypeEnum::IfcTankTypeEnum IfcTankTypeEnum::FromString(const std::string& s) {
    if (s == "BASIN") return ::Ifc4::IfcTankTypeEnum::IfcTankType_BASIN;
    if (s == "BREAKPRESSURE") return ::Ifc4::IfcTankTypeEnum::IfcTankType_BREAKPRESSURE;
    if (s == "EXPANSION") return ::Ifc4::IfcTankTypeEnum::IfcTankType_EXPANSION;
    if (s == "FEEDANDEXPANSION") return ::Ifc4::IfcTankTypeEnum::IfcTankType_FEEDANDEXPANSION;
    if (s == "PRESSUREVESSEL") return ::Ifc4::IfcTankTypeEnum::IfcTankType_PRESSUREVESSEL;
    if (s == "STORAGE") return ::Ifc4::IfcTankTypeEnum::IfcTankType_STORAGE;
    if (s == "VESSEL") return ::Ifc4::IfcTankTypeEnum::IfcTankType_VESSEL;
    if (s == "USERDEFINED") return ::Ifc4::IfcTankTypeEnum::IfcTankType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTankTypeEnum::IfcTankType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTaskDurationEnum::ToString(IfcTaskDurationEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ELAPSEDTIME", "WORKTIME", "NOTDEFINED" };
    return names[v];
}

IfcTaskDurationEnum::IfcTaskDurationEnum IfcTaskDurationEnum::FromString(const std::string& s) {
    if (s == "ELAPSEDTIME") return ::Ifc4::IfcTaskDurationEnum::IfcTaskDuration_ELAPSEDTIME;
    if (s == "WORKTIME") return ::Ifc4::IfcTaskDurationEnum::IfcTaskDuration_WORKTIME;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTaskDurationEnum::IfcTaskDuration_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTaskTypeEnum::ToString(IfcTaskTypeEnum v) {
    if ( v < 0 || v >= 14 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ATTENDANCE", "CONSTRUCTION", "DEMOLITION", "DISMANTLE", "DISPOSAL", "INSTALLATION", "LOGISTIC", "MAINTENANCE", "MOVE", "OPERATION", "REMOVAL", "RENOVATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTaskTypeEnum::IfcTaskTypeEnum IfcTaskTypeEnum::FromString(const std::string& s) {
    if (s == "ATTENDANCE") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_ATTENDANCE;
    if (s == "CONSTRUCTION") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_CONSTRUCTION;
    if (s == "DEMOLITION") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_DEMOLITION;
    if (s == "DISMANTLE") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_DISMANTLE;
    if (s == "DISPOSAL") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_DISPOSAL;
    if (s == "INSTALLATION") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_INSTALLATION;
    if (s == "LOGISTIC") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_LOGISTIC;
    if (s == "MAINTENANCE") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_MAINTENANCE;
    if (s == "MOVE") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_MOVE;
    if (s == "OPERATION") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_OPERATION;
    if (s == "REMOVAL") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_REMOVAL;
    if (s == "RENOVATION") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_RENOVATION;
    if (s == "USERDEFINED") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTaskTypeEnum::IfcTaskType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTendonAnchorTypeEnum::ToString(IfcTendonAnchorTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COUPLER", "FIXED_END", "TENSIONING_END", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum IfcTendonAnchorTypeEnum::FromString(const std::string& s) {
    if (s == "COUPLER") return ::Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_COUPLER;
    if (s == "FIXED_END") return ::Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_FIXED_END;
    if (s == "TENSIONING_END") return ::Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_TENSIONING_END;
    if (s == "USERDEFINED") return ::Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTendonTypeEnum::ToString(IfcTendonTypeEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "BAR", "COATED", "STRAND", "WIRE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTendonTypeEnum::IfcTendonTypeEnum IfcTendonTypeEnum::FromString(const std::string& s) {
    if (s == "BAR") return ::Ifc4::IfcTendonTypeEnum::IfcTendonType_BAR;
    if (s == "COATED") return ::Ifc4::IfcTendonTypeEnum::IfcTendonType_COATED;
    if (s == "STRAND") return ::Ifc4::IfcTendonTypeEnum::IfcTendonType_STRAND;
    if (s == "WIRE") return ::Ifc4::IfcTendonTypeEnum::IfcTendonType_WIRE;
    if (s == "USERDEFINED") return ::Ifc4::IfcTendonTypeEnum::IfcTendonType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTendonTypeEnum::IfcTendonType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTextPath::ToString(IfcTextPath v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "LEFT", "RIGHT", "UP", "DOWN" };
    return names[v];
}

IfcTextPath::IfcTextPath IfcTextPath::FromString(const std::string& s) {
    if (s == "LEFT") return ::Ifc4::IfcTextPath::IfcTextPath_LEFT;
    if (s == "RIGHT") return ::Ifc4::IfcTextPath::IfcTextPath_RIGHT;
    if (s == "UP") return ::Ifc4::IfcTextPath::IfcTextPath_UP;
    if (s == "DOWN") return ::Ifc4::IfcTextPath::IfcTextPath_DOWN;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTimeSeriesDataTypeEnum::ToString(IfcTimeSeriesDataTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CONTINUOUS", "DISCRETE", "DISCRETEBINARY", "PIECEWISEBINARY", "PIECEWISECONSTANT", "PIECEWISECONTINUOUS", "NOTDEFINED" };
    return names[v];
}

IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum IfcTimeSeriesDataTypeEnum::FromString(const std::string& s) {
    if (s == "CONTINUOUS") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_CONTINUOUS;
    if (s == "DISCRETE") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_DISCRETE;
    if (s == "DISCRETEBINARY") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_DISCRETEBINARY;
    if (s == "PIECEWISEBINARY") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_PIECEWISEBINARY;
    if (s == "PIECEWISECONSTANT") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_PIECEWISECONSTANT;
    if (s == "PIECEWISECONTINUOUS") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_PIECEWISECONTINUOUS;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTransformerTypeEnum::ToString(IfcTransformerTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CURRENT", "FREQUENCY", "INVERTER", "RECTIFIER", "VOLTAGE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTransformerTypeEnum::IfcTransformerTypeEnum IfcTransformerTypeEnum::FromString(const std::string& s) {
    if (s == "CURRENT") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_CURRENT;
    if (s == "FREQUENCY") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_FREQUENCY;
    if (s == "INVERTER") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_INVERTER;
    if (s == "RECTIFIER") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_RECTIFIER;
    if (s == "VOLTAGE") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_VOLTAGE;
    if (s == "USERDEFINED") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTransformerTypeEnum::IfcTransformerType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTransitionCode::ToString(IfcTransitionCode v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "DISCONTINUOUS", "CONTINUOUS", "CONTSAMEGRADIENT", "CONTSAMEGRADIENTSAMECURVATURE" };
    return names[v];
}

IfcTransitionCode::IfcTransitionCode IfcTransitionCode::FromString(const std::string& s) {
    if (s == "DISCONTINUOUS") return ::Ifc4::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS;
    if (s == "CONTINUOUS") return ::Ifc4::IfcTransitionCode::IfcTransitionCode_CONTINUOUS;
    if (s == "CONTSAMEGRADIENT") return ::Ifc4::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT;
    if (s == "CONTSAMEGRADIENTSAMECURVATURE") return ::Ifc4::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENTSAMECURVATURE;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTransportElementTypeEnum::ToString(IfcTransportElementTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ELEVATOR", "ESCALATOR", "MOVINGWALKWAY", "CRANEWAY", "LIFTINGGEAR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTransportElementTypeEnum::IfcTransportElementTypeEnum IfcTransportElementTypeEnum::FromString(const std::string& s) {
    if (s == "ELEVATOR") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_ELEVATOR;
    if (s == "ESCALATOR") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_ESCALATOR;
    if (s == "MOVINGWALKWAY") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_MOVINGWALKWAY;
    if (s == "CRANEWAY") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_CRANEWAY;
    if (s == "LIFTINGGEAR") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_LIFTINGGEAR;
    if (s == "USERDEFINED") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTransportElementTypeEnum::IfcTransportElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTrimmingPreference::ToString(IfcTrimmingPreference v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CARTESIAN", "PARAMETER", "UNSPECIFIED" };
    return names[v];
}

IfcTrimmingPreference::IfcTrimmingPreference IfcTrimmingPreference::FromString(const std::string& s) {
    if (s == "CARTESIAN") return ::Ifc4::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN;
    if (s == "PARAMETER") return ::Ifc4::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER;
    if (s == "UNSPECIFIED") return ::Ifc4::IfcTrimmingPreference::IfcTrimmingPreference_UNSPECIFIED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcTubeBundleTypeEnum::ToString(IfcTubeBundleTypeEnum v) {
    if ( v < 0 || v >= 3 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FINNED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum IfcTubeBundleTypeEnum::FromString(const std::string& s) {
    if (s == "FINNED") return ::Ifc4::IfcTubeBundleTypeEnum::IfcTubeBundleType_FINNED;
    if (s == "USERDEFINED") return ::Ifc4::IfcTubeBundleTypeEnum::IfcTubeBundleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcTubeBundleTypeEnum::IfcTubeBundleType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcUnitEnum::ToString(IfcUnitEnum v) {
    if ( v < 0 || v >= 30 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ABSORBEDDOSEUNIT", "AMOUNTOFSUBSTANCEUNIT", "AREAUNIT", "DOSEEQUIVALENTUNIT", "ELECTRICCAPACITANCEUNIT", "ELECTRICCHARGEUNIT", "ELECTRICCONDUCTANCEUNIT", "ELECTRICCURRENTUNIT", "ELECTRICRESISTANCEUNIT", "ELECTRICVOLTAGEUNIT", "ENERGYUNIT", "FORCEUNIT", "FREQUENCYUNIT", "ILLUMINANCEUNIT", "INDUCTANCEUNIT", "LENGTHUNIT", "LUMINOUSFLUXUNIT", "LUMINOUSINTENSITYUNIT", "MAGNETICFLUXDENSITYUNIT", "MAGNETICFLUXUNIT", "MASSUNIT", "PLANEANGLEUNIT", "POWERUNIT", "PRESSUREUNIT", "RADIOACTIVITYUNIT", "SOLIDANGLEUNIT", "THERMODYNAMICTEMPERATUREUNIT", "TIMEUNIT", "VOLUMEUNIT", "USERDEFINED" };
    return names[v];
}

IfcUnitEnum::IfcUnitEnum IfcUnitEnum::FromString(const std::string& s) {
    if (s == "ABSORBEDDOSEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ABSORBEDDOSEUNIT;
    if (s == "AMOUNTOFSUBSTANCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_AMOUNTOFSUBSTANCEUNIT;
    if (s == "AREAUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_AREAUNIT;
    if (s == "DOSEEQUIVALENTUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_DOSEEQUIVALENTUNIT;
    if (s == "ELECTRICCAPACITANCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ELECTRICCAPACITANCEUNIT;
    if (s == "ELECTRICCHARGEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ELECTRICCHARGEUNIT;
    if (s == "ELECTRICCONDUCTANCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ELECTRICCONDUCTANCEUNIT;
    if (s == "ELECTRICCURRENTUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ELECTRICCURRENTUNIT;
    if (s == "ELECTRICRESISTANCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ELECTRICRESISTANCEUNIT;
    if (s == "ELECTRICVOLTAGEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ELECTRICVOLTAGEUNIT;
    if (s == "ENERGYUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ENERGYUNIT;
    if (s == "FORCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_FORCEUNIT;
    if (s == "FREQUENCYUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_FREQUENCYUNIT;
    if (s == "ILLUMINANCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_ILLUMINANCEUNIT;
    if (s == "INDUCTANCEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_INDUCTANCEUNIT;
    if (s == "LENGTHUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_LENGTHUNIT;
    if (s == "LUMINOUSFLUXUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_LUMINOUSFLUXUNIT;
    if (s == "LUMINOUSINTENSITYUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_LUMINOUSINTENSITYUNIT;
    if (s == "MAGNETICFLUXDENSITYUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_MAGNETICFLUXDENSITYUNIT;
    if (s == "MAGNETICFLUXUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_MAGNETICFLUXUNIT;
    if (s == "MASSUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_MASSUNIT;
    if (s == "PLANEANGLEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_PLANEANGLEUNIT;
    if (s == "POWERUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_POWERUNIT;
    if (s == "PRESSUREUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_PRESSUREUNIT;
    if (s == "RADIOACTIVITYUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_RADIOACTIVITYUNIT;
    if (s == "SOLIDANGLEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_SOLIDANGLEUNIT;
    if (s == "THERMODYNAMICTEMPERATUREUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_THERMODYNAMICTEMPERATUREUNIT;
    if (s == "TIMEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_TIMEUNIT;
    if (s == "VOLUMEUNIT") return ::Ifc4::IfcUnitEnum::IfcUnit_VOLUMEUNIT;
    if (s == "USERDEFINED") return ::Ifc4::IfcUnitEnum::IfcUnit_USERDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcUnitaryControlElementTypeEnum::ToString(IfcUnitaryControlElementTypeEnum v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ALARMPANEL", "CONTROLPANEL", "GASDETECTIONPANEL", "INDICATORPANEL", "MIMICPANEL", "HUMIDISTAT", "THERMOSTAT", "WEATHERSTATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum IfcUnitaryControlElementTypeEnum::FromString(const std::string& s) {
    if (s == "ALARMPANEL") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_ALARMPANEL;
    if (s == "CONTROLPANEL") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_CONTROLPANEL;
    if (s == "GASDETECTIONPANEL") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_GASDETECTIONPANEL;
    if (s == "INDICATORPANEL") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_INDICATORPANEL;
    if (s == "MIMICPANEL") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_MIMICPANEL;
    if (s == "HUMIDISTAT") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_HUMIDISTAT;
    if (s == "THERMOSTAT") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_THERMOSTAT;
    if (s == "WEATHERSTATION") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_WEATHERSTATION;
    if (s == "USERDEFINED") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcUnitaryEquipmentTypeEnum::ToString(IfcUnitaryEquipmentTypeEnum v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRHANDLER", "AIRCONDITIONINGUNIT", "DEHUMIDIFIER", "SPLITSYSTEM", "ROOFTOPUNIT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum IfcUnitaryEquipmentTypeEnum::FromString(const std::string& s) {
    if (s == "AIRHANDLER") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_AIRHANDLER;
    if (s == "AIRCONDITIONINGUNIT") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_AIRCONDITIONINGUNIT;
    if (s == "DEHUMIDIFIER") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_DEHUMIDIFIER;
    if (s == "SPLITSYSTEM") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_SPLITSYSTEM;
    if (s == "ROOFTOPUNIT") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_ROOFTOPUNIT;
    if (s == "USERDEFINED") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcValveTypeEnum::ToString(IfcValveTypeEnum v) {
    if ( v < 0 || v >= 23 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "AIRRELEASE", "ANTIVACUUM", "CHANGEOVER", "CHECK", "COMMISSIONING", "DIVERTING", "DRAWOFFCOCK", "DOUBLECHECK", "DOUBLEREGULATING", "FAUCET", "FLUSHING", "GASCOCK", "GASTAP", "ISOLATING", "MIXING", "PRESSUREREDUCING", "PRESSURERELIEF", "REGULATING", "SAFETYCUTOFF", "STEAMTRAP", "STOPCOCK", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcValveTypeEnum::IfcValveTypeEnum IfcValveTypeEnum::FromString(const std::string& s) {
    if (s == "AIRRELEASE") return ::Ifc4::IfcValveTypeEnum::IfcValveType_AIRRELEASE;
    if (s == "ANTIVACUUM") return ::Ifc4::IfcValveTypeEnum::IfcValveType_ANTIVACUUM;
    if (s == "CHANGEOVER") return ::Ifc4::IfcValveTypeEnum::IfcValveType_CHANGEOVER;
    if (s == "CHECK") return ::Ifc4::IfcValveTypeEnum::IfcValveType_CHECK;
    if (s == "COMMISSIONING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_COMMISSIONING;
    if (s == "DIVERTING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_DIVERTING;
    if (s == "DRAWOFFCOCK") return ::Ifc4::IfcValveTypeEnum::IfcValveType_DRAWOFFCOCK;
    if (s == "DOUBLECHECK") return ::Ifc4::IfcValveTypeEnum::IfcValveType_DOUBLECHECK;
    if (s == "DOUBLEREGULATING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_DOUBLEREGULATING;
    if (s == "FAUCET") return ::Ifc4::IfcValveTypeEnum::IfcValveType_FAUCET;
    if (s == "FLUSHING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_FLUSHING;
    if (s == "GASCOCK") return ::Ifc4::IfcValveTypeEnum::IfcValveType_GASCOCK;
    if (s == "GASTAP") return ::Ifc4::IfcValveTypeEnum::IfcValveType_GASTAP;
    if (s == "ISOLATING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_ISOLATING;
    if (s == "MIXING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_MIXING;
    if (s == "PRESSUREREDUCING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_PRESSUREREDUCING;
    if (s == "PRESSURERELIEF") return ::Ifc4::IfcValveTypeEnum::IfcValveType_PRESSURERELIEF;
    if (s == "REGULATING") return ::Ifc4::IfcValveTypeEnum::IfcValveType_REGULATING;
    if (s == "SAFETYCUTOFF") return ::Ifc4::IfcValveTypeEnum::IfcValveType_SAFETYCUTOFF;
    if (s == "STEAMTRAP") return ::Ifc4::IfcValveTypeEnum::IfcValveType_STEAMTRAP;
    if (s == "STOPCOCK") return ::Ifc4::IfcValveTypeEnum::IfcValveType_STOPCOCK;
    if (s == "USERDEFINED") return ::Ifc4::IfcValveTypeEnum::IfcValveType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcValveTypeEnum::IfcValveType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcVibrationIsolatorTypeEnum::ToString(IfcVibrationIsolatorTypeEnum v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "COMPRESSION", "SPRING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum IfcVibrationIsolatorTypeEnum::FromString(const std::string& s) {
    if (s == "COMPRESSION") return ::Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_COMPRESSION;
    if (s == "SPRING") return ::Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_SPRING;
    if (s == "USERDEFINED") return ::Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcVoidingFeatureTypeEnum::ToString(IfcVoidingFeatureTypeEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "CUTOUT", "NOTCH", "HOLE", "MITER", "CHAMFER", "EDGE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum IfcVoidingFeatureTypeEnum::FromString(const std::string& s) {
    if (s == "CUTOUT") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_CUTOUT;
    if (s == "NOTCH") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_NOTCH;
    if (s == "HOLE") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_HOLE;
    if (s == "MITER") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_MITER;
    if (s == "CHAMFER") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_CHAMFER;
    if (s == "EDGE") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_EDGE;
    if (s == "USERDEFINED") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWallTypeEnum::ToString(IfcWallTypeEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "MOVABLE", "PARAPET", "PARTITIONING", "PLUMBINGWALL", "SHEAR", "SOLIDWALL", "STANDARD", "POLYGONAL", "ELEMENTEDWALL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWallTypeEnum::IfcWallTypeEnum IfcWallTypeEnum::FromString(const std::string& s) {
    if (s == "MOVABLE") return ::Ifc4::IfcWallTypeEnum::IfcWallType_MOVABLE;
    if (s == "PARAPET") return ::Ifc4::IfcWallTypeEnum::IfcWallType_PARAPET;
    if (s == "PARTITIONING") return ::Ifc4::IfcWallTypeEnum::IfcWallType_PARTITIONING;
    if (s == "PLUMBINGWALL") return ::Ifc4::IfcWallTypeEnum::IfcWallType_PLUMBINGWALL;
    if (s == "SHEAR") return ::Ifc4::IfcWallTypeEnum::IfcWallType_SHEAR;
    if (s == "SOLIDWALL") return ::Ifc4::IfcWallTypeEnum::IfcWallType_SOLIDWALL;
    if (s == "STANDARD") return ::Ifc4::IfcWallTypeEnum::IfcWallType_STANDARD;
    if (s == "POLYGONAL") return ::Ifc4::IfcWallTypeEnum::IfcWallType_POLYGONAL;
    if (s == "ELEMENTEDWALL") return ::Ifc4::IfcWallTypeEnum::IfcWallType_ELEMENTEDWALL;
    if (s == "USERDEFINED") return ::Ifc4::IfcWallTypeEnum::IfcWallType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWallTypeEnum::IfcWallType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWasteTerminalTypeEnum::ToString(IfcWasteTerminalTypeEnum v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FLOORTRAP", "FLOORWASTE", "GULLYSUMP", "GULLYTRAP", "ROOFDRAIN", "WASTEDISPOSALUNIT", "WASTETRAP", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum IfcWasteTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "FLOORTRAP") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_FLOORTRAP;
    if (s == "FLOORWASTE") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_FLOORWASTE;
    if (s == "GULLYSUMP") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_GULLYSUMP;
    if (s == "GULLYTRAP") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_GULLYTRAP;
    if (s == "ROOFDRAIN") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_ROOFDRAIN;
    if (s == "WASTEDISPOSALUNIT") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_WASTEDISPOSALUNIT;
    if (s == "WASTETRAP") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_WASTETRAP;
    if (s == "USERDEFINED") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWindowPanelOperationEnum::ToString(IfcWindowPanelOperationEnum v) {
    if ( v < 0 || v >= 14 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SIDEHUNGRIGHTHAND", "SIDEHUNGLEFTHAND", "TILTANDTURNRIGHTHAND", "TILTANDTURNLEFTHAND", "TOPHUNG", "BOTTOMHUNG", "PIVOTHORIZONTAL", "PIVOTVERTICAL", "SLIDINGHORIZONTAL", "SLIDINGVERTICAL", "REMOVABLECASEMENT", "FIXEDCASEMENT", "OTHEROPERATION", "NOTDEFINED" };
    return names[v];
}

IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum IfcWindowPanelOperationEnum::FromString(const std::string& s) {
    if (s == "SIDEHUNGRIGHTHAND") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SIDEHUNGRIGHTHAND;
    if (s == "SIDEHUNGLEFTHAND") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SIDEHUNGLEFTHAND;
    if (s == "TILTANDTURNRIGHTHAND") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_TILTANDTURNRIGHTHAND;
    if (s == "TILTANDTURNLEFTHAND") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_TILTANDTURNLEFTHAND;
    if (s == "TOPHUNG") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_TOPHUNG;
    if (s == "BOTTOMHUNG") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_BOTTOMHUNG;
    if (s == "PIVOTHORIZONTAL") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_PIVOTHORIZONTAL;
    if (s == "PIVOTVERTICAL") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_PIVOTVERTICAL;
    if (s == "SLIDINGHORIZONTAL") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SLIDINGHORIZONTAL;
    if (s == "SLIDINGVERTICAL") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SLIDINGVERTICAL;
    if (s == "REMOVABLECASEMENT") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_REMOVABLECASEMENT;
    if (s == "FIXEDCASEMENT") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_FIXEDCASEMENT;
    if (s == "OTHEROPERATION") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_OTHEROPERATION;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWindowPanelPositionEnum::ToString(IfcWindowPanelPositionEnum v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "LEFT", "MIDDLE", "RIGHT", "BOTTOM", "TOP", "NOTDEFINED" };
    return names[v];
}

IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum IfcWindowPanelPositionEnum::FromString(const std::string& s) {
    if (s == "LEFT") return ::Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_LEFT;
    if (s == "MIDDLE") return ::Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_MIDDLE;
    if (s == "RIGHT") return ::Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_RIGHT;
    if (s == "BOTTOM") return ::Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_BOTTOM;
    if (s == "TOP") return ::Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_TOP;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWindowStyleConstructionEnum::ToString(IfcWindowStyleConstructionEnum v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ALUMINIUM", "HIGH_GRADE_STEEL", "STEEL", "WOOD", "ALUMINIUM_WOOD", "PLASTIC", "OTHER_CONSTRUCTION", "NOTDEFINED" };
    return names[v];
}

IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum IfcWindowStyleConstructionEnum::FromString(const std::string& s) {
    if (s == "ALUMINIUM") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_ALUMINIUM;
    if (s == "HIGH_GRADE_STEEL") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_HIGH_GRADE_STEEL;
    if (s == "STEEL") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_STEEL;
    if (s == "WOOD") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_WOOD;
    if (s == "ALUMINIUM_WOOD") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_ALUMINIUM_WOOD;
    if (s == "PLASTIC") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_PLASTIC;
    if (s == "OTHER_CONSTRUCTION") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_OTHER_CONSTRUCTION;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWindowStyleOperationEnum::ToString(IfcWindowStyleOperationEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SINGLE_PANEL", "DOUBLE_PANEL_VERTICAL", "DOUBLE_PANEL_HORIZONTAL", "TRIPLE_PANEL_VERTICAL", "TRIPLE_PANEL_BOTTOM", "TRIPLE_PANEL_TOP", "TRIPLE_PANEL_LEFT", "TRIPLE_PANEL_RIGHT", "TRIPLE_PANEL_HORIZONTAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum IfcWindowStyleOperationEnum::FromString(const std::string& s) {
    if (s == "SINGLE_PANEL") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_SINGLE_PANEL;
    if (s == "DOUBLE_PANEL_VERTICAL") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_DOUBLE_PANEL_VERTICAL;
    if (s == "DOUBLE_PANEL_HORIZONTAL") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_DOUBLE_PANEL_HORIZONTAL;
    if (s == "TRIPLE_PANEL_VERTICAL") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_VERTICAL;
    if (s == "TRIPLE_PANEL_BOTTOM") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_BOTTOM;
    if (s == "TRIPLE_PANEL_TOP") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_TOP;
    if (s == "TRIPLE_PANEL_LEFT") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_LEFT;
    if (s == "TRIPLE_PANEL_RIGHT") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_RIGHT;
    if (s == "TRIPLE_PANEL_HORIZONTAL") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_HORIZONTAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWindowTypeEnum::ToString(IfcWindowTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "WINDOW", "SKYLIGHT", "LIGHTDOME", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWindowTypeEnum::IfcWindowTypeEnum IfcWindowTypeEnum::FromString(const std::string& s) {
    if (s == "WINDOW") return ::Ifc4::IfcWindowTypeEnum::IfcWindowType_WINDOW;
    if (s == "SKYLIGHT") return ::Ifc4::IfcWindowTypeEnum::IfcWindowType_SKYLIGHT;
    if (s == "LIGHTDOME") return ::Ifc4::IfcWindowTypeEnum::IfcWindowType_LIGHTDOME;
    if (s == "USERDEFINED") return ::Ifc4::IfcWindowTypeEnum::IfcWindowType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWindowTypeEnum::IfcWindowType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWindowTypePartitioningEnum::ToString(IfcWindowTypePartitioningEnum v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "SINGLE_PANEL", "DOUBLE_PANEL_VERTICAL", "DOUBLE_PANEL_HORIZONTAL", "TRIPLE_PANEL_VERTICAL", "TRIPLE_PANEL_BOTTOM", "TRIPLE_PANEL_TOP", "TRIPLE_PANEL_LEFT", "TRIPLE_PANEL_RIGHT", "TRIPLE_PANEL_HORIZONTAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum IfcWindowTypePartitioningEnum::FromString(const std::string& s) {
    if (s == "SINGLE_PANEL") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_SINGLE_PANEL;
    if (s == "DOUBLE_PANEL_VERTICAL") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_DOUBLE_PANEL_VERTICAL;
    if (s == "DOUBLE_PANEL_HORIZONTAL") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_DOUBLE_PANEL_HORIZONTAL;
    if (s == "TRIPLE_PANEL_VERTICAL") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_VERTICAL;
    if (s == "TRIPLE_PANEL_BOTTOM") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_BOTTOM;
    if (s == "TRIPLE_PANEL_TOP") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_TOP;
    if (s == "TRIPLE_PANEL_LEFT") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_LEFT;
    if (s == "TRIPLE_PANEL_RIGHT") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_RIGHT;
    if (s == "TRIPLE_PANEL_HORIZONTAL") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_HORIZONTAL;
    if (s == "USERDEFINED") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWorkCalendarTypeEnum::ToString(IfcWorkCalendarTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "FIRSTSHIFT", "SECONDSHIFT", "THIRDSHIFT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum IfcWorkCalendarTypeEnum::FromString(const std::string& s) {
    if (s == "FIRSTSHIFT") return ::Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_FIRSTSHIFT;
    if (s == "SECONDSHIFT") return ::Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_SECONDSHIFT;
    if (s == "THIRDSHIFT") return ::Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_THIRDSHIFT;
    if (s == "USERDEFINED") return ::Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWorkPlanTypeEnum::ToString(IfcWorkPlanTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ACTUAL", "BASELINE", "PLANNED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum IfcWorkPlanTypeEnum::FromString(const std::string& s) {
    if (s == "ACTUAL") return ::Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanType_ACTUAL;
    if (s == "BASELINE") return ::Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanType_BASELINE;
    if (s == "PLANNED") return ::Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanType_PLANNED;
    if (s == "USERDEFINED") return ::Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWorkPlanTypeEnum::IfcWorkPlanType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}

const char* IfcWorkScheduleTypeEnum::ToString(IfcWorkScheduleTypeEnum v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find find keyword in schema");
    const char* names[] = { "ACTUAL", "BASELINE", "PLANNED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum IfcWorkScheduleTypeEnum::FromString(const std::string& s) {
    if (s == "ACTUAL") return ::Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_ACTUAL;
    if (s == "BASELINE") return ::Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_BASELINE;
    if (s == "PLANNED") return ::Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_PLANNED;
    if (s == "USERDEFINED") return ::Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_NOTDEFINED;
    throw IfcException("Unable to find find keyword in schema");
}


// Function implementations for IfcAbsorbedDoseMeasure
Type::Enum IfcAbsorbedDoseMeasure::Class() { return Type::IfcAbsorbedDoseMeasure; }
const IfcParse::type_declaration& IfcAbsorbedDoseMeasure::declaration() const { return *IfcAbsorbedDoseMeasure_type; }
IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcAbsorbedDoseMeasure); e->setArgument(0, v); data_ = e; }
IfcAbsorbedDoseMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAccelerationMeasure
Type::Enum IfcAccelerationMeasure::Class() { return Type::IfcAccelerationMeasure; }
const IfcParse::type_declaration& IfcAccelerationMeasure::declaration() const { return *IfcAccelerationMeasure_type; }
IfcAccelerationMeasure::IfcAccelerationMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcAccelerationMeasure::IfcAccelerationMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcAccelerationMeasure); e->setArgument(0, v); data_ = e; }
IfcAccelerationMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAmountOfSubstanceMeasure
Type::Enum IfcAmountOfSubstanceMeasure::Class() { return Type::IfcAmountOfSubstanceMeasure; }
const IfcParse::type_declaration& IfcAmountOfSubstanceMeasure::declaration() const { return *IfcAmountOfSubstanceMeasure_type; }
IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcAmountOfSubstanceMeasure); e->setArgument(0, v); data_ = e; }
IfcAmountOfSubstanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAngularVelocityMeasure
Type::Enum IfcAngularVelocityMeasure::Class() { return Type::IfcAngularVelocityMeasure; }
const IfcParse::type_declaration& IfcAngularVelocityMeasure::declaration() const { return *IfcAngularVelocityMeasure_type; }
IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcAngularVelocityMeasure); e->setArgument(0, v); data_ = e; }
IfcAngularVelocityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcArcIndex
Type::Enum IfcArcIndex::Class() { return Type::IfcArcIndex; }
const IfcParse::type_declaration& IfcArcIndex::declaration() const { return *IfcArcIndex_type; }
IfcArcIndex::IfcArcIndex(IfcAbstractEntity* e) { data_ = e; }
IfcArcIndex::IfcArcIndex(std::vector< int > /*[3:3]*/ v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcArcIndex); e->setArgument(0, v); data_ = e; }
IfcArcIndex::operator std::vector< int > /*[3:3]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcAreaDensityMeasure
Type::Enum IfcAreaDensityMeasure::Class() { return Type::IfcAreaDensityMeasure; }
const IfcParse::type_declaration& IfcAreaDensityMeasure::declaration() const { return *IfcAreaDensityMeasure_type; }
IfcAreaDensityMeasure::IfcAreaDensityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcAreaDensityMeasure::IfcAreaDensityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcAreaDensityMeasure); e->setArgument(0, v); data_ = e; }
IfcAreaDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAreaMeasure
Type::Enum IfcAreaMeasure::Class() { return Type::IfcAreaMeasure; }
const IfcParse::type_declaration& IfcAreaMeasure::declaration() const { return *IfcAreaMeasure_type; }
IfcAreaMeasure::IfcAreaMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcAreaMeasure::IfcAreaMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcAreaMeasure); e->setArgument(0, v); data_ = e; }
IfcAreaMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcBinary
Type::Enum IfcBinary::Class() { return Type::IfcBinary; }
const IfcParse::type_declaration& IfcBinary::declaration() const { return *IfcBinary_type; }
IfcBinary::IfcBinary(IfcAbstractEntity* e) { data_ = e; }
IfcBinary::IfcBinary(boost::dynamic_bitset<> v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcBinary); e->setArgument(0, v); data_ = e; }
IfcBinary::operator boost::dynamic_bitset<>() const { return *data_->getArgument(0); }

// Function implementations for IfcBoolean
Type::Enum IfcBoolean::Class() { return Type::IfcBoolean; }
const IfcParse::type_declaration& IfcBoolean::declaration() const { return *IfcBoolean_type; }
IfcBoolean::IfcBoolean(IfcAbstractEntity* e) { data_ = e; }
IfcBoolean::IfcBoolean(bool v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcBoolean); e->setArgument(0, v); data_ = e; }
IfcBoolean::operator bool() const { return *data_->getArgument(0); }

// Function implementations for IfcBoxAlignment
Type::Enum IfcBoxAlignment::Class() { return Type::IfcBoxAlignment; }
const IfcParse::type_declaration& IfcBoxAlignment::declaration() const { return *IfcBoxAlignment_type; }
IfcBoxAlignment::IfcBoxAlignment(IfcAbstractEntity* e) : IfcLabel((IfcAbstractEntity*)0) { data_ = e; }
IfcBoxAlignment::IfcBoxAlignment(std::string v) : IfcLabel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcBoxAlignment); e->setArgument(0, v); data_ = e; }
IfcBoxAlignment::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcCardinalPointReference
Type::Enum IfcCardinalPointReference::Class() { return Type::IfcCardinalPointReference; }
const IfcParse::type_declaration& IfcCardinalPointReference::declaration() const { return *IfcCardinalPointReference_type; }
IfcCardinalPointReference::IfcCardinalPointReference(IfcAbstractEntity* e) { data_ = e; }
IfcCardinalPointReference::IfcCardinalPointReference(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcCardinalPointReference); e->setArgument(0, v); data_ = e; }
IfcCardinalPointReference::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcComplexNumber
Type::Enum IfcComplexNumber::Class() { return Type::IfcComplexNumber; }
const IfcParse::type_declaration& IfcComplexNumber::declaration() const { return *IfcComplexNumber_type; }
IfcComplexNumber::IfcComplexNumber(IfcAbstractEntity* e) { data_ = e; }
IfcComplexNumber::IfcComplexNumber(std::vector< double > /*[1:2]*/ v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcComplexNumber); e->setArgument(0, v); data_ = e; }
IfcComplexNumber::operator std::vector< double > /*[1:2]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcCompoundPlaneAngleMeasure
Type::Enum IfcCompoundPlaneAngleMeasure::Class() { return Type::IfcCompoundPlaneAngleMeasure; }
const IfcParse::type_declaration& IfcCompoundPlaneAngleMeasure::declaration() const { return *IfcCompoundPlaneAngleMeasure_type; }
IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(std::vector< int > /*[3:4]*/ v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcCompoundPlaneAngleMeasure); e->setArgument(0, v); data_ = e; }
IfcCompoundPlaneAngleMeasure::operator std::vector< int > /*[3:4]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcContextDependentMeasure
Type::Enum IfcContextDependentMeasure::Class() { return Type::IfcContextDependentMeasure; }
const IfcParse::type_declaration& IfcContextDependentMeasure::declaration() const { return *IfcContextDependentMeasure_type; }
IfcContextDependentMeasure::IfcContextDependentMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcContextDependentMeasure::IfcContextDependentMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcContextDependentMeasure); e->setArgument(0, v); data_ = e; }
IfcContextDependentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcCountMeasure
Type::Enum IfcCountMeasure::Class() { return Type::IfcCountMeasure; }
const IfcParse::type_declaration& IfcCountMeasure::declaration() const { return *IfcCountMeasure_type; }
IfcCountMeasure::IfcCountMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcCountMeasure::IfcCountMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcCountMeasure); e->setArgument(0, v); data_ = e; }
IfcCountMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcCurvatureMeasure
Type::Enum IfcCurvatureMeasure::Class() { return Type::IfcCurvatureMeasure; }
const IfcParse::type_declaration& IfcCurvatureMeasure::declaration() const { return *IfcCurvatureMeasure_type; }
IfcCurvatureMeasure::IfcCurvatureMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcCurvatureMeasure::IfcCurvatureMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcCurvatureMeasure); e->setArgument(0, v); data_ = e; }
IfcCurvatureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcDate
Type::Enum IfcDate::Class() { return Type::IfcDate; }
const IfcParse::type_declaration& IfcDate::declaration() const { return *IfcDate_type; }
IfcDate::IfcDate(IfcAbstractEntity* e) { data_ = e; }
IfcDate::IfcDate(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDate); e->setArgument(0, v); data_ = e; }
IfcDate::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDateTime
Type::Enum IfcDateTime::Class() { return Type::IfcDateTime; }
const IfcParse::type_declaration& IfcDateTime::declaration() const { return *IfcDateTime_type; }
IfcDateTime::IfcDateTime(IfcAbstractEntity* e) { data_ = e; }
IfcDateTime::IfcDateTime(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDateTime); e->setArgument(0, v); data_ = e; }
IfcDateTime::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDayInMonthNumber
Type::Enum IfcDayInMonthNumber::Class() { return Type::IfcDayInMonthNumber; }
const IfcParse::type_declaration& IfcDayInMonthNumber::declaration() const { return *IfcDayInMonthNumber_type; }
IfcDayInMonthNumber::IfcDayInMonthNumber(IfcAbstractEntity* e) { data_ = e; }
IfcDayInMonthNumber::IfcDayInMonthNumber(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDayInMonthNumber); e->setArgument(0, v); data_ = e; }
IfcDayInMonthNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDayInWeekNumber
Type::Enum IfcDayInWeekNumber::Class() { return Type::IfcDayInWeekNumber; }
const IfcParse::type_declaration& IfcDayInWeekNumber::declaration() const { return *IfcDayInWeekNumber_type; }
IfcDayInWeekNumber::IfcDayInWeekNumber(IfcAbstractEntity* e) { data_ = e; }
IfcDayInWeekNumber::IfcDayInWeekNumber(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDayInWeekNumber); e->setArgument(0, v); data_ = e; }
IfcDayInWeekNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDescriptiveMeasure
Type::Enum IfcDescriptiveMeasure::Class() { return Type::IfcDescriptiveMeasure; }
const IfcParse::type_declaration& IfcDescriptiveMeasure::declaration() const { return *IfcDescriptiveMeasure_type; }
IfcDescriptiveMeasure::IfcDescriptiveMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcDescriptiveMeasure::IfcDescriptiveMeasure(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDescriptiveMeasure); e->setArgument(0, v); data_ = e; }
IfcDescriptiveMeasure::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDimensionCount
Type::Enum IfcDimensionCount::Class() { return Type::IfcDimensionCount; }
const IfcParse::type_declaration& IfcDimensionCount::declaration() const { return *IfcDimensionCount_type; }
IfcDimensionCount::IfcDimensionCount(IfcAbstractEntity* e) { data_ = e; }
IfcDimensionCount::IfcDimensionCount(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDimensionCount); e->setArgument(0, v); data_ = e; }
IfcDimensionCount::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDoseEquivalentMeasure
Type::Enum IfcDoseEquivalentMeasure::Class() { return Type::IfcDoseEquivalentMeasure; }
const IfcParse::type_declaration& IfcDoseEquivalentMeasure::declaration() const { return *IfcDoseEquivalentMeasure_type; }
IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDoseEquivalentMeasure); e->setArgument(0, v); data_ = e; }
IfcDoseEquivalentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcDuration
Type::Enum IfcDuration::Class() { return Type::IfcDuration; }
const IfcParse::type_declaration& IfcDuration::declaration() const { return *IfcDuration_type; }
IfcDuration::IfcDuration(IfcAbstractEntity* e) { data_ = e; }
IfcDuration::IfcDuration(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDuration); e->setArgument(0, v); data_ = e; }
IfcDuration::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDynamicViscosityMeasure
Type::Enum IfcDynamicViscosityMeasure::Class() { return Type::IfcDynamicViscosityMeasure; }
const IfcParse::type_declaration& IfcDynamicViscosityMeasure::declaration() const { return *IfcDynamicViscosityMeasure_type; }
IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcDynamicViscosityMeasure); e->setArgument(0, v); data_ = e; }
IfcDynamicViscosityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricCapacitanceMeasure
Type::Enum IfcElectricCapacitanceMeasure::Class() { return Type::IfcElectricCapacitanceMeasure; }
const IfcParse::type_declaration& IfcElectricCapacitanceMeasure::declaration() const { return *IfcElectricCapacitanceMeasure_type; }
IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcElectricCapacitanceMeasure); e->setArgument(0, v); data_ = e; }
IfcElectricCapacitanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricChargeMeasure
Type::Enum IfcElectricChargeMeasure::Class() { return Type::IfcElectricChargeMeasure; }
const IfcParse::type_declaration& IfcElectricChargeMeasure::declaration() const { return *IfcElectricChargeMeasure_type; }
IfcElectricChargeMeasure::IfcElectricChargeMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcElectricChargeMeasure::IfcElectricChargeMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcElectricChargeMeasure); e->setArgument(0, v); data_ = e; }
IfcElectricChargeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricConductanceMeasure
Type::Enum IfcElectricConductanceMeasure::Class() { return Type::IfcElectricConductanceMeasure; }
const IfcParse::type_declaration& IfcElectricConductanceMeasure::declaration() const { return *IfcElectricConductanceMeasure_type; }
IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcElectricConductanceMeasure); e->setArgument(0, v); data_ = e; }
IfcElectricConductanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricCurrentMeasure
Type::Enum IfcElectricCurrentMeasure::Class() { return Type::IfcElectricCurrentMeasure; }
const IfcParse::type_declaration& IfcElectricCurrentMeasure::declaration() const { return *IfcElectricCurrentMeasure_type; }
IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcElectricCurrentMeasure); e->setArgument(0, v); data_ = e; }
IfcElectricCurrentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricResistanceMeasure
Type::Enum IfcElectricResistanceMeasure::Class() { return Type::IfcElectricResistanceMeasure; }
const IfcParse::type_declaration& IfcElectricResistanceMeasure::declaration() const { return *IfcElectricResistanceMeasure_type; }
IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcElectricResistanceMeasure); e->setArgument(0, v); data_ = e; }
IfcElectricResistanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricVoltageMeasure
Type::Enum IfcElectricVoltageMeasure::Class() { return Type::IfcElectricVoltageMeasure; }
const IfcParse::type_declaration& IfcElectricVoltageMeasure::declaration() const { return *IfcElectricVoltageMeasure_type; }
IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcElectricVoltageMeasure); e->setArgument(0, v); data_ = e; }
IfcElectricVoltageMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcEnergyMeasure
Type::Enum IfcEnergyMeasure::Class() { return Type::IfcEnergyMeasure; }
const IfcParse::type_declaration& IfcEnergyMeasure::declaration() const { return *IfcEnergyMeasure_type; }
IfcEnergyMeasure::IfcEnergyMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcEnergyMeasure::IfcEnergyMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcEnergyMeasure); e->setArgument(0, v); data_ = e; }
IfcEnergyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcFontStyle
Type::Enum IfcFontStyle::Class() { return Type::IfcFontStyle; }
const IfcParse::type_declaration& IfcFontStyle::declaration() const { return *IfcFontStyle_type; }
IfcFontStyle::IfcFontStyle(IfcAbstractEntity* e) { data_ = e; }
IfcFontStyle::IfcFontStyle(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcFontStyle); e->setArgument(0, v); data_ = e; }
IfcFontStyle::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcFontVariant
Type::Enum IfcFontVariant::Class() { return Type::IfcFontVariant; }
const IfcParse::type_declaration& IfcFontVariant::declaration() const { return *IfcFontVariant_type; }
IfcFontVariant::IfcFontVariant(IfcAbstractEntity* e) { data_ = e; }
IfcFontVariant::IfcFontVariant(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcFontVariant); e->setArgument(0, v); data_ = e; }
IfcFontVariant::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcFontWeight
Type::Enum IfcFontWeight::Class() { return Type::IfcFontWeight; }
const IfcParse::type_declaration& IfcFontWeight::declaration() const { return *IfcFontWeight_type; }
IfcFontWeight::IfcFontWeight(IfcAbstractEntity* e) { data_ = e; }
IfcFontWeight::IfcFontWeight(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcFontWeight); e->setArgument(0, v); data_ = e; }
IfcFontWeight::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcForceMeasure
Type::Enum IfcForceMeasure::Class() { return Type::IfcForceMeasure; }
const IfcParse::type_declaration& IfcForceMeasure::declaration() const { return *IfcForceMeasure_type; }
IfcForceMeasure::IfcForceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcForceMeasure::IfcForceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcForceMeasure); e->setArgument(0, v); data_ = e; }
IfcForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcFrequencyMeasure
Type::Enum IfcFrequencyMeasure::Class() { return Type::IfcFrequencyMeasure; }
const IfcParse::type_declaration& IfcFrequencyMeasure::declaration() const { return *IfcFrequencyMeasure_type; }
IfcFrequencyMeasure::IfcFrequencyMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcFrequencyMeasure::IfcFrequencyMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcFrequencyMeasure); e->setArgument(0, v); data_ = e; }
IfcFrequencyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcGloballyUniqueId
Type::Enum IfcGloballyUniqueId::Class() { return Type::IfcGloballyUniqueId; }
const IfcParse::type_declaration& IfcGloballyUniqueId::declaration() const { return *IfcGloballyUniqueId_type; }
IfcGloballyUniqueId::IfcGloballyUniqueId(IfcAbstractEntity* e) { data_ = e; }
IfcGloballyUniqueId::IfcGloballyUniqueId(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcGloballyUniqueId); e->setArgument(0, v); data_ = e; }
IfcGloballyUniqueId::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcHeatFluxDensityMeasure
Type::Enum IfcHeatFluxDensityMeasure::Class() { return Type::IfcHeatFluxDensityMeasure; }
const IfcParse::type_declaration& IfcHeatFluxDensityMeasure::declaration() const { return *IfcHeatFluxDensityMeasure_type; }
IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcHeatFluxDensityMeasure); e->setArgument(0, v); data_ = e; }
IfcHeatFluxDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcHeatingValueMeasure
Type::Enum IfcHeatingValueMeasure::Class() { return Type::IfcHeatingValueMeasure; }
const IfcParse::type_declaration& IfcHeatingValueMeasure::declaration() const { return *IfcHeatingValueMeasure_type; }
IfcHeatingValueMeasure::IfcHeatingValueMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcHeatingValueMeasure::IfcHeatingValueMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcHeatingValueMeasure); e->setArgument(0, v); data_ = e; }
IfcHeatingValueMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcIdentifier
Type::Enum IfcIdentifier::Class() { return Type::IfcIdentifier; }
const IfcParse::type_declaration& IfcIdentifier::declaration() const { return *IfcIdentifier_type; }
IfcIdentifier::IfcIdentifier(IfcAbstractEntity* e) { data_ = e; }
IfcIdentifier::IfcIdentifier(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcIdentifier); e->setArgument(0, v); data_ = e; }
IfcIdentifier::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcIlluminanceMeasure
Type::Enum IfcIlluminanceMeasure::Class() { return Type::IfcIlluminanceMeasure; }
const IfcParse::type_declaration& IfcIlluminanceMeasure::declaration() const { return *IfcIlluminanceMeasure_type; }
IfcIlluminanceMeasure::IfcIlluminanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcIlluminanceMeasure::IfcIlluminanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcIlluminanceMeasure); e->setArgument(0, v); data_ = e; }
IfcIlluminanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcInductanceMeasure
Type::Enum IfcInductanceMeasure::Class() { return Type::IfcInductanceMeasure; }
const IfcParse::type_declaration& IfcInductanceMeasure::declaration() const { return *IfcInductanceMeasure_type; }
IfcInductanceMeasure::IfcInductanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcInductanceMeasure::IfcInductanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcInductanceMeasure); e->setArgument(0, v); data_ = e; }
IfcInductanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcInteger
Type::Enum IfcInteger::Class() { return Type::IfcInteger; }
const IfcParse::type_declaration& IfcInteger::declaration() const { return *IfcInteger_type; }
IfcInteger::IfcInteger(IfcAbstractEntity* e) { data_ = e; }
IfcInteger::IfcInteger(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcInteger); e->setArgument(0, v); data_ = e; }
IfcInteger::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcIntegerCountRateMeasure
Type::Enum IfcIntegerCountRateMeasure::Class() { return Type::IfcIntegerCountRateMeasure; }
const IfcParse::type_declaration& IfcIntegerCountRateMeasure::declaration() const { return *IfcIntegerCountRateMeasure_type; }
IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcIntegerCountRateMeasure); e->setArgument(0, v); data_ = e; }
IfcIntegerCountRateMeasure::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcIonConcentrationMeasure
Type::Enum IfcIonConcentrationMeasure::Class() { return Type::IfcIonConcentrationMeasure; }
const IfcParse::type_declaration& IfcIonConcentrationMeasure::declaration() const { return *IfcIonConcentrationMeasure_type; }
IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcIonConcentrationMeasure); e->setArgument(0, v); data_ = e; }
IfcIonConcentrationMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcIsothermalMoistureCapacityMeasure
Type::Enum IfcIsothermalMoistureCapacityMeasure::Class() { return Type::IfcIsothermalMoistureCapacityMeasure; }
const IfcParse::type_declaration& IfcIsothermalMoistureCapacityMeasure::declaration() const { return *IfcIsothermalMoistureCapacityMeasure_type; }
IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcIsothermalMoistureCapacityMeasure); e->setArgument(0, v); data_ = e; }
IfcIsothermalMoistureCapacityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcKinematicViscosityMeasure
Type::Enum IfcKinematicViscosityMeasure::Class() { return Type::IfcKinematicViscosityMeasure; }
const IfcParse::type_declaration& IfcKinematicViscosityMeasure::declaration() const { return *IfcKinematicViscosityMeasure_type; }
IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcKinematicViscosityMeasure); e->setArgument(0, v); data_ = e; }
IfcKinematicViscosityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLabel
Type::Enum IfcLabel::Class() { return Type::IfcLabel; }
const IfcParse::type_declaration& IfcLabel::declaration() const { return *IfcLabel_type; }
IfcLabel::IfcLabel(IfcAbstractEntity* e) { data_ = e; }
IfcLabel::IfcLabel(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLabel); e->setArgument(0, v); data_ = e; }
IfcLabel::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcLanguageId
Type::Enum IfcLanguageId::Class() { return Type::IfcLanguageId; }
const IfcParse::type_declaration& IfcLanguageId::declaration() const { return *IfcLanguageId_type; }
IfcLanguageId::IfcLanguageId(IfcAbstractEntity* e) : IfcIdentifier((IfcAbstractEntity*)0) { data_ = e; }
IfcLanguageId::IfcLanguageId(std::string v) : IfcIdentifier((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLanguageId); e->setArgument(0, v); data_ = e; }
IfcLanguageId::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcLengthMeasure
Type::Enum IfcLengthMeasure::Class() { return Type::IfcLengthMeasure; }
const IfcParse::type_declaration& IfcLengthMeasure::declaration() const { return *IfcLengthMeasure_type; }
IfcLengthMeasure::IfcLengthMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLengthMeasure::IfcLengthMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLengthMeasure); e->setArgument(0, v); data_ = e; }
IfcLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLineIndex
Type::Enum IfcLineIndex::Class() { return Type::IfcLineIndex; }
const IfcParse::type_declaration& IfcLineIndex::declaration() const { return *IfcLineIndex_type; }
IfcLineIndex::IfcLineIndex(IfcAbstractEntity* e) { data_ = e; }
IfcLineIndex::IfcLineIndex(std::vector< int > /*[2:?]*/ v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLineIndex); e->setArgument(0, v); data_ = e; }
IfcLineIndex::operator std::vector< int > /*[2:?]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearForceMeasure
Type::Enum IfcLinearForceMeasure::Class() { return Type::IfcLinearForceMeasure; }
const IfcParse::type_declaration& IfcLinearForceMeasure::declaration() const { return *IfcLinearForceMeasure_type; }
IfcLinearForceMeasure::IfcLinearForceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLinearForceMeasure::IfcLinearForceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLinearForceMeasure); e->setArgument(0, v); data_ = e; }
IfcLinearForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearMomentMeasure
Type::Enum IfcLinearMomentMeasure::Class() { return Type::IfcLinearMomentMeasure; }
const IfcParse::type_declaration& IfcLinearMomentMeasure::declaration() const { return *IfcLinearMomentMeasure_type; }
IfcLinearMomentMeasure::IfcLinearMomentMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLinearMomentMeasure::IfcLinearMomentMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLinearMomentMeasure); e->setArgument(0, v); data_ = e; }
IfcLinearMomentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearStiffnessMeasure
Type::Enum IfcLinearStiffnessMeasure::Class() { return Type::IfcLinearStiffnessMeasure; }
const IfcParse::type_declaration& IfcLinearStiffnessMeasure::declaration() const { return *IfcLinearStiffnessMeasure_type; }
IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLinearStiffnessMeasure); e->setArgument(0, v); data_ = e; }
IfcLinearStiffnessMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearVelocityMeasure
Type::Enum IfcLinearVelocityMeasure::Class() { return Type::IfcLinearVelocityMeasure; }
const IfcParse::type_declaration& IfcLinearVelocityMeasure::declaration() const { return *IfcLinearVelocityMeasure_type; }
IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLinearVelocityMeasure); e->setArgument(0, v); data_ = e; }
IfcLinearVelocityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLogical
Type::Enum IfcLogical::Class() { return Type::IfcLogical; }
const IfcParse::type_declaration& IfcLogical::declaration() const { return *IfcLogical_type; }
IfcLogical::IfcLogical(IfcAbstractEntity* e) { data_ = e; }
IfcLogical::IfcLogical(boost::logic::tribool v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLogical); e->setArgument(0, v); data_ = e; }
IfcLogical::operator boost::logic::tribool() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousFluxMeasure
Type::Enum IfcLuminousFluxMeasure::Class() { return Type::IfcLuminousFluxMeasure; }
const IfcParse::type_declaration& IfcLuminousFluxMeasure::declaration() const { return *IfcLuminousFluxMeasure_type; }
IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLuminousFluxMeasure); e->setArgument(0, v); data_ = e; }
IfcLuminousFluxMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousIntensityDistributionMeasure
Type::Enum IfcLuminousIntensityDistributionMeasure::Class() { return Type::IfcLuminousIntensityDistributionMeasure; }
const IfcParse::type_declaration& IfcLuminousIntensityDistributionMeasure::declaration() const { return *IfcLuminousIntensityDistributionMeasure_type; }
IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLuminousIntensityDistributionMeasure); e->setArgument(0, v); data_ = e; }
IfcLuminousIntensityDistributionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousIntensityMeasure
Type::Enum IfcLuminousIntensityMeasure::Class() { return Type::IfcLuminousIntensityMeasure; }
const IfcParse::type_declaration& IfcLuminousIntensityMeasure::declaration() const { return *IfcLuminousIntensityMeasure_type; }
IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcLuminousIntensityMeasure); e->setArgument(0, v); data_ = e; }
IfcLuminousIntensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMagneticFluxDensityMeasure
Type::Enum IfcMagneticFluxDensityMeasure::Class() { return Type::IfcMagneticFluxDensityMeasure; }
const IfcParse::type_declaration& IfcMagneticFluxDensityMeasure::declaration() const { return *IfcMagneticFluxDensityMeasure_type; }
IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMagneticFluxDensityMeasure); e->setArgument(0, v); data_ = e; }
IfcMagneticFluxDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMagneticFluxMeasure
Type::Enum IfcMagneticFluxMeasure::Class() { return Type::IfcMagneticFluxMeasure; }
const IfcParse::type_declaration& IfcMagneticFluxMeasure::declaration() const { return *IfcMagneticFluxMeasure_type; }
IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMagneticFluxMeasure); e->setArgument(0, v); data_ = e; }
IfcMagneticFluxMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassDensityMeasure
Type::Enum IfcMassDensityMeasure::Class() { return Type::IfcMassDensityMeasure; }
const IfcParse::type_declaration& IfcMassDensityMeasure::declaration() const { return *IfcMassDensityMeasure_type; }
IfcMassDensityMeasure::IfcMassDensityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMassDensityMeasure::IfcMassDensityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMassDensityMeasure); e->setArgument(0, v); data_ = e; }
IfcMassDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassFlowRateMeasure
Type::Enum IfcMassFlowRateMeasure::Class() { return Type::IfcMassFlowRateMeasure; }
const IfcParse::type_declaration& IfcMassFlowRateMeasure::declaration() const { return *IfcMassFlowRateMeasure_type; }
IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMassFlowRateMeasure); e->setArgument(0, v); data_ = e; }
IfcMassFlowRateMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassMeasure
Type::Enum IfcMassMeasure::Class() { return Type::IfcMassMeasure; }
const IfcParse::type_declaration& IfcMassMeasure::declaration() const { return *IfcMassMeasure_type; }
IfcMassMeasure::IfcMassMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMassMeasure::IfcMassMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMassMeasure); e->setArgument(0, v); data_ = e; }
IfcMassMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassPerLengthMeasure
Type::Enum IfcMassPerLengthMeasure::Class() { return Type::IfcMassPerLengthMeasure; }
const IfcParse::type_declaration& IfcMassPerLengthMeasure::declaration() const { return *IfcMassPerLengthMeasure_type; }
IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMassPerLengthMeasure); e->setArgument(0, v); data_ = e; }
IfcMassPerLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfElasticityMeasure
Type::Enum IfcModulusOfElasticityMeasure::Class() { return Type::IfcModulusOfElasticityMeasure; }
const IfcParse::type_declaration& IfcModulusOfElasticityMeasure::declaration() const { return *IfcModulusOfElasticityMeasure_type; }
IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcModulusOfElasticityMeasure); e->setArgument(0, v); data_ = e; }
IfcModulusOfElasticityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfLinearSubgradeReactionMeasure
Type::Enum IfcModulusOfLinearSubgradeReactionMeasure::Class() { return Type::IfcModulusOfLinearSubgradeReactionMeasure; }
const IfcParse::type_declaration& IfcModulusOfLinearSubgradeReactionMeasure::declaration() const { return *IfcModulusOfLinearSubgradeReactionMeasure_type; }
IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcModulusOfLinearSubgradeReactionMeasure); e->setArgument(0, v); data_ = e; }
IfcModulusOfLinearSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfRotationalSubgradeReactionMeasure
Type::Enum IfcModulusOfRotationalSubgradeReactionMeasure::Class() { return Type::IfcModulusOfRotationalSubgradeReactionMeasure; }
const IfcParse::type_declaration& IfcModulusOfRotationalSubgradeReactionMeasure::declaration() const { return *IfcModulusOfRotationalSubgradeReactionMeasure_type; }
IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcModulusOfRotationalSubgradeReactionMeasure); e->setArgument(0, v); data_ = e; }
IfcModulusOfRotationalSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfSubgradeReactionMeasure
Type::Enum IfcModulusOfSubgradeReactionMeasure::Class() { return Type::IfcModulusOfSubgradeReactionMeasure; }
const IfcParse::type_declaration& IfcModulusOfSubgradeReactionMeasure::declaration() const { return *IfcModulusOfSubgradeReactionMeasure_type; }
IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcModulusOfSubgradeReactionMeasure); e->setArgument(0, v); data_ = e; }
IfcModulusOfSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMoistureDiffusivityMeasure
Type::Enum IfcMoistureDiffusivityMeasure::Class() { return Type::IfcMoistureDiffusivityMeasure; }
const IfcParse::type_declaration& IfcMoistureDiffusivityMeasure::declaration() const { return *IfcMoistureDiffusivityMeasure_type; }
IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMoistureDiffusivityMeasure); e->setArgument(0, v); data_ = e; }
IfcMoistureDiffusivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMolecularWeightMeasure
Type::Enum IfcMolecularWeightMeasure::Class() { return Type::IfcMolecularWeightMeasure; }
const IfcParse::type_declaration& IfcMolecularWeightMeasure::declaration() const { return *IfcMolecularWeightMeasure_type; }
IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMolecularWeightMeasure); e->setArgument(0, v); data_ = e; }
IfcMolecularWeightMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMomentOfInertiaMeasure
Type::Enum IfcMomentOfInertiaMeasure::Class() { return Type::IfcMomentOfInertiaMeasure; }
const IfcParse::type_declaration& IfcMomentOfInertiaMeasure::declaration() const { return *IfcMomentOfInertiaMeasure_type; }
IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMomentOfInertiaMeasure); e->setArgument(0, v); data_ = e; }
IfcMomentOfInertiaMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMonetaryMeasure
Type::Enum IfcMonetaryMeasure::Class() { return Type::IfcMonetaryMeasure; }
const IfcParse::type_declaration& IfcMonetaryMeasure::declaration() const { return *IfcMonetaryMeasure_type; }
IfcMonetaryMeasure::IfcMonetaryMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcMonetaryMeasure::IfcMonetaryMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMonetaryMeasure); e->setArgument(0, v); data_ = e; }
IfcMonetaryMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMonthInYearNumber
Type::Enum IfcMonthInYearNumber::Class() { return Type::IfcMonthInYearNumber; }
const IfcParse::type_declaration& IfcMonthInYearNumber::declaration() const { return *IfcMonthInYearNumber_type; }
IfcMonthInYearNumber::IfcMonthInYearNumber(IfcAbstractEntity* e) { data_ = e; }
IfcMonthInYearNumber::IfcMonthInYearNumber(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcMonthInYearNumber); e->setArgument(0, v); data_ = e; }
IfcMonthInYearNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcNonNegativeLengthMeasure
Type::Enum IfcNonNegativeLengthMeasure::Class() { return Type::IfcNonNegativeLengthMeasure; }
const IfcParse::type_declaration& IfcNonNegativeLengthMeasure::declaration() const { return *IfcNonNegativeLengthMeasure_type; }
IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(IfcAbstractEntity* e) : IfcLengthMeasure((IfcAbstractEntity*)0) { data_ = e; }
IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(double v) : IfcLengthMeasure((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcNonNegativeLengthMeasure); e->setArgument(0, v); data_ = e; }
IfcNonNegativeLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcNormalisedRatioMeasure
Type::Enum IfcNormalisedRatioMeasure::Class() { return Type::IfcNormalisedRatioMeasure; }
const IfcParse::type_declaration& IfcNormalisedRatioMeasure::declaration() const { return *IfcNormalisedRatioMeasure_type; }
IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(IfcAbstractEntity* e) : IfcRatioMeasure((IfcAbstractEntity*)0) { data_ = e; }
IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(double v) : IfcRatioMeasure((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcNormalisedRatioMeasure); e->setArgument(0, v); data_ = e; }
IfcNormalisedRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcNumericMeasure
Type::Enum IfcNumericMeasure::Class() { return Type::IfcNumericMeasure; }
const IfcParse::type_declaration& IfcNumericMeasure::declaration() const { return *IfcNumericMeasure_type; }
IfcNumericMeasure::IfcNumericMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcNumericMeasure::IfcNumericMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcNumericMeasure); e->setArgument(0, v); data_ = e; }
IfcNumericMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPHMeasure
Type::Enum IfcPHMeasure::Class() { return Type::IfcPHMeasure; }
const IfcParse::type_declaration& IfcPHMeasure::declaration() const { return *IfcPHMeasure_type; }
IfcPHMeasure::IfcPHMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcPHMeasure::IfcPHMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPHMeasure); e->setArgument(0, v); data_ = e; }
IfcPHMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcParameterValue
Type::Enum IfcParameterValue::Class() { return Type::IfcParameterValue; }
const IfcParse::type_declaration& IfcParameterValue::declaration() const { return *IfcParameterValue_type; }
IfcParameterValue::IfcParameterValue(IfcAbstractEntity* e) { data_ = e; }
IfcParameterValue::IfcParameterValue(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcParameterValue); e->setArgument(0, v); data_ = e; }
IfcParameterValue::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPlanarForceMeasure
Type::Enum IfcPlanarForceMeasure::Class() { return Type::IfcPlanarForceMeasure; }
const IfcParse::type_declaration& IfcPlanarForceMeasure::declaration() const { return *IfcPlanarForceMeasure_type; }
IfcPlanarForceMeasure::IfcPlanarForceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcPlanarForceMeasure::IfcPlanarForceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPlanarForceMeasure); e->setArgument(0, v); data_ = e; }
IfcPlanarForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPlaneAngleMeasure
Type::Enum IfcPlaneAngleMeasure::Class() { return Type::IfcPlaneAngleMeasure; }
const IfcParse::type_declaration& IfcPlaneAngleMeasure::declaration() const { return *IfcPlaneAngleMeasure_type; }
IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPlaneAngleMeasure); e->setArgument(0, v); data_ = e; }
IfcPlaneAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveInteger
Type::Enum IfcPositiveInteger::Class() { return Type::IfcPositiveInteger; }
const IfcParse::type_declaration& IfcPositiveInteger::declaration() const { return *IfcPositiveInteger_type; }
IfcPositiveInteger::IfcPositiveInteger(IfcAbstractEntity* e) : IfcInteger((IfcAbstractEntity*)0) { data_ = e; }
IfcPositiveInteger::IfcPositiveInteger(int v) : IfcInteger((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPositiveInteger); e->setArgument(0, v); data_ = e; }
IfcPositiveInteger::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveLengthMeasure
Type::Enum IfcPositiveLengthMeasure::Class() { return Type::IfcPositiveLengthMeasure; }
const IfcParse::type_declaration& IfcPositiveLengthMeasure::declaration() const { return *IfcPositiveLengthMeasure_type; }
IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(IfcAbstractEntity* e) : IfcLengthMeasure((IfcAbstractEntity*)0) { data_ = e; }
IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(double v) : IfcLengthMeasure((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPositiveLengthMeasure); e->setArgument(0, v); data_ = e; }
IfcPositiveLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositivePlaneAngleMeasure
Type::Enum IfcPositivePlaneAngleMeasure::Class() { return Type::IfcPositivePlaneAngleMeasure; }
const IfcParse::type_declaration& IfcPositivePlaneAngleMeasure::declaration() const { return *IfcPositivePlaneAngleMeasure_type; }
IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(IfcAbstractEntity* e) : IfcPlaneAngleMeasure((IfcAbstractEntity*)0) { data_ = e; }
IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(double v) : IfcPlaneAngleMeasure((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPositivePlaneAngleMeasure); e->setArgument(0, v); data_ = e; }
IfcPositivePlaneAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveRatioMeasure
Type::Enum IfcPositiveRatioMeasure::Class() { return Type::IfcPositiveRatioMeasure; }
const IfcParse::type_declaration& IfcPositiveRatioMeasure::declaration() const { return *IfcPositiveRatioMeasure_type; }
IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(IfcAbstractEntity* e) : IfcRatioMeasure((IfcAbstractEntity*)0) { data_ = e; }
IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(double v) : IfcRatioMeasure((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPositiveRatioMeasure); e->setArgument(0, v); data_ = e; }
IfcPositiveRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPowerMeasure
Type::Enum IfcPowerMeasure::Class() { return Type::IfcPowerMeasure; }
const IfcParse::type_declaration& IfcPowerMeasure::declaration() const { return *IfcPowerMeasure_type; }
IfcPowerMeasure::IfcPowerMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcPowerMeasure::IfcPowerMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPowerMeasure); e->setArgument(0, v); data_ = e; }
IfcPowerMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPresentableText
Type::Enum IfcPresentableText::Class() { return Type::IfcPresentableText; }
const IfcParse::type_declaration& IfcPresentableText::declaration() const { return *IfcPresentableText_type; }
IfcPresentableText::IfcPresentableText(IfcAbstractEntity* e) { data_ = e; }
IfcPresentableText::IfcPresentableText(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPresentableText); e->setArgument(0, v); data_ = e; }
IfcPresentableText::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcPressureMeasure
Type::Enum IfcPressureMeasure::Class() { return Type::IfcPressureMeasure; }
const IfcParse::type_declaration& IfcPressureMeasure::declaration() const { return *IfcPressureMeasure_type; }
IfcPressureMeasure::IfcPressureMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcPressureMeasure::IfcPressureMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPressureMeasure); e->setArgument(0, v); data_ = e; }
IfcPressureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPropertySetDefinitionSet
Type::Enum IfcPropertySetDefinitionSet::Class() { return Type::IfcPropertySetDefinitionSet; }
const IfcParse::type_declaration& IfcPropertySetDefinitionSet::declaration() const { return *IfcPropertySetDefinitionSet_type; }
IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(IfcAbstractEntity* e) { data_ = e; }
IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcPropertySetDefinitionSet); e->setArgument(0, v->generalize()); data_ = e; }
IfcPropertySetDefinitionSet::operator IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcPropertySetDefinition>(); }

// Function implementations for IfcRadioActivityMeasure
Type::Enum IfcRadioActivityMeasure::Class() { return Type::IfcRadioActivityMeasure; }
const IfcParse::type_declaration& IfcRadioActivityMeasure::declaration() const { return *IfcRadioActivityMeasure_type; }
IfcRadioActivityMeasure::IfcRadioActivityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcRadioActivityMeasure::IfcRadioActivityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcRadioActivityMeasure); e->setArgument(0, v); data_ = e; }
IfcRadioActivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRatioMeasure
Type::Enum IfcRatioMeasure::Class() { return Type::IfcRatioMeasure; }
const IfcParse::type_declaration& IfcRatioMeasure::declaration() const { return *IfcRatioMeasure_type; }
IfcRatioMeasure::IfcRatioMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcRatioMeasure::IfcRatioMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcRatioMeasure); e->setArgument(0, v); data_ = e; }
IfcRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcReal
Type::Enum IfcReal::Class() { return Type::IfcReal; }
const IfcParse::type_declaration& IfcReal::declaration() const { return *IfcReal_type; }
IfcReal::IfcReal(IfcAbstractEntity* e) { data_ = e; }
IfcReal::IfcReal(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcReal); e->setArgument(0, v); data_ = e; }
IfcReal::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalFrequencyMeasure
Type::Enum IfcRotationalFrequencyMeasure::Class() { return Type::IfcRotationalFrequencyMeasure; }
const IfcParse::type_declaration& IfcRotationalFrequencyMeasure::declaration() const { return *IfcRotationalFrequencyMeasure_type; }
IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcRotationalFrequencyMeasure); e->setArgument(0, v); data_ = e; }
IfcRotationalFrequencyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalMassMeasure
Type::Enum IfcRotationalMassMeasure::Class() { return Type::IfcRotationalMassMeasure; }
const IfcParse::type_declaration& IfcRotationalMassMeasure::declaration() const { return *IfcRotationalMassMeasure_type; }
IfcRotationalMassMeasure::IfcRotationalMassMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcRotationalMassMeasure::IfcRotationalMassMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcRotationalMassMeasure); e->setArgument(0, v); data_ = e; }
IfcRotationalMassMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalStiffnessMeasure
Type::Enum IfcRotationalStiffnessMeasure::Class() { return Type::IfcRotationalStiffnessMeasure; }
const IfcParse::type_declaration& IfcRotationalStiffnessMeasure::declaration() const { return *IfcRotationalStiffnessMeasure_type; }
IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcRotationalStiffnessMeasure); e->setArgument(0, v); data_ = e; }
IfcRotationalStiffnessMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSectionModulusMeasure
Type::Enum IfcSectionModulusMeasure::Class() { return Type::IfcSectionModulusMeasure; }
const IfcParse::type_declaration& IfcSectionModulusMeasure::declaration() const { return *IfcSectionModulusMeasure_type; }
IfcSectionModulusMeasure::IfcSectionModulusMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSectionModulusMeasure::IfcSectionModulusMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSectionModulusMeasure); e->setArgument(0, v); data_ = e; }
IfcSectionModulusMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSectionalAreaIntegralMeasure
Type::Enum IfcSectionalAreaIntegralMeasure::Class() { return Type::IfcSectionalAreaIntegralMeasure; }
const IfcParse::type_declaration& IfcSectionalAreaIntegralMeasure::declaration() const { return *IfcSectionalAreaIntegralMeasure_type; }
IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSectionalAreaIntegralMeasure); e->setArgument(0, v); data_ = e; }
IfcSectionalAreaIntegralMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcShearModulusMeasure
Type::Enum IfcShearModulusMeasure::Class() { return Type::IfcShearModulusMeasure; }
const IfcParse::type_declaration& IfcShearModulusMeasure::declaration() const { return *IfcShearModulusMeasure_type; }
IfcShearModulusMeasure::IfcShearModulusMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcShearModulusMeasure::IfcShearModulusMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcShearModulusMeasure); e->setArgument(0, v); data_ = e; }
IfcShearModulusMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSolidAngleMeasure
Type::Enum IfcSolidAngleMeasure::Class() { return Type::IfcSolidAngleMeasure; }
const IfcParse::type_declaration& IfcSolidAngleMeasure::declaration() const { return *IfcSolidAngleMeasure_type; }
IfcSolidAngleMeasure::IfcSolidAngleMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSolidAngleMeasure::IfcSolidAngleMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSolidAngleMeasure); e->setArgument(0, v); data_ = e; }
IfcSolidAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPowerLevelMeasure
Type::Enum IfcSoundPowerLevelMeasure::Class() { return Type::IfcSoundPowerLevelMeasure; }
const IfcParse::type_declaration& IfcSoundPowerLevelMeasure::declaration() const { return *IfcSoundPowerLevelMeasure_type; }
IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSoundPowerLevelMeasure); e->setArgument(0, v); data_ = e; }
IfcSoundPowerLevelMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPowerMeasure
Type::Enum IfcSoundPowerMeasure::Class() { return Type::IfcSoundPowerMeasure; }
const IfcParse::type_declaration& IfcSoundPowerMeasure::declaration() const { return *IfcSoundPowerMeasure_type; }
IfcSoundPowerMeasure::IfcSoundPowerMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSoundPowerMeasure::IfcSoundPowerMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSoundPowerMeasure); e->setArgument(0, v); data_ = e; }
IfcSoundPowerMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPressureLevelMeasure
Type::Enum IfcSoundPressureLevelMeasure::Class() { return Type::IfcSoundPressureLevelMeasure; }
const IfcParse::type_declaration& IfcSoundPressureLevelMeasure::declaration() const { return *IfcSoundPressureLevelMeasure_type; }
IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSoundPressureLevelMeasure); e->setArgument(0, v); data_ = e; }
IfcSoundPressureLevelMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPressureMeasure
Type::Enum IfcSoundPressureMeasure::Class() { return Type::IfcSoundPressureMeasure; }
const IfcParse::type_declaration& IfcSoundPressureMeasure::declaration() const { return *IfcSoundPressureMeasure_type; }
IfcSoundPressureMeasure::IfcSoundPressureMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSoundPressureMeasure::IfcSoundPressureMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSoundPressureMeasure); e->setArgument(0, v); data_ = e; }
IfcSoundPressureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecificHeatCapacityMeasure
Type::Enum IfcSpecificHeatCapacityMeasure::Class() { return Type::IfcSpecificHeatCapacityMeasure; }
const IfcParse::type_declaration& IfcSpecificHeatCapacityMeasure::declaration() const { return *IfcSpecificHeatCapacityMeasure_type; }
IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSpecificHeatCapacityMeasure); e->setArgument(0, v); data_ = e; }
IfcSpecificHeatCapacityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecularExponent
Type::Enum IfcSpecularExponent::Class() { return Type::IfcSpecularExponent; }
const IfcParse::type_declaration& IfcSpecularExponent::declaration() const { return *IfcSpecularExponent_type; }
IfcSpecularExponent::IfcSpecularExponent(IfcAbstractEntity* e) { data_ = e; }
IfcSpecularExponent::IfcSpecularExponent(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSpecularExponent); e->setArgument(0, v); data_ = e; }
IfcSpecularExponent::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecularRoughness
Type::Enum IfcSpecularRoughness::Class() { return Type::IfcSpecularRoughness; }
const IfcParse::type_declaration& IfcSpecularRoughness::declaration() const { return *IfcSpecularRoughness_type; }
IfcSpecularRoughness::IfcSpecularRoughness(IfcAbstractEntity* e) { data_ = e; }
IfcSpecularRoughness::IfcSpecularRoughness(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcSpecularRoughness); e->setArgument(0, v); data_ = e; }
IfcSpecularRoughness::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcStrippedOptional
Type::Enum IfcStrippedOptional::Class() { return Type::IfcStrippedOptional; }
const IfcParse::type_declaration& IfcStrippedOptional::declaration() const { return *IfcStrippedOptional_type; }
IfcStrippedOptional::IfcStrippedOptional(IfcAbstractEntity* e) { data_ = e; }
IfcStrippedOptional::IfcStrippedOptional(bool v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcStrippedOptional); e->setArgument(0, v); data_ = e; }
IfcStrippedOptional::operator bool() const { return *data_->getArgument(0); }

// Function implementations for IfcTemperatureGradientMeasure
Type::Enum IfcTemperatureGradientMeasure::Class() { return Type::IfcTemperatureGradientMeasure; }
const IfcParse::type_declaration& IfcTemperatureGradientMeasure::declaration() const { return *IfcTemperatureGradientMeasure_type; }
IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTemperatureGradientMeasure); e->setArgument(0, v); data_ = e; }
IfcTemperatureGradientMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTemperatureRateOfChangeMeasure
Type::Enum IfcTemperatureRateOfChangeMeasure::Class() { return Type::IfcTemperatureRateOfChangeMeasure; }
const IfcParse::type_declaration& IfcTemperatureRateOfChangeMeasure::declaration() const { return *IfcTemperatureRateOfChangeMeasure_type; }
IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTemperatureRateOfChangeMeasure); e->setArgument(0, v); data_ = e; }
IfcTemperatureRateOfChangeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcText
Type::Enum IfcText::Class() { return Type::IfcText; }
const IfcParse::type_declaration& IfcText::declaration() const { return *IfcText_type; }
IfcText::IfcText(IfcAbstractEntity* e) { data_ = e; }
IfcText::IfcText(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcText); e->setArgument(0, v); data_ = e; }
IfcText::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextAlignment
Type::Enum IfcTextAlignment::Class() { return Type::IfcTextAlignment; }
const IfcParse::type_declaration& IfcTextAlignment::declaration() const { return *IfcTextAlignment_type; }
IfcTextAlignment::IfcTextAlignment(IfcAbstractEntity* e) { data_ = e; }
IfcTextAlignment::IfcTextAlignment(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTextAlignment); e->setArgument(0, v); data_ = e; }
IfcTextAlignment::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextDecoration
Type::Enum IfcTextDecoration::Class() { return Type::IfcTextDecoration; }
const IfcParse::type_declaration& IfcTextDecoration::declaration() const { return *IfcTextDecoration_type; }
IfcTextDecoration::IfcTextDecoration(IfcAbstractEntity* e) { data_ = e; }
IfcTextDecoration::IfcTextDecoration(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTextDecoration); e->setArgument(0, v); data_ = e; }
IfcTextDecoration::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextFontName
Type::Enum IfcTextFontName::Class() { return Type::IfcTextFontName; }
const IfcParse::type_declaration& IfcTextFontName::declaration() const { return *IfcTextFontName_type; }
IfcTextFontName::IfcTextFontName(IfcAbstractEntity* e) { data_ = e; }
IfcTextFontName::IfcTextFontName(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTextFontName); e->setArgument(0, v); data_ = e; }
IfcTextFontName::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextTransformation
Type::Enum IfcTextTransformation::Class() { return Type::IfcTextTransformation; }
const IfcParse::type_declaration& IfcTextTransformation::declaration() const { return *IfcTextTransformation_type; }
IfcTextTransformation::IfcTextTransformation(IfcAbstractEntity* e) { data_ = e; }
IfcTextTransformation::IfcTextTransformation(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTextTransformation); e->setArgument(0, v); data_ = e; }
IfcTextTransformation::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalAdmittanceMeasure
Type::Enum IfcThermalAdmittanceMeasure::Class() { return Type::IfcThermalAdmittanceMeasure; }
const IfcParse::type_declaration& IfcThermalAdmittanceMeasure::declaration() const { return *IfcThermalAdmittanceMeasure_type; }
IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcThermalAdmittanceMeasure); e->setArgument(0, v); data_ = e; }
IfcThermalAdmittanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalConductivityMeasure
Type::Enum IfcThermalConductivityMeasure::Class() { return Type::IfcThermalConductivityMeasure; }
const IfcParse::type_declaration& IfcThermalConductivityMeasure::declaration() const { return *IfcThermalConductivityMeasure_type; }
IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcThermalConductivityMeasure); e->setArgument(0, v); data_ = e; }
IfcThermalConductivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalExpansionCoefficientMeasure
Type::Enum IfcThermalExpansionCoefficientMeasure::Class() { return Type::IfcThermalExpansionCoefficientMeasure; }
const IfcParse::type_declaration& IfcThermalExpansionCoefficientMeasure::declaration() const { return *IfcThermalExpansionCoefficientMeasure_type; }
IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcThermalExpansionCoefficientMeasure); e->setArgument(0, v); data_ = e; }
IfcThermalExpansionCoefficientMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalResistanceMeasure
Type::Enum IfcThermalResistanceMeasure::Class() { return Type::IfcThermalResistanceMeasure; }
const IfcParse::type_declaration& IfcThermalResistanceMeasure::declaration() const { return *IfcThermalResistanceMeasure_type; }
IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcThermalResistanceMeasure); e->setArgument(0, v); data_ = e; }
IfcThermalResistanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalTransmittanceMeasure
Type::Enum IfcThermalTransmittanceMeasure::Class() { return Type::IfcThermalTransmittanceMeasure; }
const IfcParse::type_declaration& IfcThermalTransmittanceMeasure::declaration() const { return *IfcThermalTransmittanceMeasure_type; }
IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcThermalTransmittanceMeasure); e->setArgument(0, v); data_ = e; }
IfcThermalTransmittanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermodynamicTemperatureMeasure
Type::Enum IfcThermodynamicTemperatureMeasure::Class() { return Type::IfcThermodynamicTemperatureMeasure; }
const IfcParse::type_declaration& IfcThermodynamicTemperatureMeasure::declaration() const { return *IfcThermodynamicTemperatureMeasure_type; }
IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcThermodynamicTemperatureMeasure); e->setArgument(0, v); data_ = e; }
IfcThermodynamicTemperatureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTime
Type::Enum IfcTime::Class() { return Type::IfcTime; }
const IfcParse::type_declaration& IfcTime::declaration() const { return *IfcTime_type; }
IfcTime::IfcTime(IfcAbstractEntity* e) { data_ = e; }
IfcTime::IfcTime(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTime); e->setArgument(0, v); data_ = e; }
IfcTime::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTimeMeasure
Type::Enum IfcTimeMeasure::Class() { return Type::IfcTimeMeasure; }
const IfcParse::type_declaration& IfcTimeMeasure::declaration() const { return *IfcTimeMeasure_type; }
IfcTimeMeasure::IfcTimeMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcTimeMeasure::IfcTimeMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTimeMeasure); e->setArgument(0, v); data_ = e; }
IfcTimeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTimeStamp
Type::Enum IfcTimeStamp::Class() { return Type::IfcTimeStamp; }
const IfcParse::type_declaration& IfcTimeStamp::declaration() const { return *IfcTimeStamp_type; }
IfcTimeStamp::IfcTimeStamp(IfcAbstractEntity* e) { data_ = e; }
IfcTimeStamp::IfcTimeStamp(int v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTimeStamp); e->setArgument(0, v); data_ = e; }
IfcTimeStamp::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcTorqueMeasure
Type::Enum IfcTorqueMeasure::Class() { return Type::IfcTorqueMeasure; }
const IfcParse::type_declaration& IfcTorqueMeasure::declaration() const { return *IfcTorqueMeasure_type; }
IfcTorqueMeasure::IfcTorqueMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcTorqueMeasure::IfcTorqueMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcTorqueMeasure); e->setArgument(0, v); data_ = e; }
IfcTorqueMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcURIReference
Type::Enum IfcURIReference::Class() { return Type::IfcURIReference; }
const IfcParse::type_declaration& IfcURIReference::declaration() const { return *IfcURIReference_type; }
IfcURIReference::IfcURIReference(IfcAbstractEntity* e) { data_ = e; }
IfcURIReference::IfcURIReference(std::string v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcURIReference); e->setArgument(0, v); data_ = e; }
IfcURIReference::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcVaporPermeabilityMeasure
Type::Enum IfcVaporPermeabilityMeasure::Class() { return Type::IfcVaporPermeabilityMeasure; }
const IfcParse::type_declaration& IfcVaporPermeabilityMeasure::declaration() const { return *IfcVaporPermeabilityMeasure_type; }
IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcVaporPermeabilityMeasure); e->setArgument(0, v); data_ = e; }
IfcVaporPermeabilityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcVolumeMeasure
Type::Enum IfcVolumeMeasure::Class() { return Type::IfcVolumeMeasure; }
const IfcParse::type_declaration& IfcVolumeMeasure::declaration() const { return *IfcVolumeMeasure_type; }
IfcVolumeMeasure::IfcVolumeMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcVolumeMeasure::IfcVolumeMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcVolumeMeasure); e->setArgument(0, v); data_ = e; }
IfcVolumeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcVolumetricFlowRateMeasure
Type::Enum IfcVolumetricFlowRateMeasure::Class() { return Type::IfcVolumetricFlowRateMeasure; }
const IfcParse::type_declaration& IfcVolumetricFlowRateMeasure::declaration() const { return *IfcVolumetricFlowRateMeasure_type; }
IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcVolumetricFlowRateMeasure); e->setArgument(0, v); data_ = e; }
IfcVolumetricFlowRateMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcWarpingConstantMeasure
Type::Enum IfcWarpingConstantMeasure::Class() { return Type::IfcWarpingConstantMeasure; }
const IfcParse::type_declaration& IfcWarpingConstantMeasure::declaration() const { return *IfcWarpingConstantMeasure_type; }
IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcWarpingConstantMeasure); e->setArgument(0, v); data_ = e; }
IfcWarpingConstantMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcWarpingMomentMeasure
Type::Enum IfcWarpingMomentMeasure::Class() { return Type::IfcWarpingMomentMeasure; }
const IfcParse::type_declaration& IfcWarpingMomentMeasure::declaration() const { return *IfcWarpingMomentMeasure_type; }
IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(IfcAbstractEntity* e) { data_ = e; }
IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(double v) { IfcWritableEntity* e = new IfcWritableEntity(Type::IfcWarpingMomentMeasure); e->setArgument(0, v); data_ = e; }
IfcWarpingMomentMeasure::operator double() const { return *data_->getArgument(0); }


// Function implementations for IfcActionRequest
bool IfcActionRequest::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcActionRequestTypeEnum::IfcActionRequestTypeEnum IfcActionRequest::PredefinedType() const { return IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); }
void IfcActionRequest::setPredefinedType(IfcActionRequestTypeEnum::IfcActionRequestTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcActionRequestTypeEnum::ToString(v)); }
bool IfcActionRequest::hasStatus() const { return !data_->getArgument(7)->isNull(); }
std::string IfcActionRequest::Status() const { return *data_->getArgument(7); }
void IfcActionRequest::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcActionRequest::hasLongDescription() const { return !data_->getArgument(8)->isNull(); }
std::string IfcActionRequest::LongDescription() const { return *data_->getArgument(8); }
void IfcActionRequest::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcActionRequest::declaration() const { return *IfcActionRequest_type; }
Type::Enum IfcActionRequest::Class() { return Type::IfcActionRequest; }
IfcActionRequest::IfcActionRequest(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcActionRequest)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcActionRequest::IfcActionRequest(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcActionRequestTypeEnum::IfcActionRequestTypeEnum > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcActionRequestTypeEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } if (v8_Status) { e->setArgument(7,(*v8_Status)); } else { e->setArgument(7); } if (v9_LongDescription) { e->setArgument(8,(*v9_LongDescription)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcActor
IfcActorSelect* IfcActor::TheActor() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcActor::setTheActor(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcRelAssignsToActor::list::ptr IfcActor::IsActingUpon() const { return data_->getInverse(Type::IfcRelAssignsToActor, 6)->as<IfcRelAssignsToActor>(); }

const IfcParse::entity& IfcActor::declaration() const { return *IfcActor_type; }
Type::Enum IfcActor::Class() { return Type::IfcActor; }
IfcActor::IfcActor(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcActor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcActor::IfcActor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcActorSelect* v6_TheActor) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_TheActor)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcActorRole
IfcRoleEnum::IfcRoleEnum IfcActorRole::Role() const { return IfcRoleEnum::FromString(*data_->getArgument(0)); }
void IfcActorRole::setRole(IfcRoleEnum::IfcRoleEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcRoleEnum::ToString(v)); }
bool IfcActorRole::hasUserDefinedRole() const { return !data_->getArgument(1)->isNull(); }
std::string IfcActorRole::UserDefinedRole() const { return *data_->getArgument(1); }
void IfcActorRole::setUserDefinedRole(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcActorRole::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcActorRole::Description() const { return *data_->getArgument(2); }
void IfcActorRole::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcExternalReferenceRelationship::list::ptr IfcActorRole::HasExternalReference() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcActorRole::declaration() const { return *IfcActorRole_type; }
Type::Enum IfcActorRole::Class() { return Type::IfcActorRole; }
IfcActorRole::IfcActorRole(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcActorRole)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcActorRole::IfcActorRole(IfcRoleEnum::IfcRoleEnum v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_Role,IfcRoleEnum::ToString(v1_Role)); if (v2_UserDefinedRole) { e->setArgument(1,(*v2_UserDefinedRole)); } else { e->setArgument(1); } if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcActuator
bool IfcActuator::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcActuatorTypeEnum::IfcActuatorTypeEnum IfcActuator::PredefinedType() const { return IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcActuator::setPredefinedType(IfcActuatorTypeEnum::IfcActuatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcActuatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcActuator::declaration() const { return *IfcActuator_type; }
Type::Enum IfcActuator::Class() { return Type::IfcActuator; }
IfcActuator::IfcActuator(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcActuator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcActuator::IfcActuator(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcActuatorTypeEnum::IfcActuatorTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcActuatorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcActuatorType
IfcActuatorTypeEnum::IfcActuatorTypeEnum IfcActuatorType::PredefinedType() const { return IfcActuatorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcActuatorType::setPredefinedType(IfcActuatorTypeEnum::IfcActuatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcActuatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcActuatorType::declaration() const { return *IfcActuatorType_type; }
Type::Enum IfcActuatorType::Class() { return Type::IfcActuatorType; }
IfcActuatorType::IfcActuatorType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcActuatorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcActuatorTypeEnum::IfcActuatorTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcActuatorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAddress
bool IfcAddress::hasPurpose() const { return !data_->getArgument(0)->isNull(); }
IfcAddressTypeEnum::IfcAddressTypeEnum IfcAddress::Purpose() const { return IfcAddressTypeEnum::FromString(*data_->getArgument(0)); }
void IfcAddress::setPurpose(IfcAddressTypeEnum::IfcAddressTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcAddressTypeEnum::ToString(v)); }
bool IfcAddress::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcAddress::Description() const { return *data_->getArgument(1); }
void IfcAddress::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcAddress::hasUserDefinedPurpose() const { return !data_->getArgument(2)->isNull(); }
std::string IfcAddress::UserDefinedPurpose() const { return *data_->getArgument(2); }
void IfcAddress::setUserDefinedPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcPerson::list::ptr IfcAddress::OfPerson() const { return data_->getInverse(Type::IfcPerson, 7)->as<IfcPerson>(); }
IfcOrganization::list::ptr IfcAddress::OfOrganization() const { return data_->getInverse(Type::IfcOrganization, 4)->as<IfcOrganization>(); }

const IfcParse::entity& IfcAddress::declaration() const { return *IfcAddress_type; }
Type::Enum IfcAddress::Class() { return Type::IfcAddress; }
IfcAddress::IfcAddress(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcAddress)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAddress::IfcAddress(boost::optional< IfcAddressTypeEnum::IfcAddressTypeEnum > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Purpose) { e->setArgument(0,*v1_Purpose,IfcAddressTypeEnum::ToString(*v1_Purpose)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UserDefinedPurpose) { e->setArgument(2,(*v3_UserDefinedPurpose)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAdvancedBrep


const IfcParse::entity& IfcAdvancedBrep::declaration() const { return *IfcAdvancedBrep_type; }
Type::Enum IfcAdvancedBrep::Class() { return Type::IfcAdvancedBrep; }
IfcAdvancedBrep::IfcAdvancedBrep(IfcAbstractEntity* e) : IfcManifoldSolidBrep((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAdvancedBrep)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAdvancedBrep::IfcAdvancedBrep(IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Outer)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAdvancedBrepWithVoids
IfcTemplatedEntityList< IfcClosedShell >::ptr IfcAdvancedBrepWithVoids::Voids() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcClosedShell>(); }
void IfcAdvancedBrepWithVoids::setVoids(IfcTemplatedEntityList< IfcClosedShell >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcAdvancedBrepWithVoids::declaration() const { return *IfcAdvancedBrepWithVoids_type; }
Type::Enum IfcAdvancedBrepWithVoids::Class() { return Type::IfcAdvancedBrepWithVoids; }
IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(IfcAbstractEntity* e) : IfcAdvancedBrep((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAdvancedBrepWithVoids)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(IfcClosedShell* v1_Outer, IfcTemplatedEntityList< IfcClosedShell >::ptr v2_Voids) : IfcAdvancedBrep((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Outer)); e->setArgument(1,(v2_Voids)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAdvancedFace


const IfcParse::entity& IfcAdvancedFace::declaration() const { return *IfcAdvancedFace_type; }
Type::Enum IfcAdvancedFace::Class() { return Type::IfcAdvancedFace; }
IfcAdvancedFace::IfcAdvancedFace(IfcAbstractEntity* e) : IfcFaceSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAdvancedFace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAdvancedFace::IfcAdvancedFace(IfcTemplatedEntityList< IfcFaceBound >::ptr v1_Bounds, IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFaceSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bounds)->generalize()); e->setArgument(1,(v2_FaceSurface)); e->setArgument(2,(v3_SameSense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAirTerminal
bool IfcAirTerminal::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum IfcAirTerminal::PredefinedType() const { return IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void IfcAirTerminal::setPredefinedType(IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAirTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAirTerminal::declaration() const { return *IfcAirTerminal_type; }
Type::Enum IfcAirTerminal::Class() { return Type::IfcAirTerminal; }
IfcAirTerminal::IfcAirTerminal(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAirTerminal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcAirTerminalTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAirTerminalBox
bool IfcAirTerminalBox::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum IfcAirTerminalBox::PredefinedType() const { return IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); }
void IfcAirTerminalBox::setPredefinedType(IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAirTerminalBoxTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAirTerminalBox::declaration() const { return *IfcAirTerminalBox_type; }
Type::Enum IfcAirTerminalBox::Class() { return Type::IfcAirTerminalBox; }
IfcAirTerminalBox::IfcAirTerminalBox(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAirTerminalBox)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAirTerminalBox::IfcAirTerminalBox(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcAirTerminalBoxTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAirTerminalBoxType
IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum IfcAirTerminalBoxType::PredefinedType() const { return IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(9)); }
void IfcAirTerminalBoxType::setPredefinedType(IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAirTerminalBoxTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAirTerminalBoxType::declaration() const { return *IfcAirTerminalBoxType_type; }
Type::Enum IfcAirTerminalBoxType::Class() { return Type::IfcAirTerminalBoxType; }
IfcAirTerminalBoxType::IfcAirTerminalBoxType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAirTerminalBoxType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAirTerminalBoxType::IfcAirTerminalBoxType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcAirTerminalBoxTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAirTerminalType
IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum IfcAirTerminalType::PredefinedType() const { return IfcAirTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcAirTerminalType::setPredefinedType(IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAirTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAirTerminalType::declaration() const { return *IfcAirTerminalType_type; }
Type::Enum IfcAirTerminalType::Class() { return Type::IfcAirTerminalType; }
IfcAirTerminalType::IfcAirTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAirTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcAirTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAirToAirHeatRecovery
bool IfcAirToAirHeatRecovery::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum IfcAirToAirHeatRecovery::PredefinedType() const { return IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); }
void IfcAirToAirHeatRecovery::setPredefinedType(IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAirToAirHeatRecoveryTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAirToAirHeatRecovery::declaration() const { return *IfcAirToAirHeatRecovery_type; }
Type::Enum IfcAirToAirHeatRecovery::Class() { return Type::IfcAirToAirHeatRecovery; }
IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAirToAirHeatRecovery)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcAirToAirHeatRecoveryTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAirToAirHeatRecoveryType
IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum IfcAirToAirHeatRecoveryType::PredefinedType() const { return IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(9)); }
void IfcAirToAirHeatRecoveryType::setPredefinedType(IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAirToAirHeatRecoveryTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAirToAirHeatRecoveryType::declaration() const { return *IfcAirToAirHeatRecoveryType_type; }
Type::Enum IfcAirToAirHeatRecoveryType::Class() { return Type::IfcAirToAirHeatRecoveryType; }
IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAirToAirHeatRecoveryType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcAirToAirHeatRecoveryTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAlarm
bool IfcAlarm::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcAlarmTypeEnum::IfcAlarmTypeEnum IfcAlarm::PredefinedType() const { return IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); }
void IfcAlarm::setPredefinedType(IfcAlarmTypeEnum::IfcAlarmTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAlarmTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAlarm::declaration() const { return *IfcAlarm_type; }
Type::Enum IfcAlarm::Class() { return Type::IfcAlarm; }
IfcAlarm::IfcAlarm(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAlarm)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAlarm::IfcAlarm(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcAlarmTypeEnum::IfcAlarmTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcAlarmTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAlarmType
IfcAlarmTypeEnum::IfcAlarmTypeEnum IfcAlarmType::PredefinedType() const { return IfcAlarmTypeEnum::FromString(*data_->getArgument(9)); }
void IfcAlarmType::setPredefinedType(IfcAlarmTypeEnum::IfcAlarmTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAlarmTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAlarmType::declaration() const { return *IfcAlarmType_type; }
Type::Enum IfcAlarmType::Class() { return Type::IfcAlarmType; }
IfcAlarmType::IfcAlarmType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAlarmType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcAlarmTypeEnum::IfcAlarmTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcAlarmTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotation

IfcRelContainedInSpatialStructure::list::ptr IfcAnnotation::ContainedInStructure() const { return data_->getInverse(Type::IfcRelContainedInSpatialStructure, 4)->as<IfcRelContainedInSpatialStructure>(); }

const IfcParse::entity& IfcAnnotation::declaration() const { return *IfcAnnotation_type; }
Type::Enum IfcAnnotation::Class() { return Type::IfcAnnotation; }
IfcAnnotation::IfcAnnotation(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAnnotationFillArea
IfcCurve* IfcAnnotationFillArea::OuterBoundary() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcAnnotationFillArea::setOuterBoundary(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcAnnotationFillArea::hasInnerBoundaries() const { return !data_->getArgument(1)->isNull(); }
IfcTemplatedEntityList< IfcCurve >::ptr IfcAnnotationFillArea::InnerBoundaries() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcCurve>(); }
void IfcAnnotationFillArea::setInnerBoundaries(IfcTemplatedEntityList< IfcCurve >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcAnnotationFillArea::declaration() const { return *IfcAnnotationFillArea_type; }
Type::Enum IfcAnnotationFillArea::Class() { return Type::IfcAnnotationFillArea; }
IfcAnnotationFillArea::IfcAnnotationFillArea(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAnnotationFillArea)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAnnotationFillArea::IfcAnnotationFillArea(IfcCurve* v1_OuterBoundary, boost::optional< IfcTemplatedEntityList< IfcCurve >::ptr > v2_InnerBoundaries) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_OuterBoundary)); if (v2_InnerBoundaries) { e->setArgument(1,(*v2_InnerBoundaries)->generalize()); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApplication
IfcOrganization* IfcApplication::ApplicationDeveloper() const { return (IfcOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcApplication::setApplicationDeveloper(IfcOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcApplication::Version() const { return *data_->getArgument(1); }
void IfcApplication::setVersion(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
std::string IfcApplication::ApplicationFullName() const { return *data_->getArgument(2); }
void IfcApplication::setApplicationFullName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::string IfcApplication::ApplicationIdentifier() const { return *data_->getArgument(3); }
void IfcApplication::setApplicationIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcApplication::declaration() const { return *IfcApplication_type; }
Type::Enum IfcApplication::Class() { return Type::IfcApplication; }
IfcApplication::IfcApplication(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcApplication)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcApplication::IfcApplication(IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ApplicationDeveloper)); e->setArgument(1,(v2_Version)); e->setArgument(2,(v3_ApplicationFullName)); e->setArgument(3,(v4_ApplicationIdentifier)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAppliedValue
bool IfcAppliedValue::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcAppliedValue::Name() const { return *data_->getArgument(0); }
void IfcAppliedValue::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcAppliedValue::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcAppliedValue::Description() const { return *data_->getArgument(1); }
void IfcAppliedValue::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcAppliedValue::hasAppliedValue() const { return !data_->getArgument(2)->isNull(); }
IfcAppliedValueSelect* IfcAppliedValue::AppliedValue() const { return (IfcAppliedValueSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcAppliedValue::setAppliedValue(IfcAppliedValueSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcAppliedValue::hasUnitBasis() const { return !data_->getArgument(3)->isNull(); }
IfcMeasureWithUnit* IfcAppliedValue::UnitBasis() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcAppliedValue::setUnitBasis(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcAppliedValue::hasApplicableDate() const { return !data_->getArgument(4)->isNull(); }
std::string IfcAppliedValue::ApplicableDate() const { return *data_->getArgument(4); }
void IfcAppliedValue::setApplicableDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcAppliedValue::hasFixedUntilDate() const { return !data_->getArgument(5)->isNull(); }
std::string IfcAppliedValue::FixedUntilDate() const { return *data_->getArgument(5); }
void IfcAppliedValue::setFixedUntilDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcAppliedValue::hasCategory() const { return !data_->getArgument(6)->isNull(); }
std::string IfcAppliedValue::Category() const { return *data_->getArgument(6); }
void IfcAppliedValue::setCategory(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcAppliedValue::hasCondition() const { return !data_->getArgument(7)->isNull(); }
std::string IfcAppliedValue::Condition() const { return *data_->getArgument(7); }
void IfcAppliedValue::setCondition(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcAppliedValue::hasArithmeticOperator() const { return !data_->getArgument(8)->isNull(); }
IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum IfcAppliedValue::ArithmeticOperator() const { return IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); }
void IfcAppliedValue::setArithmeticOperator(IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcArithmeticOperatorEnum::ToString(v)); }
bool IfcAppliedValue::hasComponents() const { return !data_->getArgument(9)->isNull(); }
IfcTemplatedEntityList< IfcAppliedValue >::ptr IfcAppliedValue::Components() const { IfcEntityList::ptr es = *data_->getArgument(9); return es->as<IfcAppliedValue>(); }
void IfcAppliedValue::setComponents(IfcTemplatedEntityList< IfcAppliedValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v->generalize()); }

IfcExternalReferenceRelationship::list::ptr IfcAppliedValue::HasExternalReference() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcAppliedValue::declaration() const { return *IfcAppliedValue_type; }
Type::Enum IfcAppliedValue::Class() { return Type::IfcAppliedValue; }
IfcAppliedValue::IfcAppliedValue(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcAppliedValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcAppliedValueSelect* v3_AppliedValue, IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum > v9_ArithmeticOperator, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_Components) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AppliedValue)); e->setArgument(3,(v4_UnitBasis)); if (v5_ApplicableDate) { e->setArgument(4,(*v5_ApplicableDate)); } else { e->setArgument(4); } if (v6_FixedUntilDate) { e->setArgument(5,(*v6_FixedUntilDate)); } else { e->setArgument(5); } if (v7_Category) { e->setArgument(6,(*v7_Category)); } else { e->setArgument(6); } if (v8_Condition) { e->setArgument(7,(*v8_Condition)); } else { e->setArgument(7); } if (v9_ArithmeticOperator) { e->setArgument(8,*v9_ArithmeticOperator,IfcArithmeticOperatorEnum::ToString(*v9_ArithmeticOperator)); } else { e->setArgument(8); } if (v10_Components) { e->setArgument(9,(*v10_Components)->generalize()); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApproval
bool IfcApproval::hasIdentifier() const { return !data_->getArgument(0)->isNull(); }
std::string IfcApproval::Identifier() const { return *data_->getArgument(0); }
void IfcApproval::setIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcApproval::hasName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcApproval::Name() const { return *data_->getArgument(1); }
void IfcApproval::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcApproval::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcApproval::Description() const { return *data_->getArgument(2); }
void IfcApproval::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcApproval::hasTimeOfApproval() const { return !data_->getArgument(3)->isNull(); }
std::string IfcApproval::TimeOfApproval() const { return *data_->getArgument(3); }
void IfcApproval::setTimeOfApproval(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcApproval::hasStatus() const { return !data_->getArgument(4)->isNull(); }
std::string IfcApproval::Status() const { return *data_->getArgument(4); }
void IfcApproval::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcApproval::hasLevel() const { return !data_->getArgument(5)->isNull(); }
std::string IfcApproval::Level() const { return *data_->getArgument(5); }
void IfcApproval::setLevel(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcApproval::hasQualifier() const { return !data_->getArgument(6)->isNull(); }
std::string IfcApproval::Qualifier() const { return *data_->getArgument(6); }
void IfcApproval::setQualifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcApproval::hasRequestingApproval() const { return !data_->getArgument(7)->isNull(); }
IfcActorSelect* IfcApproval::RequestingApproval() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcApproval::setRequestingApproval(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcApproval::hasGivingApproval() const { return !data_->getArgument(8)->isNull(); }
IfcActorSelect* IfcApproval::GivingApproval() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcApproval::setGivingApproval(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }

IfcExternalReferenceRelationship::list::ptr IfcApproval::HasExternalReferences() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }
IfcRelAssociatesApproval::list::ptr IfcApproval::ApprovedObjects() const { return data_->getInverse(Type::IfcRelAssociatesApproval, 5)->as<IfcRelAssociatesApproval>(); }
IfcResourceApprovalRelationship::list::ptr IfcApproval::ApprovedResources() const { return data_->getInverse(Type::IfcResourceApprovalRelationship, 3)->as<IfcResourceApprovalRelationship>(); }
IfcApprovalRelationship::list::ptr IfcApproval::IsRelatedWith() const { return data_->getInverse(Type::IfcApprovalRelationship, 3)->as<IfcApprovalRelationship>(); }
IfcApprovalRelationship::list::ptr IfcApproval::Relates() const { return data_->getInverse(Type::IfcApprovalRelationship, 2)->as<IfcApprovalRelationship>(); }

const IfcParse::entity& IfcApproval::declaration() const { return *IfcApproval_type; }
Type::Enum IfcApproval::Class() { return Type::IfcApproval; }
IfcApproval::IfcApproval(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcApproval)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcApproval::IfcApproval(boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_TimeOfApproval, boost::optional< std::string > v5_Status, boost::optional< std::string > v6_Level, boost::optional< std::string > v7_Qualifier, IfcActorSelect* v8_RequestingApproval, IfcActorSelect* v9_GivingApproval) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Identifier) { e->setArgument(0,(*v1_Identifier)); } else { e->setArgument(0); } if (v2_Name) { e->setArgument(1,(*v2_Name)); } else { e->setArgument(1); } if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } if (v4_TimeOfApproval) { e->setArgument(3,(*v4_TimeOfApproval)); } else { e->setArgument(3); } if (v5_Status) { e->setArgument(4,(*v5_Status)); } else { e->setArgument(4); } if (v6_Level) { e->setArgument(5,(*v6_Level)); } else { e->setArgument(5); } if (v7_Qualifier) { e->setArgument(6,(*v7_Qualifier)); } else { e->setArgument(6); } e->setArgument(7,(v8_RequestingApproval)); e->setArgument(8,(v9_GivingApproval)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcApprovalRelationship
IfcApproval* IfcApprovalRelationship::RelatingApproval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcApprovalRelationship::setRelatingApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcApproval >::ptr IfcApprovalRelationship::RelatedApprovals() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcApproval>(); }
void IfcApprovalRelationship::setRelatedApprovals(IfcTemplatedEntityList< IfcApproval >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }


const IfcParse::entity& IfcApprovalRelationship::declaration() const { return *IfcApprovalRelationship_type; }
Type::Enum IfcApprovalRelationship::Class() { return Type::IfcApprovalRelationship; }
IfcApprovalRelationship::IfcApprovalRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcApprovalRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcApprovalRelationship::IfcApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcApproval* v3_RelatingApproval, IfcTemplatedEntityList< IfcApproval >::ptr v4_RelatedApprovals) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingApproval)); e->setArgument(3,(v4_RelatedApprovals)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcArbitraryClosedProfileDef
IfcCurve* IfcArbitraryClosedProfileDef::OuterCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcArbitraryClosedProfileDef::setOuterCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcArbitraryClosedProfileDef::declaration() const { return *IfcArbitraryClosedProfileDef_type; }
Type::Enum IfcArbitraryClosedProfileDef::Class() { return Type::IfcArbitraryClosedProfileDef; }
IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(IfcAbstractEntity* e) : IfcProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcArbitraryClosedProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcCurve* v3_OuterCurve) : IfcProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_OuterCurve)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcArbitraryOpenProfileDef
IfcBoundedCurve* IfcArbitraryOpenProfileDef::Curve() const { return (IfcBoundedCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcArbitraryOpenProfileDef::setCurve(IfcBoundedCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcArbitraryOpenProfileDef::declaration() const { return *IfcArbitraryOpenProfileDef_type; }
Type::Enum IfcArbitraryOpenProfileDef::Class() { return Type::IfcArbitraryOpenProfileDef; }
IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(IfcAbstractEntity* e) : IfcProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcArbitraryOpenProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcBoundedCurve* v3_Curve) : IfcProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Curve)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcArbitraryProfileDefWithVoids
IfcTemplatedEntityList< IfcCurve >::ptr IfcArbitraryProfileDefWithVoids::InnerCurves() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcCurve>(); }
void IfcArbitraryProfileDefWithVoids::setInnerCurves(IfcTemplatedEntityList< IfcCurve >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }


const IfcParse::entity& IfcArbitraryProfileDefWithVoids::declaration() const { return *IfcArbitraryProfileDefWithVoids_type; }
Type::Enum IfcArbitraryProfileDefWithVoids::Class() { return Type::IfcArbitraryProfileDefWithVoids; }
IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(IfcAbstractEntity* e) : IfcArbitraryClosedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcArbitraryProfileDefWithVoids)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcCurve* v3_OuterCurve, IfcTemplatedEntityList< IfcCurve >::ptr v4_InnerCurves) : IfcArbitraryClosedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_OuterCurve)); e->setArgument(3,(v4_InnerCurves)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAsset
bool IfcAsset::hasIdentification() const { return !data_->getArgument(5)->isNull(); }
std::string IfcAsset::Identification() const { return *data_->getArgument(5); }
void IfcAsset::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcAsset::hasOriginalValue() const { return !data_->getArgument(6)->isNull(); }
IfcCostValue* IfcAsset::OriginalValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcAsset::setOriginalValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcAsset::hasCurrentValue() const { return !data_->getArgument(7)->isNull(); }
IfcCostValue* IfcAsset::CurrentValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcAsset::setCurrentValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcAsset::hasTotalReplacementCost() const { return !data_->getArgument(8)->isNull(); }
IfcCostValue* IfcAsset::TotalReplacementCost() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcAsset::setTotalReplacementCost(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcAsset::hasOwner() const { return !data_->getArgument(9)->isNull(); }
IfcActorSelect* IfcAsset::Owner() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcAsset::setOwner(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcAsset::hasUser() const { return !data_->getArgument(10)->isNull(); }
IfcActorSelect* IfcAsset::User() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcAsset::setUser(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcAsset::hasResponsiblePerson() const { return !data_->getArgument(11)->isNull(); }
IfcPerson* IfcAsset::ResponsiblePerson() const { return (IfcPerson*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcAsset::setResponsiblePerson(IfcPerson* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcAsset::hasIncorporationDate() const { return !data_->getArgument(12)->isNull(); }
std::string IfcAsset::IncorporationDate() const { return *data_->getArgument(12); }
void IfcAsset::setIncorporationDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcAsset::hasDepreciatedValue() const { return !data_->getArgument(13)->isNull(); }
IfcCostValue* IfcAsset::DepreciatedValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(13))); }
void IfcAsset::setDepreciatedValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }


const IfcParse::entity& IfcAsset::declaration() const { return *IfcAsset_type; }
Type::Enum IfcAsset::Class() { return Type::IfcAsset; }
IfcAsset::IfcAsset(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAsset)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAsset::IfcAsset(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, IfcCostValue* v7_OriginalValue, IfcCostValue* v8_CurrentValue, IfcCostValue* v9_TotalReplacementCost, IfcActorSelect* v10_Owner, IfcActorSelect* v11_User, IfcPerson* v12_ResponsiblePerson, boost::optional< std::string > v13_IncorporationDate, IfcCostValue* v14_DepreciatedValue) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } e->setArgument(6,(v7_OriginalValue)); e->setArgument(7,(v8_CurrentValue)); e->setArgument(8,(v9_TotalReplacementCost)); e->setArgument(9,(v10_Owner)); e->setArgument(10,(v11_User)); e->setArgument(11,(v12_ResponsiblePerson)); if (v13_IncorporationDate) { e->setArgument(12,(*v13_IncorporationDate)); } else { e->setArgument(12); } e->setArgument(13,(v14_DepreciatedValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAsymmetricIShapeProfileDef
double IfcAsymmetricIShapeProfileDef::BottomFlangeWidth() const { return *data_->getArgument(3); }
void IfcAsymmetricIShapeProfileDef::setBottomFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcAsymmetricIShapeProfileDef::OverallDepth() const { return *data_->getArgument(4); }
void IfcAsymmetricIShapeProfileDef::setOverallDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcAsymmetricIShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const { return *data_->getArgument(6); }
void IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcAsymmetricIShapeProfileDef::hasBottomFlangeFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { return *data_->getArgument(7); }
void IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const { return *data_->getArgument(8); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcAsymmetricIShapeProfileDef::hasTopFlangeThickness() const { return !data_->getArgument(9)->isNull(); }
double IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { return *data_->getArgument(9); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcAsymmetricIShapeProfileDef::hasTopFlangeFilletRadius() const { return !data_->getArgument(10)->isNull(); }
double IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { return *data_->getArgument(10); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcAsymmetricIShapeProfileDef::hasBottomFlangeEdgeRadius() const { return !data_->getArgument(11)->isNull(); }
double IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { return *data_->getArgument(11); }
void IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcAsymmetricIShapeProfileDef::hasBottomFlangeSlope() const { return !data_->getArgument(12)->isNull(); }
double IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { return *data_->getArgument(12); }
void IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcAsymmetricIShapeProfileDef::hasTopFlangeEdgeRadius() const { return !data_->getArgument(13)->isNull(); }
double IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { return *data_->getArgument(13); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcAsymmetricIShapeProfileDef::hasTopFlangeSlope() const { return !data_->getArgument(14)->isNull(); }
double IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { return *data_->getArgument(14); }
void IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }


const IfcParse::entity& IfcAsymmetricIShapeProfileDef::declaration() const { return *IfcAsymmetricIShapeProfileDef_type; }
Type::Enum IfcAsymmetricIShapeProfileDef::Class() { return Type::IfcAsymmetricIShapeProfileDef; }
IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAsymmetricIShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_BottomFlangeWidth, double v5_OverallDepth, double v6_WebThickness, double v7_BottomFlangeThickness, boost::optional< double > v8_BottomFlangeFilletRadius, double v9_TopFlangeWidth, boost::optional< double > v10_TopFlangeThickness, boost::optional< double > v11_TopFlangeFilletRadius, boost::optional< double > v12_BottomFlangeEdgeRadius, boost::optional< double > v13_BottomFlangeSlope, boost::optional< double > v14_TopFlangeEdgeRadius, boost::optional< double > v15_TopFlangeSlope) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_BottomFlangeWidth)); e->setArgument(4,(v5_OverallDepth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_BottomFlangeThickness)); if (v8_BottomFlangeFilletRadius) { e->setArgument(7,(*v8_BottomFlangeFilletRadius)); } else { e->setArgument(7); } e->setArgument(8,(v9_TopFlangeWidth)); if (v10_TopFlangeThickness) { e->setArgument(9,(*v10_TopFlangeThickness)); } else { e->setArgument(9); } if (v11_TopFlangeFilletRadius) { e->setArgument(10,(*v11_TopFlangeFilletRadius)); } else { e->setArgument(10); } if (v12_BottomFlangeEdgeRadius) { e->setArgument(11,(*v12_BottomFlangeEdgeRadius)); } else { e->setArgument(11); } if (v13_BottomFlangeSlope) { e->setArgument(12,(*v13_BottomFlangeSlope)); } else { e->setArgument(12); } if (v14_TopFlangeEdgeRadius) { e->setArgument(13,(*v14_TopFlangeEdgeRadius)); } else { e->setArgument(13); } if (v15_TopFlangeSlope) { e->setArgument(14,(*v15_TopFlangeSlope)); } else { e->setArgument(14); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAudioVisualAppliance
bool IfcAudioVisualAppliance::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum IfcAudioVisualAppliance::PredefinedType() const { return IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcAudioVisualAppliance::setPredefinedType(IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAudioVisualApplianceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAudioVisualAppliance::declaration() const { return *IfcAudioVisualAppliance_type; }
Type::Enum IfcAudioVisualAppliance::Class() { return Type::IfcAudioVisualAppliance; }
IfcAudioVisualAppliance::IfcAudioVisualAppliance(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAudioVisualAppliance)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAudioVisualAppliance::IfcAudioVisualAppliance(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcAudioVisualApplianceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAudioVisualApplianceType
IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum IfcAudioVisualApplianceType::PredefinedType() const { return IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcAudioVisualApplianceType::setPredefinedType(IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAudioVisualApplianceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcAudioVisualApplianceType::declaration() const { return *IfcAudioVisualApplianceType_type; }
Type::Enum IfcAudioVisualApplianceType::Class() { return Type::IfcAudioVisualApplianceType; }
IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAudioVisualApplianceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcAudioVisualApplianceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAxis1Placement
bool IfcAxis1Placement::hasAxis() const { return !data_->getArgument(1)->isNull(); }
IfcDirection* IfcAxis1Placement::Axis() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcAxis1Placement::setAxis(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcAxis1Placement::declaration() const { return *IfcAxis1Placement_type; }
Type::Enum IfcAxis1Placement::Class() { return Type::IfcAxis1Placement; }
IfcAxis1Placement::IfcAxis1Placement(IfcAbstractEntity* e) : IfcPlacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAxis1Placement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAxis1Placement::IfcAxis1Placement(IfcCartesianPoint* v1_Location, IfcDirection* v2_Axis) : IfcPlacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Location)); e->setArgument(1,(v2_Axis)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAxis2Placement2D
bool IfcAxis2Placement2D::hasRefDirection() const { return !data_->getArgument(1)->isNull(); }
IfcDirection* IfcAxis2Placement2D::RefDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcAxis2Placement2D::setRefDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcAxis2Placement2D::declaration() const { return *IfcAxis2Placement2D_type; }
Type::Enum IfcAxis2Placement2D::Class() { return Type::IfcAxis2Placement2D; }
IfcAxis2Placement2D::IfcAxis2Placement2D(IfcAbstractEntity* e) : IfcPlacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAxis2Placement2D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAxis2Placement2D::IfcAxis2Placement2D(IfcCartesianPoint* v1_Location, IfcDirection* v2_RefDirection) : IfcPlacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Location)); e->setArgument(1,(v2_RefDirection)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcAxis2Placement3D
bool IfcAxis2Placement3D::hasAxis() const { return !data_->getArgument(1)->isNull(); }
IfcDirection* IfcAxis2Placement3D::Axis() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcAxis2Placement3D::setAxis(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcAxis2Placement3D::hasRefDirection() const { return !data_->getArgument(2)->isNull(); }
IfcDirection* IfcAxis2Placement3D::RefDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcAxis2Placement3D::setRefDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcAxis2Placement3D::declaration() const { return *IfcAxis2Placement3D_type; }
Type::Enum IfcAxis2Placement3D::Class() { return Type::IfcAxis2Placement3D; }
IfcAxis2Placement3D::IfcAxis2Placement3D(IfcAbstractEntity* e) : IfcPlacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcAxis2Placement3D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcAxis2Placement3D::IfcAxis2Placement3D(IfcCartesianPoint* v1_Location, IfcDirection* v2_Axis, IfcDirection* v3_RefDirection) : IfcPlacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Location)); e->setArgument(1,(v2_Axis)); e->setArgument(2,(v3_RefDirection)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBSplineCurve
int IfcBSplineCurve::Degree() const { return *data_->getArgument(0); }
void IfcBSplineCurve::setDegree(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcCartesianPoint >::ptr IfcBSplineCurve::ControlPointsList() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcCartesianPoint>(); }
void IfcBSplineCurve::setControlPointsList(IfcTemplatedEntityList< IfcCartesianPoint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
IfcBSplineCurveForm::IfcBSplineCurveForm IfcBSplineCurve::CurveForm() const { return IfcBSplineCurveForm::FromString(*data_->getArgument(2)); }
void IfcBSplineCurve::setCurveForm(IfcBSplineCurveForm::IfcBSplineCurveForm v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcBSplineCurveForm::ToString(v)); }
boost::logic::tribool IfcBSplineCurve::ClosedCurve() const { return *data_->getArgument(3); }
void IfcBSplineCurve::setClosedCurve(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
boost::logic::tribool IfcBSplineCurve::SelfIntersect() const { return *data_->getArgument(4); }
void IfcBSplineCurve::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcBSplineCurve::declaration() const { return *IfcBSplineCurve_type; }
Type::Enum IfcBSplineCurve::Class() { return Type::IfcBSplineCurve; }
IfcBSplineCurve::IfcBSplineCurve(IfcAbstractEntity* e) : IfcBoundedCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBSplineCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBSplineCurve::IfcBSplineCurve(int v1_Degree, IfcTemplatedEntityList< IfcCartesianPoint >::ptr v2_ControlPointsList, IfcBSplineCurveForm::IfcBSplineCurveForm v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect) : IfcBoundedCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Degree)); e->setArgument(1,(v2_ControlPointsList)->generalize()); e->setArgument(2,v3_CurveForm,IfcBSplineCurveForm::ToString(v3_CurveForm)); e->setArgument(3,(v4_ClosedCurve)); e->setArgument(4,(v5_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBSplineCurveWithKnots
std::vector< int > /*[2:?]*/ IfcBSplineCurveWithKnots::KnotMultiplicities() const { return *data_->getArgument(5); }
void IfcBSplineCurveWithKnots::setKnotMultiplicities(std::vector< int > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
std::vector< double > /*[2:?]*/ IfcBSplineCurveWithKnots::Knots() const { return *data_->getArgument(6); }
void IfcBSplineCurveWithKnots::setKnots(std::vector< double > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcKnotType::IfcKnotType IfcBSplineCurveWithKnots::KnotSpec() const { return IfcKnotType::FromString(*data_->getArgument(7)); }
void IfcBSplineCurveWithKnots::setKnotSpec(IfcKnotType::IfcKnotType v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcKnotType::ToString(v)); }


const IfcParse::entity& IfcBSplineCurveWithKnots::declaration() const { return *IfcBSplineCurveWithKnots_type; }
Type::Enum IfcBSplineCurveWithKnots::Class() { return Type::IfcBSplineCurveWithKnots; }
IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(IfcAbstractEntity* e) : IfcBSplineCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBSplineCurveWithKnots)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(int v1_Degree, IfcTemplatedEntityList< IfcCartesianPoint >::ptr v2_ControlPointsList, IfcBSplineCurveForm::IfcBSplineCurveForm v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, IfcKnotType::IfcKnotType v8_KnotSpec) : IfcBSplineCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Degree)); e->setArgument(1,(v2_ControlPointsList)->generalize()); e->setArgument(2,v3_CurveForm,IfcBSplineCurveForm::ToString(v3_CurveForm)); e->setArgument(3,(v4_ClosedCurve)); e->setArgument(4,(v5_SelfIntersect)); e->setArgument(5,(v6_KnotMultiplicities)); e->setArgument(6,(v7_Knots)); e->setArgument(7,v8_KnotSpec,IfcKnotType::ToString(v8_KnotSpec)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBSplineSurface
int IfcBSplineSurface::UDegree() const { return *data_->getArgument(0); }
void IfcBSplineSurface::setUDegree(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
int IfcBSplineSurface::VDegree() const { return *data_->getArgument(1); }
void IfcBSplineSurface::setVDegree(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityListList< IfcCartesianPoint >::ptr IfcBSplineSurface::ControlPointsList() const { IfcEntityListList::ptr es = *data_->getArgument(2); return es->as<IfcCartesianPoint>(); }
void IfcBSplineSurface::setControlPointsList(IfcTemplatedEntityListList< IfcCartesianPoint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }
IfcBSplineSurfaceForm::IfcBSplineSurfaceForm IfcBSplineSurface::SurfaceForm() const { return IfcBSplineSurfaceForm::FromString(*data_->getArgument(3)); }
void IfcBSplineSurface::setSurfaceForm(IfcBSplineSurfaceForm::IfcBSplineSurfaceForm v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcBSplineSurfaceForm::ToString(v)); }
boost::logic::tribool IfcBSplineSurface::UClosed() const { return *data_->getArgument(4); }
void IfcBSplineSurface::setUClosed(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
boost::logic::tribool IfcBSplineSurface::VClosed() const { return *data_->getArgument(5); }
void IfcBSplineSurface::setVClosed(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
boost::logic::tribool IfcBSplineSurface::SelfIntersect() const { return *data_->getArgument(6); }
void IfcBSplineSurface::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcBSplineSurface::declaration() const { return *IfcBSplineSurface_type; }
Type::Enum IfcBSplineSurface::Class() { return Type::IfcBSplineSurface; }
IfcBSplineSurface::IfcBSplineSurface(IfcAbstractEntity* e) : IfcBoundedSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBSplineSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBSplineSurface::IfcBSplineSurface(int v1_UDegree, int v2_VDegree, IfcTemplatedEntityListList< IfcCartesianPoint >::ptr v3_ControlPointsList, IfcBSplineSurfaceForm::IfcBSplineSurfaceForm v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect) : IfcBoundedSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_UDegree)); e->setArgument(1,(v2_VDegree)); e->setArgument(2,(v3_ControlPointsList)->generalize()); e->setArgument(3,v4_SurfaceForm,IfcBSplineSurfaceForm::ToString(v4_SurfaceForm)); e->setArgument(4,(v5_UClosed)); e->setArgument(5,(v6_VClosed)); e->setArgument(6,(v7_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBSplineSurfaceWithKnots
std::vector< int > /*[2:?]*/ IfcBSplineSurfaceWithKnots::UMultiplicities() const { return *data_->getArgument(7); }
void IfcBSplineSurfaceWithKnots::setUMultiplicities(std::vector< int > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
std::vector< int > /*[2:?]*/ IfcBSplineSurfaceWithKnots::VMultiplicities() const { return *data_->getArgument(8); }
void IfcBSplineSurfaceWithKnots::setVMultiplicities(std::vector< int > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
std::vector< double > /*[2:?]*/ IfcBSplineSurfaceWithKnots::UKnots() const { return *data_->getArgument(9); }
void IfcBSplineSurfaceWithKnots::setUKnots(std::vector< double > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
std::vector< double > /*[2:?]*/ IfcBSplineSurfaceWithKnots::VKnots() const { return *data_->getArgument(10); }
void IfcBSplineSurfaceWithKnots::setVKnots(std::vector< double > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
IfcKnotType::IfcKnotType IfcBSplineSurfaceWithKnots::KnotSpec() const { return IfcKnotType::FromString(*data_->getArgument(11)); }
void IfcBSplineSurfaceWithKnots::setKnotSpec(IfcKnotType::IfcKnotType v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcKnotType::ToString(v)); }


const IfcParse::entity& IfcBSplineSurfaceWithKnots::declaration() const { return *IfcBSplineSurfaceWithKnots_type; }
Type::Enum IfcBSplineSurfaceWithKnots::Class() { return Type::IfcBSplineSurfaceWithKnots; }
IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(IfcAbstractEntity* e) : IfcBSplineSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBSplineSurfaceWithKnots)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, IfcTemplatedEntityListList< IfcCartesianPoint >::ptr v3_ControlPointsList, IfcBSplineSurfaceForm::IfcBSplineSurfaceForm v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, IfcKnotType::IfcKnotType v12_KnotSpec) : IfcBSplineSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_UDegree)); e->setArgument(1,(v2_VDegree)); e->setArgument(2,(v3_ControlPointsList)->generalize()); e->setArgument(3,v4_SurfaceForm,IfcBSplineSurfaceForm::ToString(v4_SurfaceForm)); e->setArgument(4,(v5_UClosed)); e->setArgument(5,(v6_VClosed)); e->setArgument(6,(v7_SelfIntersect)); e->setArgument(7,(v8_UMultiplicities)); e->setArgument(8,(v9_VMultiplicities)); e->setArgument(9,(v10_UKnots)); e->setArgument(10,(v11_VKnots)); e->setArgument(11,v12_KnotSpec,IfcKnotType::ToString(v12_KnotSpec)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBeam
bool IfcBeam::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcBeamTypeEnum::IfcBeamTypeEnum IfcBeam::PredefinedType() const { return IfcBeamTypeEnum::FromString(*data_->getArgument(8)); }
void IfcBeam::setPredefinedType(IfcBeamTypeEnum::IfcBeamTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcBeamTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBeam::declaration() const { return *IfcBeam_type; }
Type::Enum IfcBeam::Class() { return Type::IfcBeam; }
IfcBeam::IfcBeam(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBeam)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBeam::IfcBeam(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcBeamTypeEnum::IfcBeamTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcBeamTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBeamStandardCase


const IfcParse::entity& IfcBeamStandardCase::declaration() const { return *IfcBeamStandardCase_type; }
Type::Enum IfcBeamStandardCase::Class() { return Type::IfcBeamStandardCase; }
IfcBeamStandardCase::IfcBeamStandardCase(IfcAbstractEntity* e) : IfcBeam((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBeamStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBeamStandardCase::IfcBeamStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcBeamTypeEnum::IfcBeamTypeEnum > v9_PredefinedType) : IfcBeam((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcBeamTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBeamType
IfcBeamTypeEnum::IfcBeamTypeEnum IfcBeamType::PredefinedType() const { return IfcBeamTypeEnum::FromString(*data_->getArgument(9)); }
void IfcBeamType::setPredefinedType(IfcBeamTypeEnum::IfcBeamTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcBeamTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBeamType::declaration() const { return *IfcBeamType_type; }
Type::Enum IfcBeamType::Class() { return Type::IfcBeamType; }
IfcBeamType::IfcBeamType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBeamType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBeamType::IfcBeamType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcBeamTypeEnum::IfcBeamTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcBeamTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBlobTexture
std::string IfcBlobTexture::RasterFormat() const { return *data_->getArgument(5); }
void IfcBlobTexture::setRasterFormat(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
boost::dynamic_bitset<> IfcBlobTexture::RasterCode() const { return *data_->getArgument(6); }
void IfcBlobTexture::setRasterCode(boost::dynamic_bitset<> v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcBlobTexture::declaration() const { return *IfcBlobTexture_type; }
Type::Enum IfcBlobTexture::Class() { return Type::IfcBlobTexture; }
IfcBlobTexture::IfcBlobTexture(IfcAbstractEntity* e) : IfcSurfaceTexture((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBlobTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBlobTexture::IfcBlobTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode) : IfcSurfaceTexture((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); if (v3_Mode) { e->setArgument(2,(*v3_Mode)); } else { e->setArgument(2); } e->setArgument(3,(v4_TextureTransform)); if (v5_Parameter) { e->setArgument(4,(*v5_Parameter)); } else { e->setArgument(4); } e->setArgument(5,(v6_RasterFormat)); e->setArgument(6,(v7_RasterCode)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBlock
double IfcBlock::XLength() const { return *data_->getArgument(1); }
void IfcBlock::setXLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcBlock::YLength() const { return *data_->getArgument(2); }
void IfcBlock::setYLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcBlock::ZLength() const { return *data_->getArgument(3); }
void IfcBlock::setZLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcBlock::declaration() const { return *IfcBlock_type; }
Type::Enum IfcBlock::Class() { return Type::IfcBlock; }
IfcBlock::IfcBlock(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBlock)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBlock::IfcBlock(IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_XLength)); e->setArgument(2,(v3_YLength)); e->setArgument(3,(v4_ZLength)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoiler
bool IfcBoiler::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcBoilerTypeEnum::IfcBoilerTypeEnum IfcBoiler::PredefinedType() const { return IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcBoiler::setPredefinedType(IfcBoilerTypeEnum::IfcBoilerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcBoilerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBoiler::declaration() const { return *IfcBoiler_type; }
Type::Enum IfcBoiler::Class() { return Type::IfcBoiler; }
IfcBoiler::IfcBoiler(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoiler)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoiler::IfcBoiler(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcBoilerTypeEnum::IfcBoilerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcBoilerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoilerType
IfcBoilerTypeEnum::IfcBoilerTypeEnum IfcBoilerType::PredefinedType() const { return IfcBoilerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcBoilerType::setPredefinedType(IfcBoilerTypeEnum::IfcBoilerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcBoilerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBoilerType::declaration() const { return *IfcBoilerType_type; }
Type::Enum IfcBoilerType::Class() { return Type::IfcBoilerType; }
IfcBoilerType::IfcBoilerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoilerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoilerType::IfcBoilerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcBoilerTypeEnum::IfcBoilerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcBoilerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBooleanClippingResult


const IfcParse::entity& IfcBooleanClippingResult::declaration() const { return *IfcBooleanClippingResult_type; }
Type::Enum IfcBooleanClippingResult::Class() { return Type::IfcBooleanClippingResult; }
IfcBooleanClippingResult::IfcBooleanClippingResult(IfcAbstractEntity* e) : IfcBooleanResult((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBooleanClippingResult)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBooleanClippingResult::IfcBooleanClippingResult(IfcBooleanOperator::IfcBooleanOperator v1_Operator, IfcBooleanOperand* v2_FirstOperand, IfcBooleanOperand* v3_SecondOperand) : IfcBooleanResult((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_Operator,IfcBooleanOperator::ToString(v1_Operator)); e->setArgument(1,(v2_FirstOperand)); e->setArgument(2,(v3_SecondOperand)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBooleanResult
IfcBooleanOperator::IfcBooleanOperator IfcBooleanResult::Operator() const { return IfcBooleanOperator::FromString(*data_->getArgument(0)); }
void IfcBooleanResult::setOperator(IfcBooleanOperator::IfcBooleanOperator v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcBooleanOperator::ToString(v)); }
IfcBooleanOperand* IfcBooleanResult::FirstOperand() const { return (IfcBooleanOperand*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcBooleanResult::setFirstOperand(IfcBooleanOperand* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcBooleanOperand* IfcBooleanResult::SecondOperand() const { return (IfcBooleanOperand*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcBooleanResult::setSecondOperand(IfcBooleanOperand* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcBooleanResult::declaration() const { return *IfcBooleanResult_type; }
Type::Enum IfcBooleanResult::Class() { return Type::IfcBooleanResult; }
IfcBooleanResult::IfcBooleanResult(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBooleanResult)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBooleanResult::IfcBooleanResult(IfcBooleanOperator::IfcBooleanOperator v1_Operator, IfcBooleanOperand* v2_FirstOperand, IfcBooleanOperand* v3_SecondOperand) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_Operator,IfcBooleanOperator::ToString(v1_Operator)); e->setArgument(1,(v2_FirstOperand)); e->setArgument(2,(v3_SecondOperand)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundaryCondition
bool IfcBoundaryCondition::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcBoundaryCondition::Name() const { return *data_->getArgument(0); }
void IfcBoundaryCondition::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcBoundaryCondition::declaration() const { return *IfcBoundaryCondition_type; }
Type::Enum IfcBoundaryCondition::Class() { return Type::IfcBoundaryCondition; }
IfcBoundaryCondition::IfcBoundaryCondition(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcBoundaryCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundaryCondition::IfcBoundaryCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundaryCurve


const IfcParse::entity& IfcBoundaryCurve::declaration() const { return *IfcBoundaryCurve_type; }
Type::Enum IfcBoundaryCurve::Class() { return Type::IfcBoundaryCurve; }
IfcBoundaryCurve::IfcBoundaryCurve(IfcAbstractEntity* e) : IfcCompositeCurveOnSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundaryCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundaryCurve::IfcBoundaryCurve(IfcTemplatedEntityList< IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurveOnSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Segments)->generalize()); e->setArgument(1,(v2_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundaryEdgeCondition
bool IfcBoundaryEdgeCondition::hasTranslationalStiffnessByLengthX() const { return !data_->getArgument(1)->isNull(); }
IfcModulusOfTranslationalSubgradeReactionSelect* IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthX() const { return (IfcModulusOfTranslationalSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthX(IfcModulusOfTranslationalSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcBoundaryEdgeCondition::hasTranslationalStiffnessByLengthY() const { return !data_->getArgument(2)->isNull(); }
IfcModulusOfTranslationalSubgradeReactionSelect* IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthY() const { return (IfcModulusOfTranslationalSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthY(IfcModulusOfTranslationalSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcBoundaryEdgeCondition::hasTranslationalStiffnessByLengthZ() const { return !data_->getArgument(3)->isNull(); }
IfcModulusOfTranslationalSubgradeReactionSelect* IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthZ() const { return (IfcModulusOfTranslationalSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthZ(IfcModulusOfTranslationalSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcBoundaryEdgeCondition::hasRotationalStiffnessByLengthX() const { return !data_->getArgument(4)->isNull(); }
IfcModulusOfRotationalSubgradeReactionSelect* IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { return (IfcModulusOfRotationalSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(IfcModulusOfRotationalSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcBoundaryEdgeCondition::hasRotationalStiffnessByLengthY() const { return !data_->getArgument(5)->isNull(); }
IfcModulusOfRotationalSubgradeReactionSelect* IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { return (IfcModulusOfRotationalSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(IfcModulusOfRotationalSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcBoundaryEdgeCondition::hasRotationalStiffnessByLengthZ() const { return !data_->getArgument(6)->isNull(); }
IfcModulusOfRotationalSubgradeReactionSelect* IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { return (IfcModulusOfRotationalSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(IfcModulusOfRotationalSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcBoundaryEdgeCondition::declaration() const { return *IfcBoundaryEdgeCondition_type; }
Type::Enum IfcBoundaryEdgeCondition::Class() { return Type::IfcBoundaryEdgeCondition; }
IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(IfcAbstractEntity* e) : IfcBoundaryCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundaryEdgeCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(boost::optional< std::string > v1_Name, IfcModulusOfTranslationalSubgradeReactionSelect* v2_TranslationalStiffnessByLengthX, IfcModulusOfTranslationalSubgradeReactionSelect* v3_TranslationalStiffnessByLengthY, IfcModulusOfTranslationalSubgradeReactionSelect* v4_TranslationalStiffnessByLengthZ, IfcModulusOfRotationalSubgradeReactionSelect* v5_RotationalStiffnessByLengthX, IfcModulusOfRotationalSubgradeReactionSelect* v6_RotationalStiffnessByLengthY, IfcModulusOfRotationalSubgradeReactionSelect* v7_RotationalStiffnessByLengthZ) : IfcBoundaryCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_TranslationalStiffnessByLengthX)); e->setArgument(2,(v3_TranslationalStiffnessByLengthY)); e->setArgument(3,(v4_TranslationalStiffnessByLengthZ)); e->setArgument(4,(v5_RotationalStiffnessByLengthX)); e->setArgument(5,(v6_RotationalStiffnessByLengthY)); e->setArgument(6,(v7_RotationalStiffnessByLengthZ)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundaryFaceCondition
bool IfcBoundaryFaceCondition::hasTranslationalStiffnessByAreaX() const { return !data_->getArgument(1)->isNull(); }
IfcModulusOfSubgradeReactionSelect* IfcBoundaryFaceCondition::TranslationalStiffnessByAreaX() const { return (IfcModulusOfSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaX(IfcModulusOfSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcBoundaryFaceCondition::hasTranslationalStiffnessByAreaY() const { return !data_->getArgument(2)->isNull(); }
IfcModulusOfSubgradeReactionSelect* IfcBoundaryFaceCondition::TranslationalStiffnessByAreaY() const { return (IfcModulusOfSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaY(IfcModulusOfSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcBoundaryFaceCondition::hasTranslationalStiffnessByAreaZ() const { return !data_->getArgument(3)->isNull(); }
IfcModulusOfSubgradeReactionSelect* IfcBoundaryFaceCondition::TranslationalStiffnessByAreaZ() const { return (IfcModulusOfSubgradeReactionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaZ(IfcModulusOfSubgradeReactionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcBoundaryFaceCondition::declaration() const { return *IfcBoundaryFaceCondition_type; }
Type::Enum IfcBoundaryFaceCondition::Class() { return Type::IfcBoundaryFaceCondition; }
IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(IfcAbstractEntity* e) : IfcBoundaryCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundaryFaceCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(boost::optional< std::string > v1_Name, IfcModulusOfSubgradeReactionSelect* v2_TranslationalStiffnessByAreaX, IfcModulusOfSubgradeReactionSelect* v3_TranslationalStiffnessByAreaY, IfcModulusOfSubgradeReactionSelect* v4_TranslationalStiffnessByAreaZ) : IfcBoundaryCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_TranslationalStiffnessByAreaX)); e->setArgument(2,(v3_TranslationalStiffnessByAreaY)); e->setArgument(3,(v4_TranslationalStiffnessByAreaZ)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundaryNodeCondition
bool IfcBoundaryNodeCondition::hasTranslationalStiffnessX() const { return !data_->getArgument(1)->isNull(); }
IfcTranslationalStiffnessSelect* IfcBoundaryNodeCondition::TranslationalStiffnessX() const { return (IfcTranslationalStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcBoundaryNodeCondition::setTranslationalStiffnessX(IfcTranslationalStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcBoundaryNodeCondition::hasTranslationalStiffnessY() const { return !data_->getArgument(2)->isNull(); }
IfcTranslationalStiffnessSelect* IfcBoundaryNodeCondition::TranslationalStiffnessY() const { return (IfcTranslationalStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcBoundaryNodeCondition::setTranslationalStiffnessY(IfcTranslationalStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcBoundaryNodeCondition::hasTranslationalStiffnessZ() const { return !data_->getArgument(3)->isNull(); }
IfcTranslationalStiffnessSelect* IfcBoundaryNodeCondition::TranslationalStiffnessZ() const { return (IfcTranslationalStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcBoundaryNodeCondition::setTranslationalStiffnessZ(IfcTranslationalStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcBoundaryNodeCondition::hasRotationalStiffnessX() const { return !data_->getArgument(4)->isNull(); }
IfcRotationalStiffnessSelect* IfcBoundaryNodeCondition::RotationalStiffnessX() const { return (IfcRotationalStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcBoundaryNodeCondition::setRotationalStiffnessX(IfcRotationalStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcBoundaryNodeCondition::hasRotationalStiffnessY() const { return !data_->getArgument(5)->isNull(); }
IfcRotationalStiffnessSelect* IfcBoundaryNodeCondition::RotationalStiffnessY() const { return (IfcRotationalStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcBoundaryNodeCondition::setRotationalStiffnessY(IfcRotationalStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcBoundaryNodeCondition::hasRotationalStiffnessZ() const { return !data_->getArgument(6)->isNull(); }
IfcRotationalStiffnessSelect* IfcBoundaryNodeCondition::RotationalStiffnessZ() const { return (IfcRotationalStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcBoundaryNodeCondition::setRotationalStiffnessZ(IfcRotationalStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcBoundaryNodeCondition::declaration() const { return *IfcBoundaryNodeCondition_type; }
Type::Enum IfcBoundaryNodeCondition::Class() { return Type::IfcBoundaryNodeCondition; }
IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(IfcAbstractEntity* e) : IfcBoundaryCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundaryNodeCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(boost::optional< std::string > v1_Name, IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ) : IfcBoundaryCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_TranslationalStiffnessX)); e->setArgument(2,(v3_TranslationalStiffnessY)); e->setArgument(3,(v4_TranslationalStiffnessZ)); e->setArgument(4,(v5_RotationalStiffnessX)); e->setArgument(5,(v6_RotationalStiffnessY)); e->setArgument(6,(v7_RotationalStiffnessZ)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundaryNodeConditionWarping
bool IfcBoundaryNodeConditionWarping::hasWarpingStiffness() const { return !data_->getArgument(7)->isNull(); }
IfcWarpingStiffnessSelect* IfcBoundaryNodeConditionWarping::WarpingStiffness() const { return (IfcWarpingStiffnessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcBoundaryNodeConditionWarping::setWarpingStiffness(IfcWarpingStiffnessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcBoundaryNodeConditionWarping::declaration() const { return *IfcBoundaryNodeConditionWarping_type; }
Type::Enum IfcBoundaryNodeConditionWarping::Class() { return Type::IfcBoundaryNodeConditionWarping; }
IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(IfcAbstractEntity* e) : IfcBoundaryNodeCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundaryNodeConditionWarping)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(boost::optional< std::string > v1_Name, IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ, IfcWarpingStiffnessSelect* v8_WarpingStiffness) : IfcBoundaryNodeCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_TranslationalStiffnessX)); e->setArgument(2,(v3_TranslationalStiffnessY)); e->setArgument(3,(v4_TranslationalStiffnessZ)); e->setArgument(4,(v5_RotationalStiffnessX)); e->setArgument(5,(v6_RotationalStiffnessY)); e->setArgument(6,(v7_RotationalStiffnessZ)); e->setArgument(7,(v8_WarpingStiffness)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundedCurve


const IfcParse::entity& IfcBoundedCurve::declaration() const { return *IfcBoundedCurve_type; }
Type::Enum IfcBoundedCurve::Class() { return Type::IfcBoundedCurve; }
IfcBoundedCurve::IfcBoundedCurve(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundedCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundedCurve::IfcBoundedCurve() : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundedSurface


const IfcParse::entity& IfcBoundedSurface::declaration() const { return *IfcBoundedSurface_type; }
Type::Enum IfcBoundedSurface::Class() { return Type::IfcBoundedSurface; }
IfcBoundedSurface::IfcBoundedSurface(IfcAbstractEntity* e) : IfcSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundedSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundedSurface::IfcBoundedSurface() : IfcSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoundingBox
IfcCartesianPoint* IfcBoundingBox::Corner() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcBoundingBox::setCorner(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcBoundingBox::XDim() const { return *data_->getArgument(1); }
void IfcBoundingBox::setXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcBoundingBox::YDim() const { return *data_->getArgument(2); }
void IfcBoundingBox::setYDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcBoundingBox::ZDim() const { return *data_->getArgument(3); }
void IfcBoundingBox::setZDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcBoundingBox::declaration() const { return *IfcBoundingBox_type; }
Type::Enum IfcBoundingBox::Class() { return Type::IfcBoundingBox; }
IfcBoundingBox::IfcBoundingBox(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoundingBox)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoundingBox::IfcBoundingBox(IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Corner)); e->setArgument(1,(v2_XDim)); e->setArgument(2,(v3_YDim)); e->setArgument(3,(v4_ZDim)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBoxedHalfSpace
IfcBoundingBox* IfcBoxedHalfSpace::Enclosure() const { return (IfcBoundingBox*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcBoxedHalfSpace::setEnclosure(IfcBoundingBox* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcBoxedHalfSpace::declaration() const { return *IfcBoxedHalfSpace_type; }
Type::Enum IfcBoxedHalfSpace::Class() { return Type::IfcBoxedHalfSpace; }
IfcBoxedHalfSpace::IfcBoxedHalfSpace(IfcAbstractEntity* e) : IfcHalfSpaceSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBoxedHalfSpace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBoxedHalfSpace::IfcBoxedHalfSpace(IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, IfcBoundingBox* v3_Enclosure) : IfcHalfSpaceSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BaseSurface)); e->setArgument(1,(v2_AgreementFlag)); e->setArgument(2,(v3_Enclosure)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuilding
bool IfcBuilding::hasElevationOfRefHeight() const { return !data_->getArgument(9)->isNull(); }
double IfcBuilding::ElevationOfRefHeight() const { return *data_->getArgument(9); }
void IfcBuilding::setElevationOfRefHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcBuilding::hasElevationOfTerrain() const { return !data_->getArgument(10)->isNull(); }
double IfcBuilding::ElevationOfTerrain() const { return *data_->getArgument(10); }
void IfcBuilding::setElevationOfTerrain(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcBuilding::hasBuildingAddress() const { return !data_->getArgument(11)->isNull(); }
IfcPostalAddress* IfcBuilding::BuildingAddress() const { return (IfcPostalAddress*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcBuilding::setBuildingAddress(IfcPostalAddress* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcBuilding::declaration() const { return *IfcBuilding_type; }
Type::Enum IfcBuilding::Class() { return Type::IfcBuilding; }
IfcBuilding::IfcBuilding(IfcAbstractEntity* e) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuilding)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuilding::IfcBuilding(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcElementCompositionEnum::IfcElementCompositionEnum > v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, IfcPostalAddress* v12_BuildingAddress) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_CompositionType) { e->setArgument(8,*v9_CompositionType,IfcElementCompositionEnum::ToString(*v9_CompositionType)); } else { e->setArgument(8); } if (v10_ElevationOfRefHeight) { e->setArgument(9,(*v10_ElevationOfRefHeight)); } else { e->setArgument(9); } if (v11_ElevationOfTerrain) { e->setArgument(10,(*v11_ElevationOfTerrain)); } else { e->setArgument(10); } e->setArgument(11,(v12_BuildingAddress)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingElement


const IfcParse::entity& IfcBuildingElement::declaration() const { return *IfcBuildingElement_type; }
Type::Enum IfcBuildingElement::Class() { return Type::IfcBuildingElement; }
IfcBuildingElement::IfcBuildingElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingElement::IfcBuildingElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingElementPart
bool IfcBuildingElementPart::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum IfcBuildingElementPart::PredefinedType() const { return IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); }
void IfcBuildingElementPart::setPredefinedType(IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcBuildingElementPartTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBuildingElementPart::declaration() const { return *IfcBuildingElementPart_type; }
Type::Enum IfcBuildingElementPart::Class() { return Type::IfcBuildingElementPart; }
IfcBuildingElementPart::IfcBuildingElementPart(IfcAbstractEntity* e) : IfcElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingElementPart)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingElementPart::IfcBuildingElementPart(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum > v9_PredefinedType) : IfcElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcBuildingElementPartTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingElementPartType
IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum IfcBuildingElementPartType::PredefinedType() const { return IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(9)); }
void IfcBuildingElementPartType::setPredefinedType(IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcBuildingElementPartTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBuildingElementPartType::declaration() const { return *IfcBuildingElementPartType_type; }
Type::Enum IfcBuildingElementPartType::Class() { return Type::IfcBuildingElementPartType; }
IfcBuildingElementPartType::IfcBuildingElementPartType(IfcAbstractEntity* e) : IfcElementComponentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingElementPartType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum v10_PredefinedType) : IfcElementComponentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcBuildingElementPartTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingElementProxy
bool IfcBuildingElementProxy::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum IfcBuildingElementProxy::PredefinedType() const { return IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); }
void IfcBuildingElementProxy::setPredefinedType(IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcBuildingElementProxyTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBuildingElementProxy::declaration() const { return *IfcBuildingElementProxy_type; }
Type::Enum IfcBuildingElementProxy::Class() { return Type::IfcBuildingElementProxy; }
IfcBuildingElementProxy::IfcBuildingElementProxy(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingElementProxy)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingElementProxy::IfcBuildingElementProxy(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcBuildingElementProxyTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingElementProxyType
IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum IfcBuildingElementProxyType::PredefinedType() const { return IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(9)); }
void IfcBuildingElementProxyType::setPredefinedType(IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcBuildingElementProxyTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBuildingElementProxyType::declaration() const { return *IfcBuildingElementProxyType_type; }
Type::Enum IfcBuildingElementProxyType::Class() { return Type::IfcBuildingElementProxyType; }
IfcBuildingElementProxyType::IfcBuildingElementProxyType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingElementProxyType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcBuildingElementProxyTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingElementType


const IfcParse::entity& IfcBuildingElementType::declaration() const { return *IfcBuildingElementType_type; }
Type::Enum IfcBuildingElementType::Class() { return Type::IfcBuildingElementType; }
IfcBuildingElementType::IfcBuildingElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingElementType::IfcBuildingElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingStorey
bool IfcBuildingStorey::hasElevation() const { return !data_->getArgument(9)->isNull(); }
double IfcBuildingStorey::Elevation() const { return *data_->getArgument(9); }
void IfcBuildingStorey::setElevation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcBuildingStorey::declaration() const { return *IfcBuildingStorey_type; }
Type::Enum IfcBuildingStorey::Class() { return Type::IfcBuildingStorey; }
IfcBuildingStorey::IfcBuildingStorey(IfcAbstractEntity* e) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingStorey)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcElementCompositionEnum::IfcElementCompositionEnum > v9_CompositionType, boost::optional< double > v10_Elevation) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_CompositionType) { e->setArgument(8,*v9_CompositionType,IfcElementCompositionEnum::ToString(*v9_CompositionType)); } else { e->setArgument(8); } if (v10_Elevation) { e->setArgument(9,(*v10_Elevation)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBuildingSystem
bool IfcBuildingSystem::hasPredefinedType() const { return !data_->getArgument(5)->isNull(); }
IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum IfcBuildingSystem::PredefinedType() const { return IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); }
void IfcBuildingSystem::setPredefinedType(IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcBuildingSystemTypeEnum::ToString(v)); }
bool IfcBuildingSystem::hasLongName() const { return !data_->getArgument(6)->isNull(); }
std::string IfcBuildingSystem::LongName() const { return *data_->getArgument(6); }
void IfcBuildingSystem::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcBuildingSystem::declaration() const { return *IfcBuildingSystem_type; }
Type::Enum IfcBuildingSystem::Class() { return Type::IfcBuildingSystem; }
IfcBuildingSystem::IfcBuildingSystem(IfcAbstractEntity* e) : IfcSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBuildingSystem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_PredefinedType) { e->setArgument(5,*v6_PredefinedType,IfcBuildingSystemTypeEnum::ToString(*v6_PredefinedType)); } else { e->setArgument(5); } if (v7_LongName) { e->setArgument(6,(*v7_LongName)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBurner
bool IfcBurner::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcBurnerTypeEnum::IfcBurnerTypeEnum IfcBurner::PredefinedType() const { return IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcBurner::setPredefinedType(IfcBurnerTypeEnum::IfcBurnerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcBurnerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBurner::declaration() const { return *IfcBurner_type; }
Type::Enum IfcBurner::Class() { return Type::IfcBurner; }
IfcBurner::IfcBurner(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBurner)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBurner::IfcBurner(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcBurnerTypeEnum::IfcBurnerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcBurnerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcBurnerType
IfcBurnerTypeEnum::IfcBurnerTypeEnum IfcBurnerType::PredefinedType() const { return IfcBurnerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcBurnerType::setPredefinedType(IfcBurnerTypeEnum::IfcBurnerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcBurnerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcBurnerType::declaration() const { return *IfcBurnerType_type; }
Type::Enum IfcBurnerType::Class() { return Type::IfcBurnerType; }
IfcBurnerType::IfcBurnerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcBurnerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcBurnerType::IfcBurnerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcBurnerTypeEnum::IfcBurnerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcBurnerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCShapeProfileDef
double IfcCShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcCShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcCShapeProfileDef::Width() const { return *data_->getArgument(4); }
void IfcCShapeProfileDef::setWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcCShapeProfileDef::WallThickness() const { return *data_->getArgument(5); }
void IfcCShapeProfileDef::setWallThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcCShapeProfileDef::Girth() const { return *data_->getArgument(6); }
void IfcCShapeProfileDef::setGirth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcCShapeProfileDef::hasInternalFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcCShapeProfileDef::InternalFilletRadius() const { return *data_->getArgument(7); }
void IfcCShapeProfileDef::setInternalFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcCShapeProfileDef::declaration() const { return *IfcCShapeProfileDef_type; }
Type::Enum IfcCShapeProfileDef::Class() { return Type::IfcCShapeProfileDef; }
IfcCShapeProfileDef::IfcCShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCShapeProfileDef::IfcCShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, boost::optional< double > v8_InternalFilletRadius) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_Width)); e->setArgument(5,(v6_WallThickness)); e->setArgument(6,(v7_Girth)); if (v8_InternalFilletRadius) { e->setArgument(7,(*v8_InternalFilletRadius)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableCarrierFitting
bool IfcCableCarrierFitting::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum IfcCableCarrierFitting::PredefinedType() const { return IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCableCarrierFitting::setPredefinedType(IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCableCarrierFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableCarrierFitting::declaration() const { return *IfcCableCarrierFitting_type; }
Type::Enum IfcCableCarrierFitting::Class() { return Type::IfcCableCarrierFitting; }
IfcCableCarrierFitting::IfcCableCarrierFitting(IfcAbstractEntity* e) : IfcFlowFitting((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableCarrierFitting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableCarrierFitting::IfcCableCarrierFitting(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum > v9_PredefinedType) : IfcFlowFitting((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCableCarrierFittingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableCarrierFittingType
IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum IfcCableCarrierFittingType::PredefinedType() const { return IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCableCarrierFittingType::setPredefinedType(IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCableCarrierFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableCarrierFittingType::declaration() const { return *IfcCableCarrierFittingType_type; }
Type::Enum IfcCableCarrierFittingType::Class() { return Type::IfcCableCarrierFittingType; }
IfcCableCarrierFittingType::IfcCableCarrierFittingType(IfcAbstractEntity* e) : IfcFlowFittingType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableCarrierFittingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum v10_PredefinedType) : IfcFlowFittingType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCableCarrierFittingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableCarrierSegment
bool IfcCableCarrierSegment::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum IfcCableCarrierSegment::PredefinedType() const { return IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCableCarrierSegment::setPredefinedType(IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCableCarrierSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableCarrierSegment::declaration() const { return *IfcCableCarrierSegment_type; }
Type::Enum IfcCableCarrierSegment::Class() { return Type::IfcCableCarrierSegment; }
IfcCableCarrierSegment::IfcCableCarrierSegment(IfcAbstractEntity* e) : IfcFlowSegment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableCarrierSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableCarrierSegment::IfcCableCarrierSegment(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum > v9_PredefinedType) : IfcFlowSegment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCableCarrierSegmentTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableCarrierSegmentType
IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum IfcCableCarrierSegmentType::PredefinedType() const { return IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCableCarrierSegmentType::setPredefinedType(IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCableCarrierSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableCarrierSegmentType::declaration() const { return *IfcCableCarrierSegmentType_type; }
Type::Enum IfcCableCarrierSegmentType::Class() { return Type::IfcCableCarrierSegmentType; }
IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(IfcAbstractEntity* e) : IfcFlowSegmentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableCarrierSegmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum v10_PredefinedType) : IfcFlowSegmentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCableCarrierSegmentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableFitting
bool IfcCableFitting::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCableFittingTypeEnum::IfcCableFittingTypeEnum IfcCableFitting::PredefinedType() const { return IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCableFitting::setPredefinedType(IfcCableFittingTypeEnum::IfcCableFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCableFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableFitting::declaration() const { return *IfcCableFitting_type; }
Type::Enum IfcCableFitting::Class() { return Type::IfcCableFitting; }
IfcCableFitting::IfcCableFitting(IfcAbstractEntity* e) : IfcFlowFitting((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableFitting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableFitting::IfcCableFitting(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCableFittingTypeEnum::IfcCableFittingTypeEnum > v9_PredefinedType) : IfcFlowFitting((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCableFittingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableFittingType
IfcCableFittingTypeEnum::IfcCableFittingTypeEnum IfcCableFittingType::PredefinedType() const { return IfcCableFittingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCableFittingType::setPredefinedType(IfcCableFittingTypeEnum::IfcCableFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCableFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableFittingType::declaration() const { return *IfcCableFittingType_type; }
Type::Enum IfcCableFittingType::Class() { return Type::IfcCableFittingType; }
IfcCableFittingType::IfcCableFittingType(IfcAbstractEntity* e) : IfcFlowFittingType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableFittingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCableFittingTypeEnum::IfcCableFittingTypeEnum v10_PredefinedType) : IfcFlowFittingType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCableFittingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableSegment
bool IfcCableSegment::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum IfcCableSegment::PredefinedType() const { return IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCableSegment::setPredefinedType(IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCableSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableSegment::declaration() const { return *IfcCableSegment_type; }
Type::Enum IfcCableSegment::Class() { return Type::IfcCableSegment; }
IfcCableSegment::IfcCableSegment(IfcAbstractEntity* e) : IfcFlowSegment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableSegment::IfcCableSegment(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum > v9_PredefinedType) : IfcFlowSegment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCableSegmentTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCableSegmentType
IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum IfcCableSegmentType::PredefinedType() const { return IfcCableSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCableSegmentType::setPredefinedType(IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCableSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCableSegmentType::declaration() const { return *IfcCableSegmentType_type; }
Type::Enum IfcCableSegmentType::Class() { return Type::IfcCableSegmentType; }
IfcCableSegmentType::IfcCableSegmentType(IfcAbstractEntity* e) : IfcFlowSegmentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCableSegmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum v10_PredefinedType) : IfcFlowSegmentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCableSegmentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianPoint
std::vector< double > /*[1:3]*/ IfcCartesianPoint::Coordinates() const { return *data_->getArgument(0); }
void IfcCartesianPoint::setCoordinates(std::vector< double > /*[1:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcCartesianPoint::declaration() const { return *IfcCartesianPoint_type; }
Type::Enum IfcCartesianPoint::Class() { return Type::IfcCartesianPoint; }
IfcCartesianPoint::IfcCartesianPoint(IfcAbstractEntity* e) : IfcPoint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianPoint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianPoint::IfcCartesianPoint(std::vector< double > /*[1:3]*/ v1_Coordinates) : IfcPoint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Coordinates)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianPointList


const IfcParse::entity& IfcCartesianPointList::declaration() const { return *IfcCartesianPointList_type; }
Type::Enum IfcCartesianPointList::Class() { return Type::IfcCartesianPointList; }
IfcCartesianPointList::IfcCartesianPointList(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianPointList)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianPointList2D
std::vector< std::vector< double > > IfcCartesianPointList2D::CoordList() const { return *data_->getArgument(0); }
void IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcCartesianPointList2D::declaration() const { return *IfcCartesianPointList2D_type; }
Type::Enum IfcCartesianPointList2D::Class() { return Type::IfcCartesianPointList2D; }
IfcCartesianPointList2D::IfcCartesianPointList2D(IfcAbstractEntity* e) : IfcCartesianPointList((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianPointList2D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::vector< double > > v1_CoordList) : IfcCartesianPointList((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CoordList)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianPointList3D
std::vector< std::vector< double > > IfcCartesianPointList3D::CoordList() const { return *data_->getArgument(0); }
void IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcCartesianPointList3D::declaration() const { return *IfcCartesianPointList3D_type; }
Type::Enum IfcCartesianPointList3D::Class() { return Type::IfcCartesianPointList3D; }
IfcCartesianPointList3D::IfcCartesianPointList3D(IfcAbstractEntity* e) : IfcCartesianPointList((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianPointList3D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianPointList3D::IfcCartesianPointList3D(std::vector< std::vector< double > > v1_CoordList) : IfcCartesianPointList((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CoordList)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianTransformationOperator
bool IfcCartesianTransformationOperator::hasAxis1() const { return !data_->getArgument(0)->isNull(); }
IfcDirection* IfcCartesianTransformationOperator::Axis1() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCartesianTransformationOperator::setAxis1(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcCartesianTransformationOperator::hasAxis2() const { return !data_->getArgument(1)->isNull(); }
IfcDirection* IfcCartesianTransformationOperator::Axis2() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCartesianTransformationOperator::setAxis2(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcCartesianPoint* IfcCartesianTransformationOperator::LocalOrigin() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcCartesianTransformationOperator::setLocalOrigin(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcCartesianTransformationOperator::hasScale() const { return !data_->getArgument(3)->isNull(); }
double IfcCartesianTransformationOperator::Scale() const { return *data_->getArgument(3); }
void IfcCartesianTransformationOperator::setScale(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcCartesianTransformationOperator::declaration() const { return *IfcCartesianTransformationOperator_type; }
Type::Enum IfcCartesianTransformationOperator::Class() { return Type::IfcCartesianTransformationOperator; }
IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianTransformationOperator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(IfcDirection* v1_Axis1, IfcDirection* v2_Axis2, IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Axis1)); e->setArgument(1,(v2_Axis2)); e->setArgument(2,(v3_LocalOrigin)); if (v4_Scale) { e->setArgument(3,(*v4_Scale)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianTransformationOperator2D


const IfcParse::entity& IfcCartesianTransformationOperator2D::declaration() const { return *IfcCartesianTransformationOperator2D_type; }
Type::Enum IfcCartesianTransformationOperator2D::Class() { return Type::IfcCartesianTransformationOperator2D; }
IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(IfcAbstractEntity* e) : IfcCartesianTransformationOperator((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianTransformationOperator2D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(IfcDirection* v1_Axis1, IfcDirection* v2_Axis2, IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcCartesianTransformationOperator((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Axis1)); e->setArgument(1,(v2_Axis2)); e->setArgument(2,(v3_LocalOrigin)); if (v4_Scale) { e->setArgument(3,(*v4_Scale)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianTransformationOperator2DnonUniform
bool IfcCartesianTransformationOperator2DnonUniform::hasScale2() const { return !data_->getArgument(4)->isNull(); }
double IfcCartesianTransformationOperator2DnonUniform::Scale2() const { return *data_->getArgument(4); }
void IfcCartesianTransformationOperator2DnonUniform::setScale2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IfcCartesianTransformationOperator2DnonUniform_type; }
Type::Enum IfcCartesianTransformationOperator2DnonUniform::Class() { return Type::IfcCartesianTransformationOperator2DnonUniform; }
IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(IfcAbstractEntity* e) : IfcCartesianTransformationOperator2D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianTransformationOperator2DnonUniform)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(IfcDirection* v1_Axis1, IfcDirection* v2_Axis2, IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2) : IfcCartesianTransformationOperator2D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Axis1)); e->setArgument(1,(v2_Axis2)); e->setArgument(2,(v3_LocalOrigin)); if (v4_Scale) { e->setArgument(3,(*v4_Scale)); } else { e->setArgument(3); } if (v5_Scale2) { e->setArgument(4,(*v5_Scale2)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianTransformationOperator3D
bool IfcCartesianTransformationOperator3D::hasAxis3() const { return !data_->getArgument(4)->isNull(); }
IfcDirection* IfcCartesianTransformationOperator3D::Axis3() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcCartesianTransformationOperator3D::setAxis3(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcCartesianTransformationOperator3D::declaration() const { return *IfcCartesianTransformationOperator3D_type; }
Type::Enum IfcCartesianTransformationOperator3D::Class() { return Type::IfcCartesianTransformationOperator3D; }
IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(IfcAbstractEntity* e) : IfcCartesianTransformationOperator((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianTransformationOperator3D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(IfcDirection* v1_Axis1, IfcDirection* v2_Axis2, IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, IfcDirection* v5_Axis3) : IfcCartesianTransformationOperator((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Axis1)); e->setArgument(1,(v2_Axis2)); e->setArgument(2,(v3_LocalOrigin)); if (v4_Scale) { e->setArgument(3,(*v4_Scale)); } else { e->setArgument(3); } e->setArgument(4,(v5_Axis3)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCartesianTransformationOperator3DnonUniform
bool IfcCartesianTransformationOperator3DnonUniform::hasScale2() const { return !data_->getArgument(5)->isNull(); }
double IfcCartesianTransformationOperator3DnonUniform::Scale2() const { return *data_->getArgument(5); }
void IfcCartesianTransformationOperator3DnonUniform::setScale2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcCartesianTransformationOperator3DnonUniform::hasScale3() const { return !data_->getArgument(6)->isNull(); }
double IfcCartesianTransformationOperator3DnonUniform::Scale3() const { return *data_->getArgument(6); }
void IfcCartesianTransformationOperator3DnonUniform::setScale3(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IfcCartesianTransformationOperator3DnonUniform_type; }
Type::Enum IfcCartesianTransformationOperator3DnonUniform::Class() { return Type::IfcCartesianTransformationOperator3DnonUniform; }
IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(IfcAbstractEntity* e) : IfcCartesianTransformationOperator3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCartesianTransformationOperator3DnonUniform)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(IfcDirection* v1_Axis1, IfcDirection* v2_Axis2, IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3) : IfcCartesianTransformationOperator3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Axis1)); e->setArgument(1,(v2_Axis2)); e->setArgument(2,(v3_LocalOrigin)); if (v4_Scale) { e->setArgument(3,(*v4_Scale)); } else { e->setArgument(3); } e->setArgument(4,(v5_Axis3)); if (v6_Scale2) { e->setArgument(5,(*v6_Scale2)); } else { e->setArgument(5); } if (v7_Scale3) { e->setArgument(6,(*v7_Scale3)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCenterLineProfileDef
double IfcCenterLineProfileDef::Thickness() const { return *data_->getArgument(3); }
void IfcCenterLineProfileDef::setThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcCenterLineProfileDef::declaration() const { return *IfcCenterLineProfileDef_type; }
Type::Enum IfcCenterLineProfileDef::Class() { return Type::IfcCenterLineProfileDef; }
IfcCenterLineProfileDef::IfcCenterLineProfileDef(IfcAbstractEntity* e) : IfcArbitraryOpenProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCenterLineProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCenterLineProfileDef::IfcCenterLineProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcBoundedCurve* v3_Curve, double v4_Thickness) : IfcArbitraryOpenProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Curve)); e->setArgument(3,(v4_Thickness)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcChiller
bool IfcChiller::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcChillerTypeEnum::IfcChillerTypeEnum IfcChiller::PredefinedType() const { return IfcChillerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcChiller::setPredefinedType(IfcChillerTypeEnum::IfcChillerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcChillerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcChiller::declaration() const { return *IfcChiller_type; }
Type::Enum IfcChiller::Class() { return Type::IfcChiller; }
IfcChiller::IfcChiller(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcChiller)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcChiller::IfcChiller(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcChillerTypeEnum::IfcChillerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcChillerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcChillerType
IfcChillerTypeEnum::IfcChillerTypeEnum IfcChillerType::PredefinedType() const { return IfcChillerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcChillerType::setPredefinedType(IfcChillerTypeEnum::IfcChillerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcChillerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcChillerType::declaration() const { return *IfcChillerType_type; }
Type::Enum IfcChillerType::Class() { return Type::IfcChillerType; }
IfcChillerType::IfcChillerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcChillerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcChillerType::IfcChillerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcChillerTypeEnum::IfcChillerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcChillerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcChimney
bool IfcChimney::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcChimneyTypeEnum::IfcChimneyTypeEnum IfcChimney::PredefinedType() const { return IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); }
void IfcChimney::setPredefinedType(IfcChimneyTypeEnum::IfcChimneyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcChimneyTypeEnum::ToString(v)); }


const IfcParse::entity& IfcChimney::declaration() const { return *IfcChimney_type; }
Type::Enum IfcChimney::Class() { return Type::IfcChimney; }
IfcChimney::IfcChimney(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcChimney)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcChimney::IfcChimney(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcChimneyTypeEnum::IfcChimneyTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcChimneyTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcChimneyType
IfcChimneyTypeEnum::IfcChimneyTypeEnum IfcChimneyType::PredefinedType() const { return IfcChimneyTypeEnum::FromString(*data_->getArgument(9)); }
void IfcChimneyType::setPredefinedType(IfcChimneyTypeEnum::IfcChimneyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcChimneyTypeEnum::ToString(v)); }


const IfcParse::entity& IfcChimneyType::declaration() const { return *IfcChimneyType_type; }
Type::Enum IfcChimneyType::Class() { return Type::IfcChimneyType; }
IfcChimneyType::IfcChimneyType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcChimneyType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcChimneyType::IfcChimneyType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcChimneyTypeEnum::IfcChimneyTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcChimneyTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCircle
double IfcCircle::Radius() const { return *data_->getArgument(1); }
void IfcCircle::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcCircle::declaration() const { return *IfcCircle_type; }
Type::Enum IfcCircle::Class() { return Type::IfcCircle; }
IfcCircle::IfcCircle(IfcAbstractEntity* e) : IfcConic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCircle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCircle::IfcCircle(IfcAxis2Placement* v1_Position, double v2_Radius) : IfcConic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCircleHollowProfileDef
double IfcCircleHollowProfileDef::WallThickness() const { return *data_->getArgument(4); }
void IfcCircleHollowProfileDef::setWallThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcCircleHollowProfileDef::declaration() const { return *IfcCircleHollowProfileDef_type; }
Type::Enum IfcCircleHollowProfileDef::Class() { return Type::IfcCircleHollowProfileDef; }
IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(IfcAbstractEntity* e) : IfcCircleProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCircleHollowProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness) : IfcCircleProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Radius)); e->setArgument(4,(v5_WallThickness)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCircleProfileDef
double IfcCircleProfileDef::Radius() const { return *data_->getArgument(3); }
void IfcCircleProfileDef::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcCircleProfileDef::declaration() const { return *IfcCircleProfileDef_type; }
Type::Enum IfcCircleProfileDef::Class() { return Type::IfcCircleProfileDef; }
IfcCircleProfileDef::IfcCircleProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCircleProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCircleProfileDef::IfcCircleProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Radius) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCivilElement


const IfcParse::entity& IfcCivilElement::declaration() const { return *IfcCivilElement_type; }
Type::Enum IfcCivilElement::Class() { return Type::IfcCivilElement; }
IfcCivilElement::IfcCivilElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCivilElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCivilElement::IfcCivilElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCivilElementType


const IfcParse::entity& IfcCivilElementType::declaration() const { return *IfcCivilElementType_type; }
Type::Enum IfcCivilElementType::Class() { return Type::IfcCivilElementType; }
IfcCivilElementType::IfcCivilElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCivilElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcClassification
bool IfcClassification::hasSource() const { return !data_->getArgument(0)->isNull(); }
std::string IfcClassification::Source() const { return *data_->getArgument(0); }
void IfcClassification::setSource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcClassification::hasEdition() const { return !data_->getArgument(1)->isNull(); }
std::string IfcClassification::Edition() const { return *data_->getArgument(1); }
void IfcClassification::setEdition(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcClassification::hasEditionDate() const { return !data_->getArgument(2)->isNull(); }
std::string IfcClassification::EditionDate() const { return *data_->getArgument(2); }
void IfcClassification::setEditionDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::string IfcClassification::Name() const { return *data_->getArgument(3); }
void IfcClassification::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcClassification::hasDescription() const { return !data_->getArgument(4)->isNull(); }
std::string IfcClassification::Description() const { return *data_->getArgument(4); }
void IfcClassification::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcClassification::hasLocation() const { return !data_->getArgument(5)->isNull(); }
std::string IfcClassification::Location() const { return *data_->getArgument(5); }
void IfcClassification::setLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcClassification::hasReferenceTokens() const { return !data_->getArgument(6)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcClassification::ReferenceTokens() const { return *data_->getArgument(6); }
void IfcClassification::setReferenceTokens(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcRelAssociatesClassification::list::ptr IfcClassification::ClassificationForObjects() const { return data_->getInverse(Type::IfcRelAssociatesClassification, 5)->as<IfcRelAssociatesClassification>(); }
IfcClassificationReference::list::ptr IfcClassification::HasReferences() const { return data_->getInverse(Type::IfcClassificationReference, 3)->as<IfcClassificationReference>(); }

const IfcParse::entity& IfcClassification::declaration() const { return *IfcClassification_type; }
Type::Enum IfcClassification::Class() { return Type::IfcClassification; }
IfcClassification::IfcClassification(IfcAbstractEntity* e) : IfcExternalInformation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcClassification)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcClassification::IfcClassification(boost::optional< std::string > v1_Source, boost::optional< std::string > v2_Edition, boost::optional< std::string > v3_EditionDate, std::string v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Location, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ReferenceTokens) : IfcExternalInformation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Source) { e->setArgument(0,(*v1_Source)); } else { e->setArgument(0); } if (v2_Edition) { e->setArgument(1,(*v2_Edition)); } else { e->setArgument(1); } if (v3_EditionDate) { e->setArgument(2,(*v3_EditionDate)); } else { e->setArgument(2); } e->setArgument(3,(v4_Name)); if (v5_Description) { e->setArgument(4,(*v5_Description)); } else { e->setArgument(4); } if (v6_Location) { e->setArgument(5,(*v6_Location)); } else { e->setArgument(5); } if (v7_ReferenceTokens) { e->setArgument(6,(*v7_ReferenceTokens)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcClassificationReference
bool IfcClassificationReference::hasReferencedSource() const { return !data_->getArgument(3)->isNull(); }
IfcClassificationReferenceSelect* IfcClassificationReference::ReferencedSource() const { return (IfcClassificationReferenceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcClassificationReference::setReferencedSource(IfcClassificationReferenceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcClassificationReference::hasDescription() const { return !data_->getArgument(4)->isNull(); }
std::string IfcClassificationReference::Description() const { return *data_->getArgument(4); }
void IfcClassificationReference::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcClassificationReference::hasSort() const { return !data_->getArgument(5)->isNull(); }
std::string IfcClassificationReference::Sort() const { return *data_->getArgument(5); }
void IfcClassificationReference::setSort(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcRelAssociatesClassification::list::ptr IfcClassificationReference::ClassificationRefForObjects() const { return data_->getInverse(Type::IfcRelAssociatesClassification, 5)->as<IfcRelAssociatesClassification>(); }
IfcClassificationReference::list::ptr IfcClassificationReference::HasReferences() const { return data_->getInverse(Type::IfcClassificationReference, 3)->as<IfcClassificationReference>(); }

const IfcParse::entity& IfcClassificationReference::declaration() const { return *IfcClassificationReference_type; }
Type::Enum IfcClassificationReference::Class() { return Type::IfcClassificationReference; }
IfcClassificationReference::IfcClassificationReference(IfcAbstractEntity* e) : IfcExternalReference((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcClassificationReference)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcClassificationReference::IfcClassificationReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, IfcClassificationReferenceSelect* v4_ReferencedSource, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Sort) : IfcExternalReference((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } e->setArgument(3,(v4_ReferencedSource)); if (v5_Description) { e->setArgument(4,(*v5_Description)); } else { e->setArgument(4); } if (v6_Sort) { e->setArgument(5,(*v6_Sort)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcClosedShell


const IfcParse::entity& IfcClosedShell::declaration() const { return *IfcClosedShell_type; }
Type::Enum IfcClosedShell::Class() { return Type::IfcClosedShell; }
IfcClosedShell::IfcClosedShell(IfcAbstractEntity* e) : IfcConnectedFaceSet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcClosedShell)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcClosedShell::IfcClosedShell(IfcTemplatedEntityList< IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CfsFaces)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoil
bool IfcCoil::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCoilTypeEnum::IfcCoilTypeEnum IfcCoil::PredefinedType() const { return IfcCoilTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCoil::setPredefinedType(IfcCoilTypeEnum::IfcCoilTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCoilTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCoil::declaration() const { return *IfcCoil_type; }
Type::Enum IfcCoil::Class() { return Type::IfcCoil; }
IfcCoil::IfcCoil(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCoil)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoil::IfcCoil(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCoilTypeEnum::IfcCoilTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCoilTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoilType
IfcCoilTypeEnum::IfcCoilTypeEnum IfcCoilType::PredefinedType() const { return IfcCoilTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCoilType::setPredefinedType(IfcCoilTypeEnum::IfcCoilTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCoilTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCoilType::declaration() const { return *IfcCoilType_type; }
Type::Enum IfcCoilType::Class() { return Type::IfcCoilType; }
IfcCoilType::IfcCoilType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCoilType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoilType::IfcCoilType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCoilTypeEnum::IfcCoilTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCoilTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcColourRgb
double IfcColourRgb::Red() const { return *data_->getArgument(1); }
void IfcColourRgb::setRed(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcColourRgb::Green() const { return *data_->getArgument(2); }
void IfcColourRgb::setGreen(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcColourRgb::Blue() const { return *data_->getArgument(3); }
void IfcColourRgb::setBlue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcColourRgb::declaration() const { return *IfcColourRgb_type; }
Type::Enum IfcColourRgb::Class() { return Type::IfcColourRgb; }
IfcColourRgb::IfcColourRgb(IfcAbstractEntity* e) : IfcColourSpecification((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcColourRgb)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcColourRgb::IfcColourRgb(boost::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue) : IfcColourSpecification((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_Red)); e->setArgument(2,(v3_Green)); e->setArgument(3,(v4_Blue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcColourRgbList
std::vector< std::vector< double > > IfcColourRgbList::ColourList() const { return *data_->getArgument(0); }
void IfcColourRgbList::setColourList(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcColourRgbList::declaration() const { return *IfcColourRgbList_type; }
Type::Enum IfcColourRgbList::Class() { return Type::IfcColourRgbList; }
IfcColourRgbList::IfcColourRgbList(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcColourRgbList)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > v1_ColourList) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ColourList)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcColourSpecification
bool IfcColourSpecification::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcColourSpecification::Name() const { return *data_->getArgument(0); }
void IfcColourSpecification::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcColourSpecification::declaration() const { return *IfcColourSpecification_type; }
Type::Enum IfcColourSpecification::Class() { return Type::IfcColourSpecification; }
IfcColourSpecification::IfcColourSpecification(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcColourSpecification)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcColourSpecification::IfcColourSpecification(boost::optional< std::string > v1_Name) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcColumn
bool IfcColumn::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcColumnTypeEnum::IfcColumnTypeEnum IfcColumn::PredefinedType() const { return IfcColumnTypeEnum::FromString(*data_->getArgument(8)); }
void IfcColumn::setPredefinedType(IfcColumnTypeEnum::IfcColumnTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcColumnTypeEnum::ToString(v)); }


const IfcParse::entity& IfcColumn::declaration() const { return *IfcColumn_type; }
Type::Enum IfcColumn::Class() { return Type::IfcColumn; }
IfcColumn::IfcColumn(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcColumn)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcColumn::IfcColumn(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcColumnTypeEnum::IfcColumnTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcColumnTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcColumnStandardCase


const IfcParse::entity& IfcColumnStandardCase::declaration() const { return *IfcColumnStandardCase_type; }
Type::Enum IfcColumnStandardCase::Class() { return Type::IfcColumnStandardCase; }
IfcColumnStandardCase::IfcColumnStandardCase(IfcAbstractEntity* e) : IfcColumn((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcColumnStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcColumnStandardCase::IfcColumnStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcColumnTypeEnum::IfcColumnTypeEnum > v9_PredefinedType) : IfcColumn((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcColumnTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcColumnType
IfcColumnTypeEnum::IfcColumnTypeEnum IfcColumnType::PredefinedType() const { return IfcColumnTypeEnum::FromString(*data_->getArgument(9)); }
void IfcColumnType::setPredefinedType(IfcColumnTypeEnum::IfcColumnTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcColumnTypeEnum::ToString(v)); }


const IfcParse::entity& IfcColumnType::declaration() const { return *IfcColumnType_type; }
Type::Enum IfcColumnType::Class() { return Type::IfcColumnType; }
IfcColumnType::IfcColumnType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcColumnType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcColumnType::IfcColumnType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcColumnTypeEnum::IfcColumnTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcColumnTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCommunicationsAppliance
bool IfcCommunicationsAppliance::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum IfcCommunicationsAppliance::PredefinedType() const { return IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCommunicationsAppliance::setPredefinedType(IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCommunicationsApplianceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCommunicationsAppliance::declaration() const { return *IfcCommunicationsAppliance_type; }
Type::Enum IfcCommunicationsAppliance::Class() { return Type::IfcCommunicationsAppliance; }
IfcCommunicationsAppliance::IfcCommunicationsAppliance(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCommunicationsAppliance)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCommunicationsAppliance::IfcCommunicationsAppliance(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCommunicationsApplianceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCommunicationsApplianceType
IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum IfcCommunicationsApplianceType::PredefinedType() const { return IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCommunicationsApplianceType::setPredefinedType(IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCommunicationsApplianceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCommunicationsApplianceType::declaration() const { return *IfcCommunicationsApplianceType_type; }
Type::Enum IfcCommunicationsApplianceType::Class() { return Type::IfcCommunicationsApplianceType; }
IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCommunicationsApplianceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCommunicationsApplianceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcComplexProperty
std::string IfcComplexProperty::UsageName() const { return *data_->getArgument(2); }
void IfcComplexProperty::setUsageName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcProperty >::ptr IfcComplexProperty::HasProperties() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcProperty>(); }
void IfcComplexProperty::setHasProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }


const IfcParse::entity& IfcComplexProperty::declaration() const { return *IfcComplexProperty_type; }
Type::Enum IfcComplexProperty::Class() { return Type::IfcComplexProperty; }
IfcComplexProperty::IfcComplexProperty(IfcAbstractEntity* e) : IfcProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcComplexProperty)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_UsageName, IfcTemplatedEntityList< IfcProperty >::ptr v4_HasProperties) : IfcProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_UsageName)); e->setArgument(3,(v4_HasProperties)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcComplexPropertyTemplate
bool IfcComplexPropertyTemplate::hasUsageName() const { return !data_->getArgument(4)->isNull(); }
std::string IfcComplexPropertyTemplate::UsageName() const { return *data_->getArgument(4); }
void IfcComplexPropertyTemplate::setUsageName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcComplexPropertyTemplate::hasTemplateType() const { return !data_->getArgument(5)->isNull(); }
IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum IfcComplexPropertyTemplate::TemplateType() const { return IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); }
void IfcComplexPropertyTemplate::setTemplateType(IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcComplexPropertyTemplateTypeEnum::ToString(v)); }
bool IfcComplexPropertyTemplate::hasHasPropertyTemplates() const { return !data_->getArgument(6)->isNull(); }
IfcTemplatedEntityList< IfcPropertyTemplate >::ptr IfcComplexPropertyTemplate::HasPropertyTemplates() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcPropertyTemplate>(); }
void IfcComplexPropertyTemplate::setHasPropertyTemplates(IfcTemplatedEntityList< IfcPropertyTemplate >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }


const IfcParse::entity& IfcComplexPropertyTemplate::declaration() const { return *IfcComplexPropertyTemplate_type; }
Type::Enum IfcComplexPropertyTemplate::Class() { return Type::IfcComplexPropertyTemplate; }
IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(IfcAbstractEntity* e) : IfcPropertyTemplate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcComplexPropertyTemplate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_UsageName, boost::optional< IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum > v6_TemplateType, boost::optional< IfcTemplatedEntityList< IfcPropertyTemplate >::ptr > v7_HasPropertyTemplates) : IfcPropertyTemplate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_UsageName) { e->setArgument(4,(*v5_UsageName)); } else { e->setArgument(4); } if (v6_TemplateType) { e->setArgument(5,*v6_TemplateType,IfcComplexPropertyTemplateTypeEnum::ToString(*v6_TemplateType)); } else { e->setArgument(5); } if (v7_HasPropertyTemplates) { e->setArgument(6,(*v7_HasPropertyTemplates)->generalize()); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCompositeCurve
IfcTemplatedEntityList< IfcCompositeCurveSegment >::ptr IfcCompositeCurve::Segments() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcCompositeCurveSegment>(); }
void IfcCompositeCurve::setSegments(IfcTemplatedEntityList< IfcCompositeCurveSegment >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
boost::logic::tribool IfcCompositeCurve::SelfIntersect() const { return *data_->getArgument(1); }
void IfcCompositeCurve::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcCompositeCurve::declaration() const { return *IfcCompositeCurve_type; }
Type::Enum IfcCompositeCurve::Class() { return Type::IfcCompositeCurve; }
IfcCompositeCurve::IfcCompositeCurve(IfcAbstractEntity* e) : IfcBoundedCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCompositeCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCompositeCurve::IfcCompositeCurve(IfcTemplatedEntityList< IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundedCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Segments)->generalize()); e->setArgument(1,(v2_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCompositeCurveOnSurface


const IfcParse::entity& IfcCompositeCurveOnSurface::declaration() const { return *IfcCompositeCurveOnSurface_type; }
Type::Enum IfcCompositeCurveOnSurface::Class() { return Type::IfcCompositeCurveOnSurface; }
IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(IfcAbstractEntity* e) : IfcCompositeCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCompositeCurveOnSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(IfcTemplatedEntityList< IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Segments)->generalize()); e->setArgument(1,(v2_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCompositeCurveSegment
IfcTransitionCode::IfcTransitionCode IfcCompositeCurveSegment::Transition() const { return IfcTransitionCode::FromString(*data_->getArgument(0)); }
void IfcCompositeCurveSegment::setTransition(IfcTransitionCode::IfcTransitionCode v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcTransitionCode::ToString(v)); }
bool IfcCompositeCurveSegment::SameSense() const { return *data_->getArgument(1); }
void IfcCompositeCurveSegment::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcCurve* IfcCompositeCurveSegment::ParentCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcCompositeCurveSegment::setParentCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcCompositeCurve::list::ptr IfcCompositeCurveSegment::UsingCurves() const { return data_->getInverse(Type::IfcCompositeCurve, 0)->as<IfcCompositeCurve>(); }

const IfcParse::entity& IfcCompositeCurveSegment::declaration() const { return *IfcCompositeCurveSegment_type; }
Type::Enum IfcCompositeCurveSegment::Class() { return Type::IfcCompositeCurveSegment; }
IfcCompositeCurveSegment::IfcCompositeCurveSegment(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCompositeCurveSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCompositeCurveSegment::IfcCompositeCurveSegment(IfcTransitionCode::IfcTransitionCode v1_Transition, bool v2_SameSense, IfcCurve* v3_ParentCurve) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_Transition,IfcTransitionCode::ToString(v1_Transition)); e->setArgument(1,(v2_SameSense)); e->setArgument(2,(v3_ParentCurve)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCompositeProfileDef
IfcTemplatedEntityList< IfcProfileDef >::ptr IfcCompositeProfileDef::Profiles() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcProfileDef>(); }
void IfcCompositeProfileDef::setProfiles(IfcTemplatedEntityList< IfcProfileDef >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }
bool IfcCompositeProfileDef::hasLabel() const { return !data_->getArgument(3)->isNull(); }
std::string IfcCompositeProfileDef::Label() const { return *data_->getArgument(3); }
void IfcCompositeProfileDef::setLabel(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcCompositeProfileDef::declaration() const { return *IfcCompositeProfileDef_type; }
Type::Enum IfcCompositeProfileDef::Class() { return Type::IfcCompositeProfileDef; }
IfcCompositeProfileDef::IfcCompositeProfileDef(IfcAbstractEntity* e) : IfcProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCompositeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCompositeProfileDef::IfcCompositeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcTemplatedEntityList< IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label) : IfcProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Profiles)->generalize()); if (v4_Label) { e->setArgument(3,(*v4_Label)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCompressor
bool IfcCompressor::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCompressorTypeEnum::IfcCompressorTypeEnum IfcCompressor::PredefinedType() const { return IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCompressor::setPredefinedType(IfcCompressorTypeEnum::IfcCompressorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCompressorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCompressor::declaration() const { return *IfcCompressor_type; }
Type::Enum IfcCompressor::Class() { return Type::IfcCompressor; }
IfcCompressor::IfcCompressor(IfcAbstractEntity* e) : IfcFlowMovingDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCompressor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCompressor::IfcCompressor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCompressorTypeEnum::IfcCompressorTypeEnum > v9_PredefinedType) : IfcFlowMovingDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCompressorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCompressorType
IfcCompressorTypeEnum::IfcCompressorTypeEnum IfcCompressorType::PredefinedType() const { return IfcCompressorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCompressorType::setPredefinedType(IfcCompressorTypeEnum::IfcCompressorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCompressorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCompressorType::declaration() const { return *IfcCompressorType_type; }
Type::Enum IfcCompressorType::Class() { return Type::IfcCompressorType; }
IfcCompressorType::IfcCompressorType(IfcAbstractEntity* e) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCompressorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCompressorTypeEnum::IfcCompressorTypeEnum v10_PredefinedType) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCompressorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCondenser
bool IfcCondenser::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCondenserTypeEnum::IfcCondenserTypeEnum IfcCondenser::PredefinedType() const { return IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCondenser::setPredefinedType(IfcCondenserTypeEnum::IfcCondenserTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCondenserTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCondenser::declaration() const { return *IfcCondenser_type; }
Type::Enum IfcCondenser::Class() { return Type::IfcCondenser; }
IfcCondenser::IfcCondenser(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCondenser)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCondenser::IfcCondenser(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCondenserTypeEnum::IfcCondenserTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCondenserTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCondenserType
IfcCondenserTypeEnum::IfcCondenserTypeEnum IfcCondenserType::PredefinedType() const { return IfcCondenserTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCondenserType::setPredefinedType(IfcCondenserTypeEnum::IfcCondenserTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCondenserTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCondenserType::declaration() const { return *IfcCondenserType_type; }
Type::Enum IfcCondenserType::Class() { return Type::IfcCondenserType; }
IfcCondenserType::IfcCondenserType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCondenserType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCondenserType::IfcCondenserType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCondenserTypeEnum::IfcCondenserTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCondenserTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConic
IfcAxis2Placement* IfcConic::Position() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConic::setPosition(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcConic::declaration() const { return *IfcConic_type; }
Type::Enum IfcConic::Class() { return Type::IfcConic; }
IfcConic::IfcConic(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConic)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConic::IfcConic(IfcAxis2Placement* v1_Position) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectedFaceSet
IfcTemplatedEntityList< IfcFace >::ptr IfcConnectedFaceSet::CfsFaces() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcFace>(); }
void IfcConnectedFaceSet::setCfsFaces(IfcTemplatedEntityList< IfcFace >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcConnectedFaceSet::declaration() const { return *IfcConnectedFaceSet_type; }
Type::Enum IfcConnectedFaceSet::Class() { return Type::IfcConnectedFaceSet; }
IfcConnectedFaceSet::IfcConnectedFaceSet(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectedFaceSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectedFaceSet::IfcConnectedFaceSet(IfcTemplatedEntityList< IfcFace >::ptr v1_CfsFaces) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CfsFaces)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectionCurveGeometry
IfcCurveOrEdgeCurve* IfcConnectionCurveGeometry::CurveOnRelatingElement() const { return (IfcCurveOrEdgeCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConnectionCurveGeometry::setCurveOnRelatingElement(IfcCurveOrEdgeCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConnectionCurveGeometry::hasCurveOnRelatedElement() const { return !data_->getArgument(1)->isNull(); }
IfcCurveOrEdgeCurve* IfcConnectionCurveGeometry::CurveOnRelatedElement() const { return (IfcCurveOrEdgeCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcConnectionCurveGeometry::setCurveOnRelatedElement(IfcCurveOrEdgeCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcConnectionCurveGeometry::declaration() const { return *IfcConnectionCurveGeometry_type; }
Type::Enum IfcConnectionCurveGeometry::Class() { return Type::IfcConnectionCurveGeometry; }
IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(IfcAbstractEntity* e) : IfcConnectionGeometry((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectionCurveGeometry)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement) : IfcConnectionGeometry((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CurveOnRelatingElement)); e->setArgument(1,(v2_CurveOnRelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectionGeometry


const IfcParse::entity& IfcConnectionGeometry::declaration() const { return *IfcConnectionGeometry_type; }
Type::Enum IfcConnectionGeometry::Class() { return Type::IfcConnectionGeometry; }
IfcConnectionGeometry::IfcConnectionGeometry(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcConnectionGeometry)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectionPointEccentricity
bool IfcConnectionPointEccentricity::hasEccentricityInX() const { return !data_->getArgument(2)->isNull(); }
double IfcConnectionPointEccentricity::EccentricityInX() const { return *data_->getArgument(2); }
void IfcConnectionPointEccentricity::setEccentricityInX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcConnectionPointEccentricity::hasEccentricityInY() const { return !data_->getArgument(3)->isNull(); }
double IfcConnectionPointEccentricity::EccentricityInY() const { return *data_->getArgument(3); }
void IfcConnectionPointEccentricity::setEccentricityInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcConnectionPointEccentricity::hasEccentricityInZ() const { return !data_->getArgument(4)->isNull(); }
double IfcConnectionPointEccentricity::EccentricityInZ() const { return *data_->getArgument(4); }
void IfcConnectionPointEccentricity::setEccentricityInZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcConnectionPointEccentricity::declaration() const { return *IfcConnectionPointEccentricity_type; }
Type::Enum IfcConnectionPointEccentricity::Class() { return Type::IfcConnectionPointEccentricity; }
IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(IfcAbstractEntity* e) : IfcConnectionPointGeometry((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectionPointEccentricity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(IfcPointOrVertexPoint* v1_PointOnRelatingElement, IfcPointOrVertexPoint* v2_PointOnRelatedElement, boost::optional< double > v3_EccentricityInX, boost::optional< double > v4_EccentricityInY, boost::optional< double > v5_EccentricityInZ) : IfcConnectionPointGeometry((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_PointOnRelatingElement)); e->setArgument(1,(v2_PointOnRelatedElement)); if (v3_EccentricityInX) { e->setArgument(2,(*v3_EccentricityInX)); } else { e->setArgument(2); } if (v4_EccentricityInY) { e->setArgument(3,(*v4_EccentricityInY)); } else { e->setArgument(3); } if (v5_EccentricityInZ) { e->setArgument(4,(*v5_EccentricityInZ)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectionPointGeometry
IfcPointOrVertexPoint* IfcConnectionPointGeometry::PointOnRelatingElement() const { return (IfcPointOrVertexPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConnectionPointGeometry::setPointOnRelatingElement(IfcPointOrVertexPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConnectionPointGeometry::hasPointOnRelatedElement() const { return !data_->getArgument(1)->isNull(); }
IfcPointOrVertexPoint* IfcConnectionPointGeometry::PointOnRelatedElement() const { return (IfcPointOrVertexPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcConnectionPointGeometry::setPointOnRelatedElement(IfcPointOrVertexPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcConnectionPointGeometry::declaration() const { return *IfcConnectionPointGeometry_type; }
Type::Enum IfcConnectionPointGeometry::Class() { return Type::IfcConnectionPointGeometry; }
IfcConnectionPointGeometry::IfcConnectionPointGeometry(IfcAbstractEntity* e) : IfcConnectionGeometry((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectionPointGeometry)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionPointGeometry::IfcConnectionPointGeometry(IfcPointOrVertexPoint* v1_PointOnRelatingElement, IfcPointOrVertexPoint* v2_PointOnRelatedElement) : IfcConnectionGeometry((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_PointOnRelatingElement)); e->setArgument(1,(v2_PointOnRelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectionSurfaceGeometry
IfcSurfaceOrFaceSurface* IfcConnectionSurfaceGeometry::SurfaceOnRelatingElement() const { return (IfcSurfaceOrFaceSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConnectionSurfaceGeometry::setSurfaceOnRelatingElement(IfcSurfaceOrFaceSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConnectionSurfaceGeometry::hasSurfaceOnRelatedElement() const { return !data_->getArgument(1)->isNull(); }
IfcSurfaceOrFaceSurface* IfcConnectionSurfaceGeometry::SurfaceOnRelatedElement() const { return (IfcSurfaceOrFaceSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcConnectionSurfaceGeometry::setSurfaceOnRelatedElement(IfcSurfaceOrFaceSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcConnectionSurfaceGeometry::declaration() const { return *IfcConnectionSurfaceGeometry_type; }
Type::Enum IfcConnectionSurfaceGeometry::Class() { return Type::IfcConnectionSurfaceGeometry; }
IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(IfcAbstractEntity* e) : IfcConnectionGeometry((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectionSurfaceGeometry)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement) : IfcConnectionGeometry((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SurfaceOnRelatingElement)); e->setArgument(1,(v2_SurfaceOnRelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConnectionVolumeGeometry
IfcSolidOrShell* IfcConnectionVolumeGeometry::VolumeOnRelatingElement() const { return (IfcSolidOrShell*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcConnectionVolumeGeometry::setVolumeOnRelatingElement(IfcSolidOrShell* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConnectionVolumeGeometry::hasVolumeOnRelatedElement() const { return !data_->getArgument(1)->isNull(); }
IfcSolidOrShell* IfcConnectionVolumeGeometry::VolumeOnRelatedElement() const { return (IfcSolidOrShell*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcConnectionVolumeGeometry::setVolumeOnRelatedElement(IfcSolidOrShell* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcConnectionVolumeGeometry::declaration() const { return *IfcConnectionVolumeGeometry_type; }
Type::Enum IfcConnectionVolumeGeometry::Class() { return Type::IfcConnectionVolumeGeometry; }
IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(IfcAbstractEntity* e) : IfcConnectionGeometry((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConnectionVolumeGeometry)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(IfcSolidOrShell* v1_VolumeOnRelatingElement, IfcSolidOrShell* v2_VolumeOnRelatedElement) : IfcConnectionGeometry((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_VolumeOnRelatingElement)); e->setArgument(1,(v2_VolumeOnRelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstraint
std::string IfcConstraint::Name() const { return *data_->getArgument(0); }
void IfcConstraint::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcConstraint::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcConstraint::Description() const { return *data_->getArgument(1); }
void IfcConstraint::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcConstraintEnum::IfcConstraintEnum IfcConstraint::ConstraintGrade() const { return IfcConstraintEnum::FromString(*data_->getArgument(2)); }
void IfcConstraint::setConstraintGrade(IfcConstraintEnum::IfcConstraintEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcConstraintEnum::ToString(v)); }
bool IfcConstraint::hasConstraintSource() const { return !data_->getArgument(3)->isNull(); }
std::string IfcConstraint::ConstraintSource() const { return *data_->getArgument(3); }
void IfcConstraint::setConstraintSource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcConstraint::hasCreatingActor() const { return !data_->getArgument(4)->isNull(); }
IfcActorSelect* IfcConstraint::CreatingActor() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcConstraint::setCreatingActor(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcConstraint::hasCreationTime() const { return !data_->getArgument(5)->isNull(); }
std::string IfcConstraint::CreationTime() const { return *data_->getArgument(5); }
void IfcConstraint::setCreationTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcConstraint::hasUserDefinedGrade() const { return !data_->getArgument(6)->isNull(); }
std::string IfcConstraint::UserDefinedGrade() const { return *data_->getArgument(6); }
void IfcConstraint::setUserDefinedGrade(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcExternalReferenceRelationship::list::ptr IfcConstraint::HasExternalReferences() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }
IfcResourceConstraintRelationship::list::ptr IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(Type::IfcResourceConstraintRelationship, 2)->as<IfcResourceConstraintRelationship>(); }

const IfcParse::entity& IfcConstraint::declaration() const { return *IfcConstraint_type; }
Type::Enum IfcConstraint::Class() { return Type::IfcConstraint; }
IfcConstraint::IfcConstraint(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcConstraint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std::string > v2_Description, IfcConstraintEnum::IfcConstraintEnum v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,v3_ConstraintGrade,IfcConstraintEnum::ToString(v3_ConstraintGrade)); if (v4_ConstraintSource) { e->setArgument(3,(*v4_ConstraintSource)); } else { e->setArgument(3); } e->setArgument(4,(v5_CreatingActor)); if (v6_CreationTime) { e->setArgument(5,(*v6_CreationTime)); } else { e->setArgument(5); } if (v7_UserDefinedGrade) { e->setArgument(6,(*v7_UserDefinedGrade)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionEquipmentResource
bool IfcConstructionEquipmentResource::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum IfcConstructionEquipmentResource::PredefinedType() const { return IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); }
void IfcConstructionEquipmentResource::setPredefinedType(IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcConstructionEquipmentResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcConstructionEquipmentResource::declaration() const { return *IfcConstructionEquipmentResource_type; }
Type::Enum IfcConstructionEquipmentResource::Class() { return Type::IfcConstructionEquipmentResource; }
IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionEquipmentResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum > v11_PredefinedType) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcConstructionEquipmentResourceTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionEquipmentResourceType
IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum IfcConstructionEquipmentResourceType::PredefinedType() const { return IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(11)); }
void IfcConstructionEquipmentResourceType::setPredefinedType(IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcConstructionEquipmentResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcConstructionEquipmentResourceType::declaration() const { return *IfcConstructionEquipmentResourceType_type; }
Type::Enum IfcConstructionEquipmentResourceType::Class() { return Type::IfcConstructionEquipmentResourceType; }
IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(IfcAbstractEntity* e) : IfcConstructionResourceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionEquipmentResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity, IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum v12_PredefinedType) : IfcConstructionResourceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); e->setArgument(11,v12_PredefinedType,IfcConstructionEquipmentResourceTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionMaterialResource
bool IfcConstructionMaterialResource::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum IfcConstructionMaterialResource::PredefinedType() const { return IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); }
void IfcConstructionMaterialResource::setPredefinedType(IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcConstructionMaterialResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcConstructionMaterialResource::declaration() const { return *IfcConstructionMaterialResource_type; }
Type::Enum IfcConstructionMaterialResource::Class() { return Type::IfcConstructionMaterialResource; }
IfcConstructionMaterialResource::IfcConstructionMaterialResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionMaterialResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionMaterialResource::IfcConstructionMaterialResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum > v11_PredefinedType) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcConstructionMaterialResourceTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionMaterialResourceType
IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum IfcConstructionMaterialResourceType::PredefinedType() const { return IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(11)); }
void IfcConstructionMaterialResourceType::setPredefinedType(IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcConstructionMaterialResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcConstructionMaterialResourceType::declaration() const { return *IfcConstructionMaterialResourceType_type; }
Type::Enum IfcConstructionMaterialResourceType::Class() { return Type::IfcConstructionMaterialResourceType; }
IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(IfcAbstractEntity* e) : IfcConstructionResourceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionMaterialResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity, IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum v12_PredefinedType) : IfcConstructionResourceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); e->setArgument(11,v12_PredefinedType,IfcConstructionMaterialResourceTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionProductResource
bool IfcConstructionProductResource::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum IfcConstructionProductResource::PredefinedType() const { return IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); }
void IfcConstructionProductResource::setPredefinedType(IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcConstructionProductResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcConstructionProductResource::declaration() const { return *IfcConstructionProductResource_type; }
Type::Enum IfcConstructionProductResource::Class() { return Type::IfcConstructionProductResource; }
IfcConstructionProductResource::IfcConstructionProductResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionProductResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionProductResource::IfcConstructionProductResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum > v11_PredefinedType) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcConstructionProductResourceTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionProductResourceType
IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum IfcConstructionProductResourceType::PredefinedType() const { return IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(11)); }
void IfcConstructionProductResourceType::setPredefinedType(IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcConstructionProductResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcConstructionProductResourceType::declaration() const { return *IfcConstructionProductResourceType_type; }
Type::Enum IfcConstructionProductResourceType::Class() { return Type::IfcConstructionProductResourceType; }
IfcConstructionProductResourceType::IfcConstructionProductResourceType(IfcAbstractEntity* e) : IfcConstructionResourceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionProductResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionProductResourceType::IfcConstructionProductResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity, IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum v12_PredefinedType) : IfcConstructionResourceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); e->setArgument(11,v12_PredefinedType,IfcConstructionProductResourceTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionResource
bool IfcConstructionResource::hasUsage() const { return !data_->getArgument(7)->isNull(); }
IfcResourceTime* IfcConstructionResource::Usage() const { return (IfcResourceTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcConstructionResource::setUsage(IfcResourceTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcConstructionResource::hasBaseCosts() const { return !data_->getArgument(8)->isNull(); }
IfcTemplatedEntityList< IfcAppliedValue >::ptr IfcConstructionResource::BaseCosts() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcAppliedValue>(); }
void IfcConstructionResource::setBaseCosts(IfcTemplatedEntityList< IfcAppliedValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }
bool IfcConstructionResource::hasBaseQuantity() const { return !data_->getArgument(9)->isNull(); }
IfcPhysicalQuantity* IfcConstructionResource::BaseQuantity() const { return (IfcPhysicalQuantity*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcConstructionResource::setBaseQuantity(IfcPhysicalQuantity* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcConstructionResource::declaration() const { return *IfcConstructionResource_type; }
Type::Enum IfcConstructionResource::Class() { return Type::IfcConstructionResource; }
IfcConstructionResource::IfcConstructionResource(IfcAbstractEntity* e) : IfcResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity) : IfcResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConstructionResourceType
bool IfcConstructionResourceType::hasBaseCosts() const { return !data_->getArgument(9)->isNull(); }
IfcTemplatedEntityList< IfcAppliedValue >::ptr IfcConstructionResourceType::BaseCosts() const { IfcEntityList::ptr es = *data_->getArgument(9); return es->as<IfcAppliedValue>(); }
void IfcConstructionResourceType::setBaseCosts(IfcTemplatedEntityList< IfcAppliedValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v->generalize()); }
bool IfcConstructionResourceType::hasBaseQuantity() const { return !data_->getArgument(10)->isNull(); }
IfcPhysicalQuantity* IfcConstructionResourceType::BaseQuantity() const { return (IfcPhysicalQuantity*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcConstructionResourceType::setBaseQuantity(IfcPhysicalQuantity* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcConstructionResourceType::declaration() const { return *IfcConstructionResourceType_type; }
Type::Enum IfcConstructionResourceType::Class() { return Type::IfcConstructionResourceType; }
IfcConstructionResourceType::IfcConstructionResourceType(IfcAbstractEntity* e) : IfcTypeResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConstructionResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity) : IfcTypeResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcContext
bool IfcContext::hasObjectType() const { return !data_->getArgument(4)->isNull(); }
std::string IfcContext::ObjectType() const { return *data_->getArgument(4); }
void IfcContext::setObjectType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcContext::hasLongName() const { return !data_->getArgument(5)->isNull(); }
std::string IfcContext::LongName() const { return *data_->getArgument(5); }
void IfcContext::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcContext::hasPhase() const { return !data_->getArgument(6)->isNull(); }
std::string IfcContext::Phase() const { return *data_->getArgument(6); }
void IfcContext::setPhase(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcContext::hasRepresentationContexts() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcRepresentationContext >::ptr IfcContext::RepresentationContexts() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcRepresentationContext>(); }
void IfcContext::setRepresentationContexts(IfcTemplatedEntityList< IfcRepresentationContext >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcContext::hasUnitsInContext() const { return !data_->getArgument(8)->isNull(); }
IfcUnitAssignment* IfcContext::UnitsInContext() const { return (IfcUnitAssignment*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcContext::setUnitsInContext(IfcUnitAssignment* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }

IfcRelDefinesByProperties::list::ptr IfcContext::IsDefinedBy() const { return data_->getInverse(Type::IfcRelDefinesByProperties, 4)->as<IfcRelDefinesByProperties>(); }
IfcRelDeclares::list::ptr IfcContext::Declares() const { return data_->getInverse(Type::IfcRelDeclares, 4)->as<IfcRelDeclares>(); }

const IfcParse::entity& IfcContext::declaration() const { return *IfcContext_type; }
Type::Enum IfcContext::Class() { return Type::IfcContext; }
IfcContext::IfcContext(IfcAbstractEntity* e) : IfcObjectDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcContext::IfcContext(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< IfcTemplatedEntityList< IfcRepresentationContext >::ptr > v8_RepresentationContexts, IfcUnitAssignment* v9_UnitsInContext) : IfcObjectDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } if (v7_Phase) { e->setArgument(6,(*v7_Phase)); } else { e->setArgument(6); } if (v8_RepresentationContexts) { e->setArgument(7,(*v8_RepresentationContexts)->generalize()); } else { e->setArgument(7); } e->setArgument(8,(v9_UnitsInContext)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcContextDependentUnit
std::string IfcContextDependentUnit::Name() const { return *data_->getArgument(2); }
void IfcContextDependentUnit::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcExternalReferenceRelationship::list::ptr IfcContextDependentUnit::HasExternalReference() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcContextDependentUnit::declaration() const { return *IfcContextDependentUnit_type; }
Type::Enum IfcContextDependentUnit::Class() { return Type::IfcContextDependentUnit; }
IfcContextDependentUnit::IfcContextDependentUnit(IfcAbstractEntity* e) : IfcNamedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcContextDependentUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcContextDependentUnit::IfcContextDependentUnit(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType, std::string v3_Name) : IfcNamedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); e->setArgument(2,(v3_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcControl
bool IfcControl::hasIdentification() const { return !data_->getArgument(5)->isNull(); }
std::string IfcControl::Identification() const { return *data_->getArgument(5); }
void IfcControl::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcRelAssignsToControl::list::ptr IfcControl::Controls() const { return data_->getInverse(Type::IfcRelAssignsToControl, 6)->as<IfcRelAssignsToControl>(); }

const IfcParse::entity& IfcControl::declaration() const { return *IfcControl_type; }
Type::Enum IfcControl::Class() { return Type::IfcControl; }
IfcControl::IfcControl(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcControl::IfcControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcController
bool IfcController::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcControllerTypeEnum::IfcControllerTypeEnum IfcController::PredefinedType() const { return IfcControllerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcController::setPredefinedType(IfcControllerTypeEnum::IfcControllerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcControllerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcController::declaration() const { return *IfcController_type; }
Type::Enum IfcController::Class() { return Type::IfcController; }
IfcController::IfcController(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcController)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcController::IfcController(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcControllerTypeEnum::IfcControllerTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcControllerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcControllerType
IfcControllerTypeEnum::IfcControllerTypeEnum IfcControllerType::PredefinedType() const { return IfcControllerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcControllerType::setPredefinedType(IfcControllerTypeEnum::IfcControllerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcControllerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcControllerType::declaration() const { return *IfcControllerType_type; }
Type::Enum IfcControllerType::Class() { return Type::IfcControllerType; }
IfcControllerType::IfcControllerType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcControllerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcControllerType::IfcControllerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcControllerTypeEnum::IfcControllerTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcControllerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConversionBasedUnit
std::string IfcConversionBasedUnit::Name() const { return *data_->getArgument(2); }
void IfcConversionBasedUnit::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcMeasureWithUnit* IfcConversionBasedUnit::ConversionFactor() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcConversionBasedUnit::setConversionFactor(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }

IfcExternalReferenceRelationship::list::ptr IfcConversionBasedUnit::HasExternalReference() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcConversionBasedUnit::declaration() const { return *IfcConversionBasedUnit_type; }
Type::Enum IfcConversionBasedUnit::Class() { return Type::IfcConversionBasedUnit; }
IfcConversionBasedUnit::IfcConversionBasedUnit(IfcAbstractEntity* e) : IfcNamedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConversionBasedUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConversionBasedUnit::IfcConversionBasedUnit(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType, std::string v3_Name, IfcMeasureWithUnit* v4_ConversionFactor) : IfcNamedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); e->setArgument(2,(v3_Name)); e->setArgument(3,(v4_ConversionFactor)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcConversionBasedUnitWithOffset
double IfcConversionBasedUnitWithOffset::ConversionOffset() const { return *data_->getArgument(4); }
void IfcConversionBasedUnitWithOffset::setConversionOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcConversionBasedUnitWithOffset::declaration() const { return *IfcConversionBasedUnitWithOffset_type; }
Type::Enum IfcConversionBasedUnitWithOffset::Class() { return Type::IfcConversionBasedUnitWithOffset; }
IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(IfcAbstractEntity* e) : IfcConversionBasedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcConversionBasedUnitWithOffset)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType, std::string v3_Name, IfcMeasureWithUnit* v4_ConversionFactor, double v5_ConversionOffset) : IfcConversionBasedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); e->setArgument(2,(v3_Name)); e->setArgument(3,(v4_ConversionFactor)); e->setArgument(4,(v5_ConversionOffset)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCooledBeam
bool IfcCooledBeam::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum IfcCooledBeam::PredefinedType() const { return IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCooledBeam::setPredefinedType(IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCooledBeamTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCooledBeam::declaration() const { return *IfcCooledBeam_type; }
Type::Enum IfcCooledBeam::Class() { return Type::IfcCooledBeam; }
IfcCooledBeam::IfcCooledBeam(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCooledBeam)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCooledBeam::IfcCooledBeam(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCooledBeamTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCooledBeamType
IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum IfcCooledBeamType::PredefinedType() const { return IfcCooledBeamTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCooledBeamType::setPredefinedType(IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCooledBeamTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCooledBeamType::declaration() const { return *IfcCooledBeamType_type; }
Type::Enum IfcCooledBeamType::Class() { return Type::IfcCooledBeamType; }
IfcCooledBeamType::IfcCooledBeamType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCooledBeamType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCooledBeamTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoolingTower
bool IfcCoolingTower::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum IfcCoolingTower::PredefinedType() const { return IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCoolingTower::setPredefinedType(IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCoolingTowerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCoolingTower::declaration() const { return *IfcCoolingTower_type; }
Type::Enum IfcCoolingTower::Class() { return Type::IfcCoolingTower; }
IfcCoolingTower::IfcCoolingTower(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCoolingTower)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoolingTower::IfcCoolingTower(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCoolingTowerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoolingTowerType
IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum IfcCoolingTowerType::PredefinedType() const { return IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCoolingTowerType::setPredefinedType(IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCoolingTowerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCoolingTowerType::declaration() const { return *IfcCoolingTowerType_type; }
Type::Enum IfcCoolingTowerType::Class() { return Type::IfcCoolingTowerType; }
IfcCoolingTowerType::IfcCoolingTowerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCoolingTowerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoolingTowerType::IfcCoolingTowerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCoolingTowerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoordinateOperation
IfcCoordinateReferenceSystemSelect* IfcCoordinateOperation::SourceCRS() const { return (IfcCoordinateReferenceSystemSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCoordinateOperation::setSourceCRS(IfcCoordinateReferenceSystemSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCoordinateReferenceSystem* IfcCoordinateOperation::TargetCRS() const { return (IfcCoordinateReferenceSystem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCoordinateOperation::setTargetCRS(IfcCoordinateReferenceSystem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcCoordinateOperation::declaration() const { return *IfcCoordinateOperation_type; }
Type::Enum IfcCoordinateOperation::Class() { return Type::IfcCoordinateOperation; }
IfcCoordinateOperation::IfcCoordinateOperation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcCoordinateOperation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoordinateOperation::IfcCoordinateOperation(IfcCoordinateReferenceSystemSelect* v1_SourceCRS, IfcCoordinateReferenceSystem* v2_TargetCRS) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SourceCRS)); e->setArgument(1,(v2_TargetCRS)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoordinateReferenceSystem
std::string IfcCoordinateReferenceSystem::Name() const { return *data_->getArgument(0); }
void IfcCoordinateReferenceSystem::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcCoordinateReferenceSystem::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcCoordinateReferenceSystem::Description() const { return *data_->getArgument(1); }
void IfcCoordinateReferenceSystem::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcCoordinateReferenceSystem::hasGeodeticDatum() const { return !data_->getArgument(2)->isNull(); }
std::string IfcCoordinateReferenceSystem::GeodeticDatum() const { return *data_->getArgument(2); }
void IfcCoordinateReferenceSystem::setGeodeticDatum(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcCoordinateReferenceSystem::hasVerticalDatum() const { return !data_->getArgument(3)->isNull(); }
std::string IfcCoordinateReferenceSystem::VerticalDatum() const { return *data_->getArgument(3); }
void IfcCoordinateReferenceSystem::setVerticalDatum(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }

IfcCoordinateOperation::list::ptr IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(Type::IfcCoordinateOperation, 0)->as<IfcCoordinateOperation>(); }

const IfcParse::entity& IfcCoordinateReferenceSystem::declaration() const { return *IfcCoordinateReferenceSystem_type; }
Type::Enum IfcCoordinateReferenceSystem::Class() { return Type::IfcCoordinateReferenceSystem; }
IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcCoordinateReferenceSystem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_VerticalDatum) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_GeodeticDatum) { e->setArgument(2,(*v3_GeodeticDatum)); } else { e->setArgument(2); } if (v4_VerticalDatum) { e->setArgument(3,(*v4_VerticalDatum)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCostItem
bool IfcCostItem::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcCostItemTypeEnum::IfcCostItemTypeEnum IfcCostItem::PredefinedType() const { return IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); }
void IfcCostItem::setPredefinedType(IfcCostItemTypeEnum::IfcCostItemTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcCostItemTypeEnum::ToString(v)); }
bool IfcCostItem::hasCostValues() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcCostValue >::ptr IfcCostItem::CostValues() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcCostValue>(); }
void IfcCostItem::setCostValues(IfcTemplatedEntityList< IfcCostValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcCostItem::hasCostQuantities() const { return !data_->getArgument(8)->isNull(); }
IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr IfcCostItem::CostQuantities() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcPhysicalQuantity>(); }
void IfcCostItem::setCostQuantities(IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }


const IfcParse::entity& IfcCostItem::declaration() const { return *IfcCostItem_type; }
Type::Enum IfcCostItem::Class() { return Type::IfcCostItem; }
IfcCostItem::IfcCostItem(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCostItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCostItem::IfcCostItem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcCostItemTypeEnum::IfcCostItemTypeEnum > v7_PredefinedType, boost::optional< IfcTemplatedEntityList< IfcCostValue >::ptr > v8_CostValues, boost::optional< IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr > v9_CostQuantities) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcCostItemTypeEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } if (v8_CostValues) { e->setArgument(7,(*v8_CostValues)->generalize()); } else { e->setArgument(7); } if (v9_CostQuantities) { e->setArgument(8,(*v9_CostQuantities)->generalize()); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCostSchedule
bool IfcCostSchedule::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum IfcCostSchedule::PredefinedType() const { return IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); }
void IfcCostSchedule::setPredefinedType(IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcCostScheduleTypeEnum::ToString(v)); }
bool IfcCostSchedule::hasStatus() const { return !data_->getArgument(7)->isNull(); }
std::string IfcCostSchedule::Status() const { return *data_->getArgument(7); }
void IfcCostSchedule::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcCostSchedule::hasSubmittedOn() const { return !data_->getArgument(8)->isNull(); }
std::string IfcCostSchedule::SubmittedOn() const { return *data_->getArgument(8); }
void IfcCostSchedule::setSubmittedOn(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcCostSchedule::hasUpdateDate() const { return !data_->getArgument(9)->isNull(); }
std::string IfcCostSchedule::UpdateDate() const { return *data_->getArgument(9); }
void IfcCostSchedule::setUpdateDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcCostSchedule::declaration() const { return *IfcCostSchedule_type; }
Type::Enum IfcCostSchedule::Class() { return Type::IfcCostSchedule; }
IfcCostSchedule::IfcCostSchedule(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCostSchedule)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_SubmittedOn, boost::optional< std::string > v10_UpdateDate) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcCostScheduleTypeEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } if (v8_Status) { e->setArgument(7,(*v8_Status)); } else { e->setArgument(7); } if (v9_SubmittedOn) { e->setArgument(8,(*v9_SubmittedOn)); } else { e->setArgument(8); } if (v10_UpdateDate) { e->setArgument(9,(*v10_UpdateDate)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCostValue


const IfcParse::entity& IfcCostValue::declaration() const { return *IfcCostValue_type; }
Type::Enum IfcCostValue::Class() { return Type::IfcCostValue; }
IfcCostValue::IfcCostValue(IfcAbstractEntity* e) : IfcAppliedValue((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCostValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcAppliedValueSelect* v3_AppliedValue, IfcMeasureWithUnit* v4_UnitBasis, boost::optional< std::string > v5_ApplicableDate, boost::optional< std::string > v6_FixedUntilDate, boost::optional< std::string > v7_Category, boost::optional< std::string > v8_Condition, boost::optional< IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum > v9_ArithmeticOperator, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_Components) : IfcAppliedValue((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AppliedValue)); e->setArgument(3,(v4_UnitBasis)); if (v5_ApplicableDate) { e->setArgument(4,(*v5_ApplicableDate)); } else { e->setArgument(4); } if (v6_FixedUntilDate) { e->setArgument(5,(*v6_FixedUntilDate)); } else { e->setArgument(5); } if (v7_Category) { e->setArgument(6,(*v7_Category)); } else { e->setArgument(6); } if (v8_Condition) { e->setArgument(7,(*v8_Condition)); } else { e->setArgument(7); } if (v9_ArithmeticOperator) { e->setArgument(8,*v9_ArithmeticOperator,IfcArithmeticOperatorEnum::ToString(*v9_ArithmeticOperator)); } else { e->setArgument(8); } if (v10_Components) { e->setArgument(9,(*v10_Components)->generalize()); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCovering
bool IfcCovering::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCoveringTypeEnum::IfcCoveringTypeEnum IfcCovering::PredefinedType() const { return IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCovering::setPredefinedType(IfcCoveringTypeEnum::IfcCoveringTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCoveringTypeEnum::ToString(v)); }

IfcRelCoversSpaces::list::ptr IfcCovering::CoversSpaces() const { return data_->getInverse(Type::IfcRelCoversSpaces, 5)->as<IfcRelCoversSpaces>(); }
IfcRelCoversBldgElements::list::ptr IfcCovering::CoversElements() const { return data_->getInverse(Type::IfcRelCoversBldgElements, 5)->as<IfcRelCoversBldgElements>(); }

const IfcParse::entity& IfcCovering::declaration() const { return *IfcCovering_type; }
Type::Enum IfcCovering::Class() { return Type::IfcCovering; }
IfcCovering::IfcCovering(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCovering)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCovering::IfcCovering(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCoveringTypeEnum::IfcCoveringTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCoveringTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCoveringType
IfcCoveringTypeEnum::IfcCoveringTypeEnum IfcCoveringType::PredefinedType() const { return IfcCoveringTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCoveringType::setPredefinedType(IfcCoveringTypeEnum::IfcCoveringTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCoveringTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCoveringType::declaration() const { return *IfcCoveringType_type; }
Type::Enum IfcCoveringType::Class() { return Type::IfcCoveringType; }
IfcCoveringType::IfcCoveringType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCoveringType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCoveringTypeEnum::IfcCoveringTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCoveringTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCrewResource
bool IfcCrewResource::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum IfcCrewResource::PredefinedType() const { return IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); }
void IfcCrewResource::setPredefinedType(IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcCrewResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCrewResource::declaration() const { return *IfcCrewResource_type; }
Type::Enum IfcCrewResource::Class() { return Type::IfcCrewResource; }
IfcCrewResource::IfcCrewResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCrewResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCrewResource::IfcCrewResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum > v11_PredefinedType) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcCrewResourceTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCrewResourceType
IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum IfcCrewResourceType::PredefinedType() const { return IfcCrewResourceTypeEnum::FromString(*data_->getArgument(11)); }
void IfcCrewResourceType::setPredefinedType(IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcCrewResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCrewResourceType::declaration() const { return *IfcCrewResourceType_type; }
Type::Enum IfcCrewResourceType::Class() { return Type::IfcCrewResourceType; }
IfcCrewResourceType::IfcCrewResourceType(IfcAbstractEntity* e) : IfcConstructionResourceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCrewResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCrewResourceType::IfcCrewResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity, IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum v12_PredefinedType) : IfcConstructionResourceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); e->setArgument(11,v12_PredefinedType,IfcCrewResourceTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCsgPrimitive3D
IfcAxis2Placement3D* IfcCsgPrimitive3D::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCsgPrimitive3D::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcCsgPrimitive3D::declaration() const { return *IfcCsgPrimitive3D_type; }
Type::Enum IfcCsgPrimitive3D::Class() { return Type::IfcCsgPrimitive3D; }
IfcCsgPrimitive3D::IfcCsgPrimitive3D(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCsgPrimitive3D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCsgPrimitive3D::IfcCsgPrimitive3D(IfcAxis2Placement3D* v1_Position) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCsgSolid
IfcCsgSelect* IfcCsgSolid::TreeRootExpression() const { return (IfcCsgSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCsgSolid::setTreeRootExpression(IfcCsgSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcCsgSolid::declaration() const { return *IfcCsgSolid_type; }
Type::Enum IfcCsgSolid::Class() { return Type::IfcCsgSolid; }
IfcCsgSolid::IfcCsgSolid(IfcAbstractEntity* e) : IfcSolidModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCsgSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCsgSolid::IfcCsgSolid(IfcCsgSelect* v1_TreeRootExpression) : IfcSolidModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TreeRootExpression)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurrencyRelationship
IfcMonetaryUnit* IfcCurrencyRelationship::RelatingMonetaryUnit() const { return (IfcMonetaryUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcCurrencyRelationship::setRelatingMonetaryUnit(IfcMonetaryUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcMonetaryUnit* IfcCurrencyRelationship::RelatedMonetaryUnit() const { return (IfcMonetaryUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcCurrencyRelationship::setRelatedMonetaryUnit(IfcMonetaryUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcCurrencyRelationship::ExchangeRate() const { return *data_->getArgument(4); }
void IfcCurrencyRelationship::setExchangeRate(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcCurrencyRelationship::hasRateDateTime() const { return !data_->getArgument(5)->isNull(); }
std::string IfcCurrencyRelationship::RateDateTime() const { return *data_->getArgument(5); }
void IfcCurrencyRelationship::setRateDateTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcCurrencyRelationship::hasRateSource() const { return !data_->getArgument(6)->isNull(); }
IfcLibraryInformation* IfcCurrencyRelationship::RateSource() const { return (IfcLibraryInformation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcCurrencyRelationship::setRateSource(IfcLibraryInformation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcCurrencyRelationship::declaration() const { return *IfcCurrencyRelationship_type; }
Type::Enum IfcCurrencyRelationship::Class() { return Type::IfcCurrencyRelationship; }
IfcCurrencyRelationship::IfcCurrencyRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurrencyRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcMonetaryUnit* v3_RelatingMonetaryUnit, IfcMonetaryUnit* v4_RelatedMonetaryUnit, double v5_ExchangeRate, boost::optional< std::string > v6_RateDateTime, IfcLibraryInformation* v7_RateSource) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingMonetaryUnit)); e->setArgument(3,(v4_RelatedMonetaryUnit)); e->setArgument(4,(v5_ExchangeRate)); if (v6_RateDateTime) { e->setArgument(5,(*v6_RateDateTime)); } else { e->setArgument(5); } e->setArgument(6,(v7_RateSource)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurtainWall
bool IfcCurtainWall::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum IfcCurtainWall::PredefinedType() const { return IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); }
void IfcCurtainWall::setPredefinedType(IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcCurtainWallTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCurtainWall::declaration() const { return *IfcCurtainWall_type; }
Type::Enum IfcCurtainWall::Class() { return Type::IfcCurtainWall; }
IfcCurtainWall::IfcCurtainWall(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurtainWall)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurtainWall::IfcCurtainWall(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcCurtainWallTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurtainWallType
IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum IfcCurtainWallType::PredefinedType() const { return IfcCurtainWallTypeEnum::FromString(*data_->getArgument(9)); }
void IfcCurtainWallType::setPredefinedType(IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcCurtainWallTypeEnum::ToString(v)); }


const IfcParse::entity& IfcCurtainWallType::declaration() const { return *IfcCurtainWallType_type; }
Type::Enum IfcCurtainWallType::Class() { return Type::IfcCurtainWallType; }
IfcCurtainWallType::IfcCurtainWallType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurtainWallType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurtainWallType::IfcCurtainWallType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcCurtainWallTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurve


const IfcParse::entity& IfcCurve::declaration() const { return *IfcCurve_type; }
Type::Enum IfcCurve::Class() { return Type::IfcCurve; }
IfcCurve::IfcCurve(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurve::IfcCurve() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveBoundedPlane
IfcPlane* IfcCurveBoundedPlane::BasisSurface() const { return (IfcPlane*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCurveBoundedPlane::setBasisSurface(IfcPlane* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCurve* IfcCurveBoundedPlane::OuterBoundary() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCurveBoundedPlane::setOuterBoundary(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityList< IfcCurve >::ptr IfcCurveBoundedPlane::InnerBoundaries() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcCurve>(); }
void IfcCurveBoundedPlane::setInnerBoundaries(IfcTemplatedEntityList< IfcCurve >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcCurveBoundedPlane::declaration() const { return *IfcCurveBoundedPlane_type; }
Type::Enum IfcCurveBoundedPlane::Class() { return Type::IfcCurveBoundedPlane; }
IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcAbstractEntity* e) : IfcBoundedSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveBoundedPlane)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcPlane* v1_BasisSurface, IfcCurve* v2_OuterBoundary, IfcTemplatedEntityList< IfcCurve >::ptr v3_InnerBoundaries) : IfcBoundedSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_OuterBoundary)); e->setArgument(2,(v3_InnerBoundaries)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveBoundedSurface
IfcSurface* IfcCurveBoundedSurface::BasisSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcCurveBoundedSurface::setBasisSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcBoundaryCurve >::ptr IfcCurveBoundedSurface::Boundaries() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcBoundaryCurve>(); }
void IfcCurveBoundedSurface::setBoundaries(IfcTemplatedEntityList< IfcBoundaryCurve >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcCurveBoundedSurface::ImplicitOuter() const { return *data_->getArgument(2); }
void IfcCurveBoundedSurface::setImplicitOuter(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcCurveBoundedSurface::declaration() const { return *IfcCurveBoundedSurface_type; }
Type::Enum IfcCurveBoundedSurface::Class() { return Type::IfcCurveBoundedSurface; }
IfcCurveBoundedSurface::IfcCurveBoundedSurface(IfcAbstractEntity* e) : IfcBoundedSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveBoundedSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveBoundedSurface::IfcCurveBoundedSurface(IfcSurface* v1_BasisSurface, IfcTemplatedEntityList< IfcBoundaryCurve >::ptr v2_Boundaries, bool v3_ImplicitOuter) : IfcBoundedSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_Boundaries)->generalize()); e->setArgument(2,(v3_ImplicitOuter)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveStyle
bool IfcCurveStyle::hasCurveFont() const { return !data_->getArgument(1)->isNull(); }
IfcCurveFontOrScaledCurveFontSelect* IfcCurveStyle::CurveFont() const { return (IfcCurveFontOrScaledCurveFontSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCurveStyle::setCurveFont(IfcCurveFontOrScaledCurveFontSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcCurveStyle::hasCurveWidth() const { return !data_->getArgument(2)->isNull(); }
IfcSizeSelect* IfcCurveStyle::CurveWidth() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcCurveStyle::setCurveWidth(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcCurveStyle::hasCurveColour() const { return !data_->getArgument(3)->isNull(); }
IfcColour* IfcCurveStyle::CurveColour() const { return (IfcColour*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcCurveStyle::setCurveColour(IfcColour* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcCurveStyle::hasModelOrDraughting() const { return !data_->getArgument(4)->isNull(); }
bool IfcCurveStyle::ModelOrDraughting() const { return *data_->getArgument(4); }
void IfcCurveStyle::setModelOrDraughting(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcCurveStyle::declaration() const { return *IfcCurveStyle_type; }
Type::Enum IfcCurveStyle::Class() { return Type::IfcCurveStyle; }
IfcCurveStyle::IfcCurveStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, IfcSizeSelect* v3_CurveWidth, IfcColour* v4_CurveColour, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_CurveFont)); e->setArgument(2,(v3_CurveWidth)); e->setArgument(3,(v4_CurveColour)); if (v5_ModelOrDraughting) { e->setArgument(4,(*v5_ModelOrDraughting)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveStyleFont
bool IfcCurveStyleFont::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcCurveStyleFont::Name() const { return *data_->getArgument(0); }
void IfcCurveStyleFont::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcCurveStyleFontPattern >::ptr IfcCurveStyleFont::PatternList() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcCurveStyleFontPattern>(); }
void IfcCurveStyleFont::setPatternList(IfcTemplatedEntityList< IfcCurveStyleFontPattern >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcCurveStyleFont::declaration() const { return *IfcCurveStyleFont_type; }
Type::Enum IfcCurveStyleFont::Class() { return Type::IfcCurveStyleFont; }
IfcCurveStyleFont::IfcCurveStyleFont(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveStyleFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_Name, IfcTemplatedEntityList< IfcCurveStyleFontPattern >::ptr v2_PatternList) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_PatternList)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveStyleFontAndScaling
bool IfcCurveStyleFontAndScaling::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcCurveStyleFontAndScaling::Name() const { return *data_->getArgument(0); }
void IfcCurveStyleFontAndScaling::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCurveStyleFontSelect* IfcCurveStyleFontAndScaling::CurveFont() const { return (IfcCurveStyleFontSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcCurveStyleFontAndScaling::setCurveFont(IfcCurveStyleFontSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcCurveStyleFontAndScaling::CurveFontScaling() const { return *data_->getArgument(2); }
void IfcCurveStyleFontAndScaling::setCurveFontScaling(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcCurveStyleFontAndScaling::declaration() const { return *IfcCurveStyleFontAndScaling_type; }
Type::Enum IfcCurveStyleFontAndScaling::Class() { return Type::IfcCurveStyleFontAndScaling; }
IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveStyleFontAndScaling)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(boost::optional< std::string > v1_Name, IfcCurveStyleFontSelect* v2_CurveFont, double v3_CurveFontScaling) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_CurveFont)); e->setArgument(2,(v3_CurveFontScaling)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCurveStyleFontPattern
double IfcCurveStyleFontPattern::VisibleSegmentLength() const { return *data_->getArgument(0); }
void IfcCurveStyleFontPattern::setVisibleSegmentLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcCurveStyleFontPattern::InvisibleSegmentLength() const { return *data_->getArgument(1); }
void IfcCurveStyleFontPattern::setInvisibleSegmentLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcCurveStyleFontPattern::declaration() const { return *IfcCurveStyleFontPattern_type; }
Type::Enum IfcCurveStyleFontPattern::Class() { return Type::IfcCurveStyleFontPattern; }
IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCurveStyleFontPattern)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_VisibleSegmentLength)); e->setArgument(1,(v2_InvisibleSegmentLength)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcCylindricalSurface
double IfcCylindricalSurface::Radius() const { return *data_->getArgument(1); }
void IfcCylindricalSurface::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcCylindricalSurface::declaration() const { return *IfcCylindricalSurface_type; }
Type::Enum IfcCylindricalSurface::Class() { return Type::IfcCylindricalSurface; }
IfcCylindricalSurface::IfcCylindricalSurface(IfcAbstractEntity* e) : IfcElementarySurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcCylindricalSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcCylindricalSurface::IfcCylindricalSurface(IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDamper
bool IfcDamper::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDamperTypeEnum::IfcDamperTypeEnum IfcDamper::PredefinedType() const { return IfcDamperTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDamper::setPredefinedType(IfcDamperTypeEnum::IfcDamperTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDamperTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDamper::declaration() const { return *IfcDamper_type; }
Type::Enum IfcDamper::Class() { return Type::IfcDamper; }
IfcDamper::IfcDamper(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDamper)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDamper::IfcDamper(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcDamperTypeEnum::IfcDamperTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDamperTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDamperType
IfcDamperTypeEnum::IfcDamperTypeEnum IfcDamperType::PredefinedType() const { return IfcDamperTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDamperType::setPredefinedType(IfcDamperTypeEnum::IfcDamperTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDamperTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDamperType::declaration() const { return *IfcDamperType_type; }
Type::Enum IfcDamperType::Class() { return Type::IfcDamperType; }
IfcDamperType::IfcDamperType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDamperType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDamperType::IfcDamperType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDamperTypeEnum::IfcDamperTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDamperTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDerivedProfileDef
IfcProfileDef* IfcDerivedProfileDef::ParentProfile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcDerivedProfileDef::setParentProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcCartesianTransformationOperator2D* IfcDerivedProfileDef::Operator() const { return (IfcCartesianTransformationOperator2D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcDerivedProfileDef::setOperator(IfcCartesianTransformationOperator2D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcDerivedProfileDef::hasLabel() const { return !data_->getArgument(4)->isNull(); }
std::string IfcDerivedProfileDef::Label() const { return *data_->getArgument(4); }
void IfcDerivedProfileDef::setLabel(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcDerivedProfileDef::declaration() const { return *IfcDerivedProfileDef_type; }
Type::Enum IfcDerivedProfileDef::Class() { return Type::IfcDerivedProfileDef; }
IfcDerivedProfileDef::IfcDerivedProfileDef(IfcAbstractEntity* e) : IfcProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDerivedProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDerivedProfileDef::IfcDerivedProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcProfileDef* v3_ParentProfile, IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label) : IfcProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_ParentProfile)); e->setArgument(3,(v4_Operator)); if (v5_Label) { e->setArgument(4,(*v5_Label)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDerivedUnit
IfcTemplatedEntityList< IfcDerivedUnitElement >::ptr IfcDerivedUnit::Elements() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcDerivedUnitElement>(); }
void IfcDerivedUnit::setElements(IfcTemplatedEntityList< IfcDerivedUnitElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
IfcDerivedUnitEnum::IfcDerivedUnitEnum IfcDerivedUnit::UnitType() const { return IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); }
void IfcDerivedUnit::setUnitType(IfcDerivedUnitEnum::IfcDerivedUnitEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcDerivedUnitEnum::ToString(v)); }
bool IfcDerivedUnit::hasUserDefinedType() const { return !data_->getArgument(2)->isNull(); }
std::string IfcDerivedUnit::UserDefinedType() const { return *data_->getArgument(2); }
void IfcDerivedUnit::setUserDefinedType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcDerivedUnit::declaration() const { return *IfcDerivedUnit_type; }
Type::Enum IfcDerivedUnit::Class() { return Type::IfcDerivedUnit; }
IfcDerivedUnit::IfcDerivedUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDerivedUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDerivedUnit::IfcDerivedUnit(IfcTemplatedEntityList< IfcDerivedUnitElement >::ptr v1_Elements, IfcDerivedUnitEnum::IfcDerivedUnitEnum v2_UnitType, boost::optional< std::string > v3_UserDefinedType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Elements)->generalize()); e->setArgument(1,v2_UnitType,IfcDerivedUnitEnum::ToString(v2_UnitType)); if (v3_UserDefinedType) { e->setArgument(2,(*v3_UserDefinedType)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDerivedUnitElement
IfcNamedUnit* IfcDerivedUnitElement::Unit() const { return (IfcNamedUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcDerivedUnitElement::setUnit(IfcNamedUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
int IfcDerivedUnitElement::Exponent() const { return *data_->getArgument(1); }
void IfcDerivedUnitElement::setExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcDerivedUnitElement::declaration() const { return *IfcDerivedUnitElement_type; }
Type::Enum IfcDerivedUnitElement::Class() { return Type::IfcDerivedUnitElement; }
IfcDerivedUnitElement::IfcDerivedUnitElement(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDerivedUnitElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDerivedUnitElement::IfcDerivedUnitElement(IfcNamedUnit* v1_Unit, int v2_Exponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Unit)); e->setArgument(1,(v2_Exponent)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDimensionalExponents
int IfcDimensionalExponents::LengthExponent() const { return *data_->getArgument(0); }
void IfcDimensionalExponents::setLengthExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
int IfcDimensionalExponents::MassExponent() const { return *data_->getArgument(1); }
void IfcDimensionalExponents::setMassExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
int IfcDimensionalExponents::TimeExponent() const { return *data_->getArgument(2); }
void IfcDimensionalExponents::setTimeExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
int IfcDimensionalExponents::ElectricCurrentExponent() const { return *data_->getArgument(3); }
void IfcDimensionalExponents::setElectricCurrentExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
int IfcDimensionalExponents::ThermodynamicTemperatureExponent() const { return *data_->getArgument(4); }
void IfcDimensionalExponents::setThermodynamicTemperatureExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
int IfcDimensionalExponents::AmountOfSubstanceExponent() const { return *data_->getArgument(5); }
void IfcDimensionalExponents::setAmountOfSubstanceExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
int IfcDimensionalExponents::LuminousIntensityExponent() const { return *data_->getArgument(6); }
void IfcDimensionalExponents::setLuminousIntensityExponent(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcDimensionalExponents::declaration() const { return *IfcDimensionalExponents_type; }
Type::Enum IfcDimensionalExponents::Class() { return Type::IfcDimensionalExponents; }
IfcDimensionalExponents::IfcDimensionalExponents(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcDimensionalExponents)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDimensionalExponents::IfcDimensionalExponents(int v1_LengthExponent, int v2_MassExponent, int v3_TimeExponent, int v4_ElectricCurrentExponent, int v5_ThermodynamicTemperatureExponent, int v6_AmountOfSubstanceExponent, int v7_LuminousIntensityExponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LengthExponent)); e->setArgument(1,(v2_MassExponent)); e->setArgument(2,(v3_TimeExponent)); e->setArgument(3,(v4_ElectricCurrentExponent)); e->setArgument(4,(v5_ThermodynamicTemperatureExponent)); e->setArgument(5,(v6_AmountOfSubstanceExponent)); e->setArgument(6,(v7_LuminousIntensityExponent)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDirection
std::vector< double > /*[2:3]*/ IfcDirection::DirectionRatios() const { return *data_->getArgument(0); }
void IfcDirection::setDirectionRatios(std::vector< double > /*[2:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcDirection::declaration() const { return *IfcDirection_type; }
Type::Enum IfcDirection::Class() { return Type::IfcDirection; }
IfcDirection::IfcDirection(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDirection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionRatios) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DirectionRatios)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDiscreteAccessory
bool IfcDiscreteAccessory::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum IfcDiscreteAccessory::PredefinedType() const { return IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDiscreteAccessory::setPredefinedType(IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDiscreteAccessoryTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDiscreteAccessory::declaration() const { return *IfcDiscreteAccessory_type; }
Type::Enum IfcDiscreteAccessory::Class() { return Type::IfcDiscreteAccessory; }
IfcDiscreteAccessory::IfcDiscreteAccessory(IfcAbstractEntity* e) : IfcElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDiscreteAccessory)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDiscreteAccessory::IfcDiscreteAccessory(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum > v9_PredefinedType) : IfcElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDiscreteAccessoryTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDiscreteAccessoryType
IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum IfcDiscreteAccessoryType::PredefinedType() const { return IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDiscreteAccessoryType::setPredefinedType(IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDiscreteAccessoryTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDiscreteAccessoryType::declaration() const { return *IfcDiscreteAccessoryType_type; }
Type::Enum IfcDiscreteAccessoryType::Class() { return Type::IfcDiscreteAccessoryType; }
IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(IfcAbstractEntity* e) : IfcElementComponentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDiscreteAccessoryType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum v10_PredefinedType) : IfcElementComponentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDiscreteAccessoryTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionChamberElement
bool IfcDistributionChamberElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum IfcDistributionChamberElement::PredefinedType() const { return IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDistributionChamberElement::setPredefinedType(IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDistributionChamberElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDistributionChamberElement::declaration() const { return *IfcDistributionChamberElement_type; }
Type::Enum IfcDistributionChamberElement::Class() { return Type::IfcDistributionChamberElement; }
IfcDistributionChamberElement::IfcDistributionChamberElement(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionChamberElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionChamberElement::IfcDistributionChamberElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum > v9_PredefinedType) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDistributionChamberElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionChamberElementType
IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum IfcDistributionChamberElementType::PredefinedType() const { return IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDistributionChamberElementType::setPredefinedType(IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDistributionChamberElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDistributionChamberElementType::declaration() const { return *IfcDistributionChamberElementType_type; }
Type::Enum IfcDistributionChamberElementType::Class() { return Type::IfcDistributionChamberElementType; }
IfcDistributionChamberElementType::IfcDistributionChamberElementType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionChamberElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionChamberElementType::IfcDistributionChamberElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum v10_PredefinedType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDistributionChamberElementTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionCircuit


const IfcParse::entity& IfcDistributionCircuit::declaration() const { return *IfcDistributionCircuit_type; }
Type::Enum IfcDistributionCircuit::Class() { return Type::IfcDistributionCircuit; }
IfcDistributionCircuit::IfcDistributionCircuit(IfcAbstractEntity* e) : IfcDistributionSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionCircuit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionCircuit::IfcDistributionCircuit(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< IfcDistributionSystemEnum::IfcDistributionSystemEnum > v7_PredefinedType) : IfcDistributionSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcDistributionSystemEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionControlElement

IfcRelFlowControlElements::list::ptr IfcDistributionControlElement::AssignedToFlowElement() const { return data_->getInverse(Type::IfcRelFlowControlElements, 4)->as<IfcRelFlowControlElements>(); }

const IfcParse::entity& IfcDistributionControlElement::declaration() const { return *IfcDistributionControlElement_type; }
Type::Enum IfcDistributionControlElement::Class() { return Type::IfcDistributionControlElement; }
IfcDistributionControlElement::IfcDistributionControlElement(IfcAbstractEntity* e) : IfcDistributionElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionControlElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionControlElement::IfcDistributionControlElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionControlElementType


const IfcParse::entity& IfcDistributionControlElementType::declaration() const { return *IfcDistributionControlElementType_type; }
Type::Enum IfcDistributionControlElementType::Class() { return Type::IfcDistributionControlElementType; }
IfcDistributionControlElementType::IfcDistributionControlElementType(IfcAbstractEntity* e) : IfcDistributionElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionControlElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionControlElementType::IfcDistributionControlElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionElement

IfcRelConnectsPortToElement::list::ptr IfcDistributionElement::HasPorts() const { return data_->getInverse(Type::IfcRelConnectsPortToElement, 5)->as<IfcRelConnectsPortToElement>(); }

const IfcParse::entity& IfcDistributionElement::declaration() const { return *IfcDistributionElement_type; }
Type::Enum IfcDistributionElement::Class() { return Type::IfcDistributionElement; }
IfcDistributionElement::IfcDistributionElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionElement::IfcDistributionElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionElementType


const IfcParse::entity& IfcDistributionElementType::declaration() const { return *IfcDistributionElementType_type; }
Type::Enum IfcDistributionElementType::Class() { return Type::IfcDistributionElementType; }
IfcDistributionElementType::IfcDistributionElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionElementType::IfcDistributionElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionFlowElement

IfcRelFlowControlElements::list::ptr IfcDistributionFlowElement::HasControlElements() const { return data_->getInverse(Type::IfcRelFlowControlElements, 5)->as<IfcRelFlowControlElements>(); }

const IfcParse::entity& IfcDistributionFlowElement::declaration() const { return *IfcDistributionFlowElement_type; }
Type::Enum IfcDistributionFlowElement::Class() { return Type::IfcDistributionFlowElement; }
IfcDistributionFlowElement::IfcDistributionFlowElement(IfcAbstractEntity* e) : IfcDistributionElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionFlowElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionFlowElement::IfcDistributionFlowElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionFlowElementType


const IfcParse::entity& IfcDistributionFlowElementType::declaration() const { return *IfcDistributionFlowElementType_type; }
Type::Enum IfcDistributionFlowElementType::Class() { return Type::IfcDistributionFlowElementType; }
IfcDistributionFlowElementType::IfcDistributionFlowElementType(IfcAbstractEntity* e) : IfcDistributionElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionFlowElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionPort
bool IfcDistributionPort::hasFlowDirection() const { return !data_->getArgument(7)->isNull(); }
IfcFlowDirectionEnum::IfcFlowDirectionEnum IfcDistributionPort::FlowDirection() const { return IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); }
void IfcDistributionPort::setFlowDirection(IfcFlowDirectionEnum::IfcFlowDirectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcFlowDirectionEnum::ToString(v)); }
bool IfcDistributionPort::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum IfcDistributionPort::PredefinedType() const { return IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDistributionPort::setPredefinedType(IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDistributionPortTypeEnum::ToString(v)); }
bool IfcDistributionPort::hasSystemType() const { return !data_->getArgument(9)->isNull(); }
IfcDistributionSystemEnum::IfcDistributionSystemEnum IfcDistributionPort::SystemType() const { return IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); }
void IfcDistributionPort::setSystemType(IfcDistributionSystemEnum::IfcDistributionSystemEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDistributionSystemEnum::ToString(v)); }


const IfcParse::entity& IfcDistributionPort::declaration() const { return *IfcDistributionPort_type; }
Type::Enum IfcDistributionPort::Class() { return Type::IfcDistributionPort; }
IfcDistributionPort::IfcDistributionPort(IfcAbstractEntity* e) : IfcPort((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionPort)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< IfcFlowDirectionEnum::IfcFlowDirectionEnum > v8_FlowDirection, boost::optional< IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum > v9_PredefinedType, boost::optional< IfcDistributionSystemEnum::IfcDistributionSystemEnum > v10_SystemType) : IfcPort((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_FlowDirection) { e->setArgument(7,*v8_FlowDirection,IfcFlowDirectionEnum::ToString(*v8_FlowDirection)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDistributionPortTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } if (v10_SystemType) { e->setArgument(9,*v10_SystemType,IfcDistributionSystemEnum::ToString(*v10_SystemType)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDistributionSystem
bool IfcDistributionSystem::hasLongName() const { return !data_->getArgument(5)->isNull(); }
std::string IfcDistributionSystem::LongName() const { return *data_->getArgument(5); }
void IfcDistributionSystem::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcDistributionSystem::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcDistributionSystemEnum::IfcDistributionSystemEnum IfcDistributionSystem::PredefinedType() const { return IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); }
void IfcDistributionSystem::setPredefinedType(IfcDistributionSystemEnum::IfcDistributionSystemEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcDistributionSystemEnum::ToString(v)); }


const IfcParse::entity& IfcDistributionSystem::declaration() const { return *IfcDistributionSystem_type; }
Type::Enum IfcDistributionSystem::Class() { return Type::IfcDistributionSystem; }
IfcDistributionSystem::IfcDistributionSystem(IfcAbstractEntity* e) : IfcSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDistributionSystem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDistributionSystem::IfcDistributionSystem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< IfcDistributionSystemEnum::IfcDistributionSystemEnum > v7_PredefinedType) : IfcSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcDistributionSystemEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDocumentInformation
std::string IfcDocumentInformation::Identification() const { return *data_->getArgument(0); }
void IfcDocumentInformation::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcDocumentInformation::Name() const { return *data_->getArgument(1); }
void IfcDocumentInformation::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcDocumentInformation::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcDocumentInformation::Description() const { return *data_->getArgument(2); }
void IfcDocumentInformation::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcDocumentInformation::hasLocation() const { return !data_->getArgument(3)->isNull(); }
std::string IfcDocumentInformation::Location() const { return *data_->getArgument(3); }
void IfcDocumentInformation::setLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcDocumentInformation::hasPurpose() const { return !data_->getArgument(4)->isNull(); }
std::string IfcDocumentInformation::Purpose() const { return *data_->getArgument(4); }
void IfcDocumentInformation::setPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcDocumentInformation::hasIntendedUse() const { return !data_->getArgument(5)->isNull(); }
std::string IfcDocumentInformation::IntendedUse() const { return *data_->getArgument(5); }
void IfcDocumentInformation::setIntendedUse(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcDocumentInformation::hasScope() const { return !data_->getArgument(6)->isNull(); }
std::string IfcDocumentInformation::Scope() const { return *data_->getArgument(6); }
void IfcDocumentInformation::setScope(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcDocumentInformation::hasRevision() const { return !data_->getArgument(7)->isNull(); }
std::string IfcDocumentInformation::Revision() const { return *data_->getArgument(7); }
void IfcDocumentInformation::setRevision(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcDocumentInformation::hasDocumentOwner() const { return !data_->getArgument(8)->isNull(); }
IfcActorSelect* IfcDocumentInformation::DocumentOwner() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcDocumentInformation::setDocumentOwner(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcDocumentInformation::hasEditors() const { return !data_->getArgument(9)->isNull(); }
IfcEntityList::ptr IfcDocumentInformation::Editors() const { return *data_->getArgument(9); }
void IfcDocumentInformation::setEditors(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcDocumentInformation::hasCreationTime() const { return !data_->getArgument(10)->isNull(); }
std::string IfcDocumentInformation::CreationTime() const { return *data_->getArgument(10); }
void IfcDocumentInformation::setCreationTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcDocumentInformation::hasLastRevisionTime() const { return !data_->getArgument(11)->isNull(); }
std::string IfcDocumentInformation::LastRevisionTime() const { return *data_->getArgument(11); }
void IfcDocumentInformation::setLastRevisionTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcDocumentInformation::hasElectronicFormat() const { return !data_->getArgument(12)->isNull(); }
std::string IfcDocumentInformation::ElectronicFormat() const { return *data_->getArgument(12); }
void IfcDocumentInformation::setElectronicFormat(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcDocumentInformation::hasValidFrom() const { return !data_->getArgument(13)->isNull(); }
std::string IfcDocumentInformation::ValidFrom() const { return *data_->getArgument(13); }
void IfcDocumentInformation::setValidFrom(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcDocumentInformation::hasValidUntil() const { return !data_->getArgument(14)->isNull(); }
std::string IfcDocumentInformation::ValidUntil() const { return *data_->getArgument(14); }
void IfcDocumentInformation::setValidUntil(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcDocumentInformation::hasConfidentiality() const { return !data_->getArgument(15)->isNull(); }
IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum IfcDocumentInformation::Confidentiality() const { return IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); }
void IfcDocumentInformation::setConfidentiality(IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v,IfcDocumentConfidentialityEnum::ToString(v)); }
bool IfcDocumentInformation::hasStatus() const { return !data_->getArgument(16)->isNull(); }
IfcDocumentStatusEnum::IfcDocumentStatusEnum IfcDocumentInformation::Status() const { return IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); }
void IfcDocumentInformation::setStatus(IfcDocumentStatusEnum::IfcDocumentStatusEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v,IfcDocumentStatusEnum::ToString(v)); }

IfcRelAssociatesDocument::list::ptr IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(Type::IfcRelAssociatesDocument, 5)->as<IfcRelAssociatesDocument>(); }
IfcDocumentReference::list::ptr IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(Type::IfcDocumentReference, 4)->as<IfcDocumentReference>(); }
IfcDocumentInformationRelationship::list::ptr IfcDocumentInformation::IsPointedTo() const { return data_->getInverse(Type::IfcDocumentInformationRelationship, 3)->as<IfcDocumentInformationRelationship>(); }
IfcDocumentInformationRelationship::list::ptr IfcDocumentInformation::IsPointer() const { return data_->getInverse(Type::IfcDocumentInformationRelationship, 2)->as<IfcDocumentInformationRelationship>(); }

const IfcParse::entity& IfcDocumentInformation::declaration() const { return *IfcDocumentInformation_type; }
Type::Enum IfcDocumentInformation::Class() { return Type::IfcDocumentInformation; }
IfcDocumentInformation::IfcDocumentInformation(IfcAbstractEntity* e) : IfcExternalInformation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDocumentInformation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDocumentInformation::IfcDocumentInformation(std::string v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< std::string > v4_Location, boost::optional< std::string > v5_Purpose, boost::optional< std::string > v6_IntendedUse, boost::optional< std::string > v7_Scope, boost::optional< std::string > v8_Revision, IfcActorSelect* v9_DocumentOwner, boost::optional< IfcEntityList::ptr > v10_Editors, boost::optional< std::string > v11_CreationTime, boost::optional< std::string > v12_LastRevisionTime, boost::optional< std::string > v13_ElectronicFormat, boost::optional< std::string > v14_ValidFrom, boost::optional< std::string > v15_ValidUntil, boost::optional< IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum > v16_Confidentiality, boost::optional< IfcDocumentStatusEnum::IfcDocumentStatusEnum > v17_Status) : IfcExternalInformation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Identification)); e->setArgument(1,(v2_Name)); if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } if (v4_Location) { e->setArgument(3,(*v4_Location)); } else { e->setArgument(3); } if (v5_Purpose) { e->setArgument(4,(*v5_Purpose)); } else { e->setArgument(4); } if (v6_IntendedUse) { e->setArgument(5,(*v6_IntendedUse)); } else { e->setArgument(5); } if (v7_Scope) { e->setArgument(6,(*v7_Scope)); } else { e->setArgument(6); } if (v8_Revision) { e->setArgument(7,(*v8_Revision)); } else { e->setArgument(7); } e->setArgument(8,(v9_DocumentOwner)); if (v10_Editors) { e->setArgument(9,(*v10_Editors)); } else { e->setArgument(9); } if (v11_CreationTime) { e->setArgument(10,(*v11_CreationTime)); } else { e->setArgument(10); } if (v12_LastRevisionTime) { e->setArgument(11,(*v12_LastRevisionTime)); } else { e->setArgument(11); } if (v13_ElectronicFormat) { e->setArgument(12,(*v13_ElectronicFormat)); } else { e->setArgument(12); } if (v14_ValidFrom) { e->setArgument(13,(*v14_ValidFrom)); } else { e->setArgument(13); } if (v15_ValidUntil) { e->setArgument(14,(*v15_ValidUntil)); } else { e->setArgument(14); } if (v16_Confidentiality) { e->setArgument(15,*v16_Confidentiality,IfcDocumentConfidentialityEnum::ToString(*v16_Confidentiality)); } else { e->setArgument(15); } if (v17_Status) { e->setArgument(16,*v17_Status,IfcDocumentStatusEnum::ToString(*v17_Status)); } else { e->setArgument(16); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDocumentInformationRelationship
IfcDocumentInformation* IfcDocumentInformationRelationship::RelatingDocument() const { return (IfcDocumentInformation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcDocumentInformationRelationship::setRelatingDocument(IfcDocumentInformation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcDocumentInformation >::ptr IfcDocumentInformationRelationship::RelatedDocuments() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcDocumentInformation>(); }
void IfcDocumentInformationRelationship::setRelatedDocuments(IfcTemplatedEntityList< IfcDocumentInformation >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }
bool IfcDocumentInformationRelationship::hasRelationshipType() const { return !data_->getArgument(4)->isNull(); }
std::string IfcDocumentInformationRelationship::RelationshipType() const { return *data_->getArgument(4); }
void IfcDocumentInformationRelationship::setRelationshipType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcDocumentInformationRelationship::declaration() const { return *IfcDocumentInformationRelationship_type; }
Type::Enum IfcDocumentInformationRelationship::Class() { return Type::IfcDocumentInformationRelationship; }
IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDocumentInformationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcDocumentInformation* v3_RelatingDocument, IfcTemplatedEntityList< IfcDocumentInformation >::ptr v4_RelatedDocuments, boost::optional< std::string > v5_RelationshipType) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingDocument)); e->setArgument(3,(v4_RelatedDocuments)->generalize()); if (v5_RelationshipType) { e->setArgument(4,(*v5_RelationshipType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDocumentReference
bool IfcDocumentReference::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcDocumentReference::Description() const { return *data_->getArgument(3); }
void IfcDocumentReference::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcDocumentReference::hasReferencedDocument() const { return !data_->getArgument(4)->isNull(); }
IfcDocumentInformation* IfcDocumentReference::ReferencedDocument() const { return (IfcDocumentInformation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcDocumentReference::setReferencedDocument(IfcDocumentInformation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }

IfcRelAssociatesDocument::list::ptr IfcDocumentReference::DocumentRefForObjects() const { return data_->getInverse(Type::IfcRelAssociatesDocument, 5)->as<IfcRelAssociatesDocument>(); }

const IfcParse::entity& IfcDocumentReference::declaration() const { return *IfcDocumentReference_type; }
Type::Enum IfcDocumentReference::Class() { return Type::IfcDocumentReference; }
IfcDocumentReference::IfcDocumentReference(IfcAbstractEntity* e) : IfcExternalReference((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDocumentReference)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDocumentReference::IfcDocumentReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcDocumentInformation* v5_ReferencedDocument) : IfcExternalReference((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ReferencedDocument)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoor
bool IfcDoor::hasOverallHeight() const { return !data_->getArgument(8)->isNull(); }
double IfcDoor::OverallHeight() const { return *data_->getArgument(8); }
void IfcDoor::setOverallHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcDoor::hasOverallWidth() const { return !data_->getArgument(9)->isNull(); }
double IfcDoor::OverallWidth() const { return *data_->getArgument(9); }
void IfcDoor::setOverallWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcDoor::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcDoorTypeEnum::IfcDoorTypeEnum IfcDoor::PredefinedType() const { return IfcDoorTypeEnum::FromString(*data_->getArgument(10)); }
void IfcDoor::setPredefinedType(IfcDoorTypeEnum::IfcDoorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcDoorTypeEnum::ToString(v)); }
bool IfcDoor::hasOperationType() const { return !data_->getArgument(11)->isNull(); }
IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum IfcDoor::OperationType() const { return IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); }
void IfcDoor::setOperationType(IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcDoorTypeOperationEnum::ToString(v)); }
bool IfcDoor::hasUserDefinedOperationType() const { return !data_->getArgument(12)->isNull(); }
std::string IfcDoor::UserDefinedOperationType() const { return *data_->getArgument(12); }
void IfcDoor::setUserDefinedOperationType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcDoor::declaration() const { return *IfcDoor_type; }
Type::Enum IfcDoor::Class() { return Type::IfcDoor; }
IfcDoor::IfcDoor(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoor::IfcDoor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< IfcDoorTypeEnum::IfcDoorTypeEnum > v11_PredefinedType, boost::optional< IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_OverallHeight) { e->setArgument(8,(*v9_OverallHeight)); } else { e->setArgument(8); } if (v10_OverallWidth) { e->setArgument(9,(*v10_OverallWidth)); } else { e->setArgument(9); } if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcDoorTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } if (v12_OperationType) { e->setArgument(11,*v12_OperationType,IfcDoorTypeOperationEnum::ToString(*v12_OperationType)); } else { e->setArgument(11); } if (v13_UserDefinedOperationType) { e->setArgument(12,(*v13_UserDefinedOperationType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorLiningProperties
bool IfcDoorLiningProperties::hasLiningDepth() const { return !data_->getArgument(4)->isNull(); }
double IfcDoorLiningProperties::LiningDepth() const { return *data_->getArgument(4); }
void IfcDoorLiningProperties::setLiningDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcDoorLiningProperties::hasLiningThickness() const { return !data_->getArgument(5)->isNull(); }
double IfcDoorLiningProperties::LiningThickness() const { return *data_->getArgument(5); }
void IfcDoorLiningProperties::setLiningThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcDoorLiningProperties::hasThresholdDepth() const { return !data_->getArgument(6)->isNull(); }
double IfcDoorLiningProperties::ThresholdDepth() const { return *data_->getArgument(6); }
void IfcDoorLiningProperties::setThresholdDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcDoorLiningProperties::hasThresholdThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcDoorLiningProperties::ThresholdThickness() const { return *data_->getArgument(7); }
void IfcDoorLiningProperties::setThresholdThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcDoorLiningProperties::hasTransomThickness() const { return !data_->getArgument(8)->isNull(); }
double IfcDoorLiningProperties::TransomThickness() const { return *data_->getArgument(8); }
void IfcDoorLiningProperties::setTransomThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcDoorLiningProperties::hasTransomOffset() const { return !data_->getArgument(9)->isNull(); }
double IfcDoorLiningProperties::TransomOffset() const { return *data_->getArgument(9); }
void IfcDoorLiningProperties::setTransomOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcDoorLiningProperties::hasLiningOffset() const { return !data_->getArgument(10)->isNull(); }
double IfcDoorLiningProperties::LiningOffset() const { return *data_->getArgument(10); }
void IfcDoorLiningProperties::setLiningOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcDoorLiningProperties::hasThresholdOffset() const { return !data_->getArgument(11)->isNull(); }
double IfcDoorLiningProperties::ThresholdOffset() const { return *data_->getArgument(11); }
void IfcDoorLiningProperties::setThresholdOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcDoorLiningProperties::hasCasingThickness() const { return !data_->getArgument(12)->isNull(); }
double IfcDoorLiningProperties::CasingThickness() const { return *data_->getArgument(12); }
void IfcDoorLiningProperties::setCasingThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcDoorLiningProperties::hasCasingDepth() const { return !data_->getArgument(13)->isNull(); }
double IfcDoorLiningProperties::CasingDepth() const { return *data_->getArgument(13); }
void IfcDoorLiningProperties::setCasingDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcDoorLiningProperties::hasShapeAspectStyle() const { return !data_->getArgument(14)->isNull(); }
IfcShapeAspect* IfcDoorLiningProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(14))); }
void IfcDoorLiningProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcDoorLiningProperties::hasLiningToPanelOffsetX() const { return !data_->getArgument(15)->isNull(); }
double IfcDoorLiningProperties::LiningToPanelOffsetX() const { return *data_->getArgument(15); }
void IfcDoorLiningProperties::setLiningToPanelOffsetX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcDoorLiningProperties::hasLiningToPanelOffsetY() const { return !data_->getArgument(16)->isNull(); }
double IfcDoorLiningProperties::LiningToPanelOffsetY() const { return *data_->getArgument(16); }
void IfcDoorLiningProperties::setLiningToPanelOffsetY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }


const IfcParse::entity& IfcDoorLiningProperties::declaration() const { return *IfcDoorLiningProperties_type; }
Type::Enum IfcDoorLiningProperties::Class() { return Type::IfcDoorLiningProperties; }
IfcDoorLiningProperties::IfcDoorLiningProperties(IfcAbstractEntity* e) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorLiningProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_ThresholdDepth, boost::optional< double > v8_ThresholdThickness, boost::optional< double > v9_TransomThickness, boost::optional< double > v10_TransomOffset, boost::optional< double > v11_LiningOffset, boost::optional< double > v12_ThresholdOffset, boost::optional< double > v13_CasingThickness, boost::optional< double > v14_CasingDepth, IfcShapeAspect* v15_ShapeAspectStyle, boost::optional< double > v16_LiningToPanelOffsetX, boost::optional< double > v17_LiningToPanelOffsetY) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_LiningDepth) { e->setArgument(4,(*v5_LiningDepth)); } else { e->setArgument(4); } if (v6_LiningThickness) { e->setArgument(5,(*v6_LiningThickness)); } else { e->setArgument(5); } if (v7_ThresholdDepth) { e->setArgument(6,(*v7_ThresholdDepth)); } else { e->setArgument(6); } if (v8_ThresholdThickness) { e->setArgument(7,(*v8_ThresholdThickness)); } else { e->setArgument(7); } if (v9_TransomThickness) { e->setArgument(8,(*v9_TransomThickness)); } else { e->setArgument(8); } if (v10_TransomOffset) { e->setArgument(9,(*v10_TransomOffset)); } else { e->setArgument(9); } if (v11_LiningOffset) { e->setArgument(10,(*v11_LiningOffset)); } else { e->setArgument(10); } if (v12_ThresholdOffset) { e->setArgument(11,(*v12_ThresholdOffset)); } else { e->setArgument(11); } if (v13_CasingThickness) { e->setArgument(12,(*v13_CasingThickness)); } else { e->setArgument(12); } if (v14_CasingDepth) { e->setArgument(13,(*v14_CasingDepth)); } else { e->setArgument(13); } e->setArgument(14,(v15_ShapeAspectStyle)); if (v16_LiningToPanelOffsetX) { e->setArgument(15,(*v16_LiningToPanelOffsetX)); } else { e->setArgument(15); } if (v17_LiningToPanelOffsetY) { e->setArgument(16,(*v17_LiningToPanelOffsetY)); } else { e->setArgument(16); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorPanelProperties
bool IfcDoorPanelProperties::hasPanelDepth() const { return !data_->getArgument(4)->isNull(); }
double IfcDoorPanelProperties::PanelDepth() const { return *data_->getArgument(4); }
void IfcDoorPanelProperties::setPanelDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum IfcDoorPanelProperties::PanelOperation() const { return IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); }
void IfcDoorPanelProperties::setPanelOperation(IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcDoorPanelOperationEnum::ToString(v)); }
bool IfcDoorPanelProperties::hasPanelWidth() const { return !data_->getArgument(6)->isNull(); }
double IfcDoorPanelProperties::PanelWidth() const { return *data_->getArgument(6); }
void IfcDoorPanelProperties::setPanelWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum IfcDoorPanelProperties::PanelPosition() const { return IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); }
void IfcDoorPanelProperties::setPanelPosition(IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcDoorPanelPositionEnum::ToString(v)); }
bool IfcDoorPanelProperties::hasShapeAspectStyle() const { return !data_->getArgument(8)->isNull(); }
IfcShapeAspect* IfcDoorPanelProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcDoorPanelProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcDoorPanelProperties::declaration() const { return *IfcDoorPanelProperties_type; }
Type::Enum IfcDoorPanelProperties::Class() { return Type::IfcDoorPanelProperties; }
IfcDoorPanelProperties::IfcDoorPanelProperties(IfcAbstractEntity* e) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorPanelProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorPanelProperties::IfcDoorPanelProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum v6_PanelOperation, boost::optional< double > v7_PanelWidth, IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum v8_PanelPosition, IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_PanelDepth) { e->setArgument(4,(*v5_PanelDepth)); } else { e->setArgument(4); } e->setArgument(5,v6_PanelOperation,IfcDoorPanelOperationEnum::ToString(v6_PanelOperation)); if (v7_PanelWidth) { e->setArgument(6,(*v7_PanelWidth)); } else { e->setArgument(6); } e->setArgument(7,v8_PanelPosition,IfcDoorPanelPositionEnum::ToString(v8_PanelPosition)); e->setArgument(8,(v9_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorStandardCase


const IfcParse::entity& IfcDoorStandardCase::declaration() const { return *IfcDoorStandardCase_type; }
Type::Enum IfcDoorStandardCase::Class() { return Type::IfcDoorStandardCase; }
IfcDoorStandardCase::IfcDoorStandardCase(IfcAbstractEntity* e) : IfcDoor((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorStandardCase::IfcDoorStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< IfcDoorTypeEnum::IfcDoorTypeEnum > v11_PredefinedType, boost::optional< IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcDoor((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_OverallHeight) { e->setArgument(8,(*v9_OverallHeight)); } else { e->setArgument(8); } if (v10_OverallWidth) { e->setArgument(9,(*v10_OverallWidth)); } else { e->setArgument(9); } if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcDoorTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } if (v12_OperationType) { e->setArgument(11,*v12_OperationType,IfcDoorTypeOperationEnum::ToString(*v12_OperationType)); } else { e->setArgument(11); } if (v13_UserDefinedOperationType) { e->setArgument(12,(*v13_UserDefinedOperationType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorStyle
IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum IfcDoorStyle::OperationType() const { return IfcDoorStyleOperationEnum::FromString(*data_->getArgument(8)); }
void IfcDoorStyle::setOperationType(IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDoorStyleOperationEnum::ToString(v)); }
IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum IfcDoorStyle::ConstructionType() const { return IfcDoorStyleConstructionEnum::FromString(*data_->getArgument(9)); }
void IfcDoorStyle::setConstructionType(IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDoorStyleConstructionEnum::ToString(v)); }
bool IfcDoorStyle::ParameterTakesPrecedence() const { return *data_->getArgument(10); }
void IfcDoorStyle::setParameterTakesPrecedence(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcDoorStyle::Sizeable() const { return *data_->getArgument(11); }
void IfcDoorStyle::setSizeable(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcDoorStyle::declaration() const { return *IfcDoorStyle_type; }
Type::Enum IfcDoorStyle::Class() { return Type::IfcDoorStyle; }
IfcDoorStyle::IfcDoorStyle(IfcAbstractEntity* e) : IfcTypeProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorStyle::IfcDoorStyle(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum v9_OperationType, IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum v10_ConstructionType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } e->setArgument(8,v9_OperationType,IfcDoorStyleOperationEnum::ToString(v9_OperationType)); e->setArgument(9,v10_ConstructionType,IfcDoorStyleConstructionEnum::ToString(v10_ConstructionType)); e->setArgument(10,(v11_ParameterTakesPrecedence)); e->setArgument(11,(v12_Sizeable)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDoorType
IfcDoorTypeEnum::IfcDoorTypeEnum IfcDoorType::PredefinedType() const { return IfcDoorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDoorType::setPredefinedType(IfcDoorTypeEnum::IfcDoorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDoorTypeEnum::ToString(v)); }
IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum IfcDoorType::OperationType() const { return IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); }
void IfcDoorType::setOperationType(IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcDoorTypeOperationEnum::ToString(v)); }
bool IfcDoorType::hasParameterTakesPrecedence() const { return !data_->getArgument(11)->isNull(); }
bool IfcDoorType::ParameterTakesPrecedence() const { return *data_->getArgument(11); }
void IfcDoorType::setParameterTakesPrecedence(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcDoorType::hasUserDefinedOperationType() const { return !data_->getArgument(12)->isNull(); }
std::string IfcDoorType::UserDefinedOperationType() const { return *data_->getArgument(12); }
void IfcDoorType::setUserDefinedOperationType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcDoorType::declaration() const { return *IfcDoorType_type; }
Type::Enum IfcDoorType::Class() { return Type::IfcDoorType; }
IfcDoorType::IfcDoorType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDoorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDoorType::IfcDoorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDoorTypeEnum::IfcDoorTypeEnum v10_PredefinedType, IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum v11_OperationType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDoorTypeEnum::ToString(v10_PredefinedType)); e->setArgument(10,v11_OperationType,IfcDoorTypeOperationEnum::ToString(v11_OperationType)); if (v12_ParameterTakesPrecedence) { e->setArgument(11,(*v12_ParameterTakesPrecedence)); } else { e->setArgument(11); } if (v13_UserDefinedOperationType) { e->setArgument(12,(*v13_UserDefinedOperationType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDraughtingPreDefinedColour


const IfcParse::entity& IfcDraughtingPreDefinedColour::declaration() const { return *IfcDraughtingPreDefinedColour_type; }
Type::Enum IfcDraughtingPreDefinedColour::Class() { return Type::IfcDraughtingPreDefinedColour; }
IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(IfcAbstractEntity* e) : IfcPreDefinedColour((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDraughtingPreDefinedColour)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(std::string v1_Name) : IfcPreDefinedColour((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDraughtingPreDefinedCurveFont


const IfcParse::entity& IfcDraughtingPreDefinedCurveFont::declaration() const { return *IfcDraughtingPreDefinedCurveFont_type; }
Type::Enum IfcDraughtingPreDefinedCurveFont::Class() { return Type::IfcDraughtingPreDefinedCurveFont; }
IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(IfcAbstractEntity* e) : IfcPreDefinedCurveFont((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDraughtingPreDefinedCurveFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedCurveFont((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDuctFitting
bool IfcDuctFitting::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum IfcDuctFitting::PredefinedType() const { return IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDuctFitting::setPredefinedType(IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDuctFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDuctFitting::declaration() const { return *IfcDuctFitting_type; }
Type::Enum IfcDuctFitting::Class() { return Type::IfcDuctFitting; }
IfcDuctFitting::IfcDuctFitting(IfcAbstractEntity* e) : IfcFlowFitting((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDuctFitting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDuctFitting::IfcDuctFitting(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum > v9_PredefinedType) : IfcFlowFitting((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDuctFittingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDuctFittingType
IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum IfcDuctFittingType::PredefinedType() const { return IfcDuctFittingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDuctFittingType::setPredefinedType(IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDuctFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDuctFittingType::declaration() const { return *IfcDuctFittingType_type; }
Type::Enum IfcDuctFittingType::Class() { return Type::IfcDuctFittingType; }
IfcDuctFittingType::IfcDuctFittingType(IfcAbstractEntity* e) : IfcFlowFittingType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDuctFittingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum v10_PredefinedType) : IfcFlowFittingType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDuctFittingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDuctSegment
bool IfcDuctSegment::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum IfcDuctSegment::PredefinedType() const { return IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDuctSegment::setPredefinedType(IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDuctSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDuctSegment::declaration() const { return *IfcDuctSegment_type; }
Type::Enum IfcDuctSegment::Class() { return Type::IfcDuctSegment; }
IfcDuctSegment::IfcDuctSegment(IfcAbstractEntity* e) : IfcFlowSegment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDuctSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDuctSegment::IfcDuctSegment(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum > v9_PredefinedType) : IfcFlowSegment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDuctSegmentTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDuctSegmentType
IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum IfcDuctSegmentType::PredefinedType() const { return IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDuctSegmentType::setPredefinedType(IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDuctSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDuctSegmentType::declaration() const { return *IfcDuctSegmentType_type; }
Type::Enum IfcDuctSegmentType::Class() { return Type::IfcDuctSegmentType; }
IfcDuctSegmentType::IfcDuctSegmentType(IfcAbstractEntity* e) : IfcFlowSegmentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDuctSegmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum v10_PredefinedType) : IfcFlowSegmentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDuctSegmentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDuctSilencer
bool IfcDuctSilencer::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum IfcDuctSilencer::PredefinedType() const { return IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcDuctSilencer::setPredefinedType(IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcDuctSilencerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDuctSilencer::declaration() const { return *IfcDuctSilencer_type; }
Type::Enum IfcDuctSilencer::Class() { return Type::IfcDuctSilencer; }
IfcDuctSilencer::IfcDuctSilencer(IfcAbstractEntity* e) : IfcFlowTreatmentDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDuctSilencer)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDuctSilencer::IfcDuctSilencer(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcDuctSilencerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcDuctSilencerType
IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum IfcDuctSilencerType::PredefinedType() const { return IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcDuctSilencerType::setPredefinedType(IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcDuctSilencerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcDuctSilencerType::declaration() const { return *IfcDuctSilencerType_type; }
Type::Enum IfcDuctSilencerType::Class() { return Type::IfcDuctSilencerType; }
IfcDuctSilencerType::IfcDuctSilencerType(IfcAbstractEntity* e) : IfcFlowTreatmentDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcDuctSilencerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcDuctSilencerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEdge
IfcVertex* IfcEdge::EdgeStart() const { return (IfcVertex*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcEdge::setEdgeStart(IfcVertex* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcVertex* IfcEdge::EdgeEnd() const { return (IfcVertex*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcEdge::setEdgeEnd(IfcVertex* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcEdge::declaration() const { return *IfcEdge_type; }
Type::Enum IfcEdge::Class() { return Type::IfcEdge; }
IfcEdge::IfcEdge(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEdge)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEdge::IfcEdge(IfcVertex* v1_EdgeStart, IfcVertex* v2_EdgeEnd) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeStart)); e->setArgument(1,(v2_EdgeEnd)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEdgeCurve
IfcCurve* IfcEdgeCurve::EdgeGeometry() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcEdgeCurve::setEdgeGeometry(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcEdgeCurve::SameSense() const { return *data_->getArgument(3); }
void IfcEdgeCurve::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcEdgeCurve::declaration() const { return *IfcEdgeCurve_type; }
Type::Enum IfcEdgeCurve::Class() { return Type::IfcEdgeCurve; }
IfcEdgeCurve::IfcEdgeCurve(IfcAbstractEntity* e) : IfcEdge((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEdgeCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEdgeCurve::IfcEdgeCurve(IfcVertex* v1_EdgeStart, IfcVertex* v2_EdgeEnd, IfcCurve* v3_EdgeGeometry, bool v4_SameSense) : IfcEdge((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeStart)); e->setArgument(1,(v2_EdgeEnd)); e->setArgument(2,(v3_EdgeGeometry)); e->setArgument(3,(v4_SameSense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEdgeLoop
IfcTemplatedEntityList< IfcOrientedEdge >::ptr IfcEdgeLoop::EdgeList() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcOrientedEdge>(); }
void IfcEdgeLoop::setEdgeList(IfcTemplatedEntityList< IfcOrientedEdge >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcEdgeLoop::declaration() const { return *IfcEdgeLoop_type; }
Type::Enum IfcEdgeLoop::Class() { return Type::IfcEdgeLoop; }
IfcEdgeLoop::IfcEdgeLoop(IfcAbstractEntity* e) : IfcLoop((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEdgeLoop)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEdgeLoop::IfcEdgeLoop(IfcTemplatedEntityList< IfcOrientedEdge >::ptr v1_EdgeList) : IfcLoop((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeList)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricAppliance
bool IfcElectricAppliance::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum IfcElectricAppliance::PredefinedType() const { return IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcElectricAppliance::setPredefinedType(IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricApplianceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricAppliance::declaration() const { return *IfcElectricAppliance_type; }
Type::Enum IfcElectricAppliance::Class() { return Type::IfcElectricAppliance; }
IfcElectricAppliance::IfcElectricAppliance(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricAppliance)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricAppliance::IfcElectricAppliance(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcElectricApplianceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricApplianceType
IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum IfcElectricApplianceType::PredefinedType() const { return IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElectricApplianceType::setPredefinedType(IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElectricApplianceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricApplianceType::declaration() const { return *IfcElectricApplianceType_type; }
Type::Enum IfcElectricApplianceType::Class() { return Type::IfcElectricApplianceType; }
IfcElectricApplianceType::IfcElectricApplianceType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricApplianceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElectricApplianceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricDistributionBoard
bool IfcElectricDistributionBoard::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum IfcElectricDistributionBoard::PredefinedType() const { return IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); }
void IfcElectricDistributionBoard::setPredefinedType(IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricDistributionBoardTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricDistributionBoard::declaration() const { return *IfcElectricDistributionBoard_type; }
Type::Enum IfcElectricDistributionBoard::Class() { return Type::IfcElectricDistributionBoard; }
IfcElectricDistributionBoard::IfcElectricDistributionBoard(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricDistributionBoard)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricDistributionBoard::IfcElectricDistributionBoard(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcElectricDistributionBoardTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricDistributionBoardType
IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum IfcElectricDistributionBoardType::PredefinedType() const { return IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElectricDistributionBoardType::setPredefinedType(IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElectricDistributionBoardTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricDistributionBoardType::declaration() const { return *IfcElectricDistributionBoardType_type; }
Type::Enum IfcElectricDistributionBoardType::Class() { return Type::IfcElectricDistributionBoardType; }
IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricDistributionBoardType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElectricDistributionBoardTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricFlowStorageDevice
bool IfcElectricFlowStorageDevice::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum IfcElectricFlowStorageDevice::PredefinedType() const { return IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcElectricFlowStorageDevice::setPredefinedType(IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricFlowStorageDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricFlowStorageDevice::declaration() const { return *IfcElectricFlowStorageDevice_type; }
Type::Enum IfcElectricFlowStorageDevice::Class() { return Type::IfcElectricFlowStorageDevice; }
IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(IfcAbstractEntity* e) : IfcFlowStorageDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricFlowStorageDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum > v9_PredefinedType) : IfcFlowStorageDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcElectricFlowStorageDeviceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricFlowStorageDeviceType
IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum IfcElectricFlowStorageDeviceType::PredefinedType() const { return IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElectricFlowStorageDeviceType::setPredefinedType(IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElectricFlowStorageDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricFlowStorageDeviceType::declaration() const { return *IfcElectricFlowStorageDeviceType_type; }
Type::Enum IfcElectricFlowStorageDeviceType::Class() { return Type::IfcElectricFlowStorageDeviceType; }
IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(IfcAbstractEntity* e) : IfcFlowStorageDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricFlowStorageDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum v10_PredefinedType) : IfcFlowStorageDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElectricFlowStorageDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricGenerator
bool IfcElectricGenerator::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum IfcElectricGenerator::PredefinedType() const { return IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcElectricGenerator::setPredefinedType(IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricGeneratorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricGenerator::declaration() const { return *IfcElectricGenerator_type; }
Type::Enum IfcElectricGenerator::Class() { return Type::IfcElectricGenerator; }
IfcElectricGenerator::IfcElectricGenerator(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricGenerator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricGenerator::IfcElectricGenerator(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcElectricGeneratorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricGeneratorType
IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum IfcElectricGeneratorType::PredefinedType() const { return IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElectricGeneratorType::setPredefinedType(IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElectricGeneratorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricGeneratorType::declaration() const { return *IfcElectricGeneratorType_type; }
Type::Enum IfcElectricGeneratorType::Class() { return Type::IfcElectricGeneratorType; }
IfcElectricGeneratorType::IfcElectricGeneratorType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricGeneratorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElectricGeneratorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricMotor
bool IfcElectricMotor::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum IfcElectricMotor::PredefinedType() const { return IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcElectricMotor::setPredefinedType(IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricMotorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricMotor::declaration() const { return *IfcElectricMotor_type; }
Type::Enum IfcElectricMotor::Class() { return Type::IfcElectricMotor; }
IfcElectricMotor::IfcElectricMotor(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricMotor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricMotor::IfcElectricMotor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcElectricMotorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricMotorType
IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum IfcElectricMotorType::PredefinedType() const { return IfcElectricMotorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElectricMotorType::setPredefinedType(IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElectricMotorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricMotorType::declaration() const { return *IfcElectricMotorType_type; }
Type::Enum IfcElectricMotorType::Class() { return Type::IfcElectricMotorType; }
IfcElectricMotorType::IfcElectricMotorType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricMotorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElectricMotorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricTimeControl
bool IfcElectricTimeControl::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum IfcElectricTimeControl::PredefinedType() const { return IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); }
void IfcElectricTimeControl::setPredefinedType(IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElectricTimeControlTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricTimeControl::declaration() const { return *IfcElectricTimeControl_type; }
Type::Enum IfcElectricTimeControl::Class() { return Type::IfcElectricTimeControl; }
IfcElectricTimeControl::IfcElectricTimeControl(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricTimeControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricTimeControl::IfcElectricTimeControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcElectricTimeControlTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElectricTimeControlType
IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum IfcElectricTimeControlType::PredefinedType() const { return IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElectricTimeControlType::setPredefinedType(IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElectricTimeControlTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElectricTimeControlType::declaration() const { return *IfcElectricTimeControlType_type; }
Type::Enum IfcElectricTimeControlType::Class() { return Type::IfcElectricTimeControlType; }
IfcElectricTimeControlType::IfcElectricTimeControlType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElectricTimeControlType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElectricTimeControlTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElement
bool IfcElement::hasTag() const { return !data_->getArgument(7)->isNull(); }
std::string IfcElement::Tag() const { return *data_->getArgument(7); }
void IfcElement::setTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcRelFillsElement::list::ptr IfcElement::FillsVoids() const { return data_->getInverse(Type::IfcRelFillsElement, 5)->as<IfcRelFillsElement>(); }
IfcRelConnectsElements::list::ptr IfcElement::ConnectedTo() const { return data_->getInverse(Type::IfcRelConnectsElements, 5)->as<IfcRelConnectsElements>(); }
IfcRelInterferesElements::list::ptr IfcElement::IsInterferedByElements() const { return data_->getInverse(Type::IfcRelInterferesElements, 5)->as<IfcRelInterferesElements>(); }
IfcRelInterferesElements::list::ptr IfcElement::InterferesElements() const { return data_->getInverse(Type::IfcRelInterferesElements, 4)->as<IfcRelInterferesElements>(); }
IfcRelProjectsElement::list::ptr IfcElement::HasProjections() const { return data_->getInverse(Type::IfcRelProjectsElement, 4)->as<IfcRelProjectsElement>(); }
IfcRelReferencedInSpatialStructure::list::ptr IfcElement::ReferencedInStructures() const { return data_->getInverse(Type::IfcRelReferencedInSpatialStructure, 4)->as<IfcRelReferencedInSpatialStructure>(); }
IfcRelVoidsElement::list::ptr IfcElement::HasOpenings() const { return data_->getInverse(Type::IfcRelVoidsElement, 4)->as<IfcRelVoidsElement>(); }
IfcRelConnectsWithRealizingElements::list::ptr IfcElement::IsConnectionRealization() const { return data_->getInverse(Type::IfcRelConnectsWithRealizingElements, 7)->as<IfcRelConnectsWithRealizingElements>(); }
IfcRelSpaceBoundary::list::ptr IfcElement::ProvidesBoundaries() const { return data_->getInverse(Type::IfcRelSpaceBoundary, 5)->as<IfcRelSpaceBoundary>(); }
IfcRelConnectsElements::list::ptr IfcElement::ConnectedFrom() const { return data_->getInverse(Type::IfcRelConnectsElements, 6)->as<IfcRelConnectsElements>(); }
IfcRelContainedInSpatialStructure::list::ptr IfcElement::ContainedInStructure() const { return data_->getInverse(Type::IfcRelContainedInSpatialStructure, 4)->as<IfcRelContainedInSpatialStructure>(); }
IfcRelCoversBldgElements::list::ptr IfcElement::HasCoverings() const { return data_->getInverse(Type::IfcRelCoversBldgElements, 4)->as<IfcRelCoversBldgElements>(); }

const IfcParse::entity& IfcElement::declaration() const { return *IfcElement_type; }
Type::Enum IfcElement::Class() { return Type::IfcElement; }
IfcElement::IfcElement(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElement::IfcElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementAssembly
bool IfcElementAssembly::hasAssemblyPlace() const { return !data_->getArgument(8)->isNull(); }
IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum IfcElementAssembly::AssemblyPlace() const { return IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); }
void IfcElementAssembly::setAssemblyPlace(IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcAssemblyPlaceEnum::ToString(v)); }
bool IfcElementAssembly::hasPredefinedType() const { return !data_->getArgument(9)->isNull(); }
IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum IfcElementAssembly::PredefinedType() const { return IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElementAssembly::setPredefinedType(IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElementAssemblyTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElementAssembly::declaration() const { return *IfcElementAssembly_type; }
Type::Enum IfcElementAssembly::Class() { return Type::IfcElementAssembly; }
IfcElementAssembly::IfcElementAssembly(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementAssembly)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementAssembly::IfcElementAssembly(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum > v9_AssemblyPlace, boost::optional< IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum > v10_PredefinedType) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_AssemblyPlace) { e->setArgument(8,*v9_AssemblyPlace,IfcAssemblyPlaceEnum::ToString(*v9_AssemblyPlace)); } else { e->setArgument(8); } if (v10_PredefinedType) { e->setArgument(9,*v10_PredefinedType,IfcElementAssemblyTypeEnum::ToString(*v10_PredefinedType)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementAssemblyType
IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum IfcElementAssemblyType::PredefinedType() const { return IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void IfcElementAssemblyType::setPredefinedType(IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcElementAssemblyTypeEnum::ToString(v)); }


const IfcParse::entity& IfcElementAssemblyType::declaration() const { return *IfcElementAssemblyType_type; }
Type::Enum IfcElementAssemblyType::Class() { return Type::IfcElementAssemblyType; }
IfcElementAssemblyType::IfcElementAssemblyType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementAssemblyType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementAssemblyType::IfcElementAssemblyType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum v10_PredefinedType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcElementAssemblyTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementComponent


const IfcParse::entity& IfcElementComponent::declaration() const { return *IfcElementComponent_type; }
Type::Enum IfcElementComponent::Class() { return Type::IfcElementComponent; }
IfcElementComponent::IfcElementComponent(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementComponent)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementComponent::IfcElementComponent(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementComponentType


const IfcParse::entity& IfcElementComponentType::declaration() const { return *IfcElementComponentType_type; }
Type::Enum IfcElementComponentType::Class() { return Type::IfcElementComponentType; }
IfcElementComponentType::IfcElementComponentType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementComponentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementQuantity
bool IfcElementQuantity::hasMethodOfMeasurement() const { return !data_->getArgument(4)->isNull(); }
std::string IfcElementQuantity::MethodOfMeasurement() const { return *data_->getArgument(4); }
void IfcElementQuantity::setMethodOfMeasurement(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr IfcElementQuantity::Quantities() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcPhysicalQuantity>(); }
void IfcElementQuantity::setQuantities(IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcElementQuantity::declaration() const { return *IfcElementQuantity_type; }
Type::Enum IfcElementQuantity::Class() { return Type::IfcElementQuantity; }
IfcElementQuantity::IfcElementQuantity(IfcAbstractEntity* e) : IfcQuantitySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementQuantity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v6_Quantities) : IfcQuantitySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_MethodOfMeasurement) { e->setArgument(4,(*v5_MethodOfMeasurement)); } else { e->setArgument(4); } e->setArgument(5,(v6_Quantities)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementType
bool IfcElementType::hasElementType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcElementType::ElementType() const { return *data_->getArgument(8); }
void IfcElementType::setElementType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcElementType::declaration() const { return *IfcElementType_type; }
Type::Enum IfcElementType::Class() { return Type::IfcElementType; }
IfcElementType::IfcElementType(IfcAbstractEntity* e) : IfcTypeProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementType::IfcElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcElementarySurface
IfcAxis2Placement3D* IfcElementarySurface::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcElementarySurface::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcElementarySurface::declaration() const { return *IfcElementarySurface_type; }
Type::Enum IfcElementarySurface::Class() { return Type::IfcElementarySurface; }
IfcElementarySurface::IfcElementarySurface(IfcAbstractEntity* e) : IfcSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcElementarySurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcElementarySurface::IfcElementarySurface(IfcAxis2Placement3D* v1_Position) : IfcSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEllipse
double IfcEllipse::SemiAxis1() const { return *data_->getArgument(1); }
void IfcEllipse::setSemiAxis1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcEllipse::SemiAxis2() const { return *data_->getArgument(2); }
void IfcEllipse::setSemiAxis2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcEllipse::declaration() const { return *IfcEllipse_type; }
Type::Enum IfcEllipse::Class() { return Type::IfcEllipse; }
IfcEllipse::IfcEllipse(IfcAbstractEntity* e) : IfcConic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEllipse)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEllipse::IfcEllipse(IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2) : IfcConic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_SemiAxis1)); e->setArgument(2,(v3_SemiAxis2)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEllipseProfileDef
double IfcEllipseProfileDef::SemiAxis1() const { return *data_->getArgument(3); }
void IfcEllipseProfileDef::setSemiAxis1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcEllipseProfileDef::SemiAxis2() const { return *data_->getArgument(4); }
void IfcEllipseProfileDef::setSemiAxis2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcEllipseProfileDef::declaration() const { return *IfcEllipseProfileDef_type; }
Type::Enum IfcEllipseProfileDef::Class() { return Type::IfcEllipseProfileDef; }
IfcEllipseProfileDef::IfcEllipseProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEllipseProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEllipseProfileDef::IfcEllipseProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_SemiAxis1)); e->setArgument(4,(v5_SemiAxis2)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEnergyConversionDevice


const IfcParse::entity& IfcEnergyConversionDevice::declaration() const { return *IfcEnergyConversionDevice_type; }
Type::Enum IfcEnergyConversionDevice::Class() { return Type::IfcEnergyConversionDevice; }
IfcEnergyConversionDevice::IfcEnergyConversionDevice(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEnergyConversionDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEnergyConversionDevice::IfcEnergyConversionDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEnergyConversionDeviceType


const IfcParse::entity& IfcEnergyConversionDeviceType::declaration() const { return *IfcEnergyConversionDeviceType_type; }
Type::Enum IfcEnergyConversionDeviceType::Class() { return Type::IfcEnergyConversionDeviceType; }
IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEnergyConversionDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEngine
bool IfcEngine::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcEngineTypeEnum::IfcEngineTypeEnum IfcEngine::PredefinedType() const { return IfcEngineTypeEnum::FromString(*data_->getArgument(8)); }
void IfcEngine::setPredefinedType(IfcEngineTypeEnum::IfcEngineTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcEngineTypeEnum::ToString(v)); }


const IfcParse::entity& IfcEngine::declaration() const { return *IfcEngine_type; }
Type::Enum IfcEngine::Class() { return Type::IfcEngine; }
IfcEngine::IfcEngine(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEngine)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEngine::IfcEngine(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcEngineTypeEnum::IfcEngineTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcEngineTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEngineType
IfcEngineTypeEnum::IfcEngineTypeEnum IfcEngineType::PredefinedType() const { return IfcEngineTypeEnum::FromString(*data_->getArgument(9)); }
void IfcEngineType::setPredefinedType(IfcEngineTypeEnum::IfcEngineTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcEngineTypeEnum::ToString(v)); }


const IfcParse::entity& IfcEngineType::declaration() const { return *IfcEngineType_type; }
Type::Enum IfcEngineType::Class() { return Type::IfcEngineType; }
IfcEngineType::IfcEngineType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEngineType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEngineType::IfcEngineType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcEngineTypeEnum::IfcEngineTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcEngineTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEvaporativeCooler
bool IfcEvaporativeCooler::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum IfcEvaporativeCooler::PredefinedType() const { return IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcEvaporativeCooler::setPredefinedType(IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcEvaporativeCoolerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcEvaporativeCooler::declaration() const { return *IfcEvaporativeCooler_type; }
Type::Enum IfcEvaporativeCooler::Class() { return Type::IfcEvaporativeCooler; }
IfcEvaporativeCooler::IfcEvaporativeCooler(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEvaporativeCooler)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEvaporativeCooler::IfcEvaporativeCooler(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcEvaporativeCoolerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEvaporativeCoolerType
IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum IfcEvaporativeCoolerType::PredefinedType() const { return IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcEvaporativeCoolerType::setPredefinedType(IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcEvaporativeCoolerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcEvaporativeCoolerType::declaration() const { return *IfcEvaporativeCoolerType_type; }
Type::Enum IfcEvaporativeCoolerType::Class() { return Type::IfcEvaporativeCoolerType; }
IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEvaporativeCoolerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcEvaporativeCoolerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEvaporator
bool IfcEvaporator::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum IfcEvaporator::PredefinedType() const { return IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcEvaporator::setPredefinedType(IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcEvaporatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcEvaporator::declaration() const { return *IfcEvaporator_type; }
Type::Enum IfcEvaporator::Class() { return Type::IfcEvaporator; }
IfcEvaporator::IfcEvaporator(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEvaporator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEvaporator::IfcEvaporator(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcEvaporatorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEvaporatorType
IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum IfcEvaporatorType::PredefinedType() const { return IfcEvaporatorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcEvaporatorType::setPredefinedType(IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcEvaporatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcEvaporatorType::declaration() const { return *IfcEvaporatorType_type; }
Type::Enum IfcEvaporatorType::Class() { return Type::IfcEvaporatorType; }
IfcEvaporatorType::IfcEvaporatorType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEvaporatorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcEvaporatorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEvent
bool IfcEvent::hasPredefinedType() const { return !data_->getArgument(7)->isNull(); }
IfcEventTypeEnum::IfcEventTypeEnum IfcEvent::PredefinedType() const { return IfcEventTypeEnum::FromString(*data_->getArgument(7)); }
void IfcEvent::setPredefinedType(IfcEventTypeEnum::IfcEventTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcEventTypeEnum::ToString(v)); }
bool IfcEvent::hasEventTriggerType() const { return !data_->getArgument(8)->isNull(); }
IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum IfcEvent::EventTriggerType() const { return IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcEvent::setEventTriggerType(IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcEventTriggerTypeEnum::ToString(v)); }
bool IfcEvent::hasUserDefinedEventTriggerType() const { return !data_->getArgument(9)->isNull(); }
std::string IfcEvent::UserDefinedEventTriggerType() const { return *data_->getArgument(9); }
void IfcEvent::setUserDefinedEventTriggerType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcEvent::hasEventOccurenceTime() const { return !data_->getArgument(10)->isNull(); }
IfcEventTime* IfcEvent::EventOccurenceTime() const { return (IfcEventTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcEvent::setEventOccurenceTime(IfcEventTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcEvent::declaration() const { return *IfcEvent_type; }
Type::Enum IfcEvent::Class() { return Type::IfcEvent; }
IfcEvent::IfcEvent(IfcAbstractEntity* e) : IfcProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEvent)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEvent::IfcEvent(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< IfcEventTypeEnum::IfcEventTypeEnum > v8_PredefinedType, boost::optional< IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum > v9_EventTriggerType, boost::optional< std::string > v10_UserDefinedEventTriggerType, IfcEventTime* v11_EventOccurenceTime) : IfcProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } if (v8_PredefinedType) { e->setArgument(7,*v8_PredefinedType,IfcEventTypeEnum::ToString(*v8_PredefinedType)); } else { e->setArgument(7); } if (v9_EventTriggerType) { e->setArgument(8,*v9_EventTriggerType,IfcEventTriggerTypeEnum::ToString(*v9_EventTriggerType)); } else { e->setArgument(8); } if (v10_UserDefinedEventTriggerType) { e->setArgument(9,(*v10_UserDefinedEventTriggerType)); } else { e->setArgument(9); } e->setArgument(10,(v11_EventOccurenceTime)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEventTime
bool IfcEventTime::hasActualDate() const { return !data_->getArgument(3)->isNull(); }
std::string IfcEventTime::ActualDate() const { return *data_->getArgument(3); }
void IfcEventTime::setActualDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcEventTime::hasEarlyDate() const { return !data_->getArgument(4)->isNull(); }
std::string IfcEventTime::EarlyDate() const { return *data_->getArgument(4); }
void IfcEventTime::setEarlyDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcEventTime::hasLateDate() const { return !data_->getArgument(5)->isNull(); }
std::string IfcEventTime::LateDate() const { return *data_->getArgument(5); }
void IfcEventTime::setLateDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcEventTime::hasScheduleDate() const { return !data_->getArgument(6)->isNull(); }
std::string IfcEventTime::ScheduleDate() const { return *data_->getArgument(6); }
void IfcEventTime::setScheduleDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcEventTime::declaration() const { return *IfcEventTime_type; }
Type::Enum IfcEventTime::Class() { return Type::IfcEventTime; }
IfcEventTime::IfcEventTime(IfcAbstractEntity* e) : IfcSchedulingTime((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEventTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEventTime::IfcEventTime(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ActualDate, boost::optional< std::string > v5_EarlyDate, boost::optional< std::string > v6_LateDate, boost::optional< std::string > v7_ScheduleDate) : IfcSchedulingTime((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } if (v4_ActualDate) { e->setArgument(3,(*v4_ActualDate)); } else { e->setArgument(3); } if (v5_EarlyDate) { e->setArgument(4,(*v5_EarlyDate)); } else { e->setArgument(4); } if (v6_LateDate) { e->setArgument(5,(*v6_LateDate)); } else { e->setArgument(5); } if (v7_ScheduleDate) { e->setArgument(6,(*v7_ScheduleDate)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcEventType
IfcEventTypeEnum::IfcEventTypeEnum IfcEventType::PredefinedType() const { return IfcEventTypeEnum::FromString(*data_->getArgument(9)); }
void IfcEventType::setPredefinedType(IfcEventTypeEnum::IfcEventTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcEventTypeEnum::ToString(v)); }
IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum IfcEventType::EventTriggerType() const { return IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); }
void IfcEventType::setEventTriggerType(IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcEventTriggerTypeEnum::ToString(v)); }
bool IfcEventType::hasUserDefinedEventTriggerType() const { return !data_->getArgument(11)->isNull(); }
std::string IfcEventType::UserDefinedEventTriggerType() const { return *data_->getArgument(11); }
void IfcEventType::setUserDefinedEventTriggerType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcEventType::declaration() const { return *IfcEventType_type; }
Type::Enum IfcEventType::Class() { return Type::IfcEventType; }
IfcEventType::IfcEventType(IfcAbstractEntity* e) : IfcTypeProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcEventType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcEventType::IfcEventType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, IfcEventTypeEnum::IfcEventTypeEnum v10_PredefinedType, IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum v11_EventTriggerType, boost::optional< std::string > v12_UserDefinedEventTriggerType) : IfcTypeProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ProcessType) { e->setArgument(8,(*v9_ProcessType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcEventTypeEnum::ToString(v10_PredefinedType)); e->setArgument(10,v11_EventTriggerType,IfcEventTriggerTypeEnum::ToString(v11_EventTriggerType)); if (v12_UserDefinedEventTriggerType) { e->setArgument(11,(*v12_UserDefinedEventTriggerType)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExtendedProperties
bool IfcExtendedProperties::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcExtendedProperties::Name() const { return *data_->getArgument(0); }
void IfcExtendedProperties::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcExtendedProperties::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcExtendedProperties::Description() const { return *data_->getArgument(1); }
void IfcExtendedProperties::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityList< IfcProperty >::ptr IfcExtendedProperties::Properties() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcProperty>(); }
void IfcExtendedProperties::setProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcExtendedProperties::declaration() const { return *IfcExtendedProperties_type; }
Type::Enum IfcExtendedProperties::Class() { return Type::IfcExtendedProperties; }
IfcExtendedProperties::IfcExtendedProperties(IfcAbstractEntity* e) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExtendedProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExtendedProperties::IfcExtendedProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcProperty >::ptr v3_Properties) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Properties)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternalInformation


const IfcParse::entity& IfcExternalInformation::declaration() const { return *IfcExternalInformation_type; }
Type::Enum IfcExternalInformation::Class() { return Type::IfcExternalInformation; }
IfcExternalInformation::IfcExternalInformation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcExternalInformation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternalReference
bool IfcExternalReference::hasLocation() const { return !data_->getArgument(0)->isNull(); }
std::string IfcExternalReference::Location() const { return *data_->getArgument(0); }
void IfcExternalReference::setLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcExternalReference::hasIdentification() const { return !data_->getArgument(1)->isNull(); }
std::string IfcExternalReference::Identification() const { return *data_->getArgument(1); }
void IfcExternalReference::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcExternalReference::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcExternalReference::Name() const { return *data_->getArgument(2); }
void IfcExternalReference::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcExternalReferenceRelationship::list::ptr IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 2)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcExternalReference::declaration() const { return *IfcExternalReference_type; }
Type::Enum IfcExternalReference::Class() { return Type::IfcExternalReference; }
IfcExternalReference::IfcExternalReference(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcExternalReference)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternalReference::IfcExternalReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternalReferenceRelationship
IfcExternalReference* IfcExternalReferenceRelationship::RelatingReference() const { return (IfcExternalReference*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcExternalReferenceRelationship::setRelatingReference(IfcExternalReference* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcEntityList::ptr IfcExternalReferenceRelationship::RelatedResourceObjects() const { return *data_->getArgument(3); }
void IfcExternalReferenceRelationship::setRelatedResourceObjects(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcExternalReferenceRelationship::declaration() const { return *IfcExternalReferenceRelationship_type; }
Type::Enum IfcExternalReferenceRelationship::Class() { return Type::IfcExternalReferenceRelationship; }
IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExternalReferenceRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcExternalReference* v3_RelatingReference, IfcEntityList::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingReference)); e->setArgument(3,(v4_RelatedResourceObjects)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternalSpatialElement
bool IfcExternalSpatialElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum IfcExternalSpatialElement::PredefinedType() const { return IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcExternalSpatialElement::setPredefinedType(IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcExternalSpatialElementTypeEnum::ToString(v)); }

IfcRelSpaceBoundary::list::ptr IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(Type::IfcRelSpaceBoundary, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& IfcExternalSpatialElement::declaration() const { return *IfcExternalSpatialElement_type; }
Type::Enum IfcExternalSpatialElement::Class() { return Type::IfcExternalSpatialElement; }
IfcExternalSpatialElement::IfcExternalSpatialElement(IfcAbstractEntity* e) : IfcExternalSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExternalSpatialElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternalSpatialElement::IfcExternalSpatialElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum > v9_PredefinedType) : IfcExternalSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcExternalSpatialElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternalSpatialStructureElement


const IfcParse::entity& IfcExternalSpatialStructureElement::declaration() const { return *IfcExternalSpatialStructureElement_type; }
Type::Enum IfcExternalSpatialStructureElement::Class() { return Type::IfcExternalSpatialStructureElement; }
IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(IfcAbstractEntity* e) : IfcSpatialElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExternalSpatialStructureElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcSpatialElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternallyDefinedHatchStyle


const IfcParse::entity& IfcExternallyDefinedHatchStyle::declaration() const { return *IfcExternallyDefinedHatchStyle_type; }
Type::Enum IfcExternallyDefinedHatchStyle::Class() { return Type::IfcExternallyDefinedHatchStyle; }
IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(IfcAbstractEntity* e) : IfcExternalReference((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExternallyDefinedHatchStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternallyDefinedSurfaceStyle


const IfcParse::entity& IfcExternallyDefinedSurfaceStyle::declaration() const { return *IfcExternallyDefinedSurfaceStyle_type; }
Type::Enum IfcExternallyDefinedSurfaceStyle::Class() { return Type::IfcExternallyDefinedSurfaceStyle; }
IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(IfcAbstractEntity* e) : IfcExternalReference((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExternallyDefinedSurfaceStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExternallyDefinedTextFont


const IfcParse::entity& IfcExternallyDefinedTextFont::declaration() const { return *IfcExternallyDefinedTextFont_type; }
Type::Enum IfcExternallyDefinedTextFont::Class() { return Type::IfcExternallyDefinedTextFont; }
IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(IfcAbstractEntity* e) : IfcExternalReference((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExternallyDefinedTextFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExtrudedAreaSolid
IfcDirection* IfcExtrudedAreaSolid::ExtrudedDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcExtrudedAreaSolid::setExtrudedDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcExtrudedAreaSolid::Depth() const { return *data_->getArgument(3); }
void IfcExtrudedAreaSolid::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcExtrudedAreaSolid::declaration() const { return *IfcExtrudedAreaSolid_type; }
Type::Enum IfcExtrudedAreaSolid::Class() { return Type::IfcExtrudedAreaSolid; }
IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExtrudedAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_ExtrudedDirection)); e->setArgument(3,(v4_Depth)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcExtrudedAreaSolidTapered
IfcProfileDef* IfcExtrudedAreaSolidTapered::EndSweptArea() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcExtrudedAreaSolidTapered::setEndSweptArea(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcExtrudedAreaSolidTapered::declaration() const { return *IfcExtrudedAreaSolidTapered_type; }
Type::Enum IfcExtrudedAreaSolidTapered::Class() { return Type::IfcExtrudedAreaSolidTapered; }
IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(IfcAbstractEntity* e) : IfcExtrudedAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcExtrudedAreaSolidTapered)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcDirection* v3_ExtrudedDirection, double v4_Depth, IfcProfileDef* v5_EndSweptArea) : IfcExtrudedAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_ExtrudedDirection)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_EndSweptArea)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFace
IfcTemplatedEntityList< IfcFaceBound >::ptr IfcFace::Bounds() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcFaceBound>(); }
void IfcFace::setBounds(IfcTemplatedEntityList< IfcFaceBound >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }

IfcTextureMap::list::ptr IfcFace::HasTextureMaps() const { return data_->getInverse(Type::IfcTextureMap, 2)->as<IfcTextureMap>(); }

const IfcParse::entity& IfcFace::declaration() const { return *IfcFace_type; }
Type::Enum IfcFace::Class() { return Type::IfcFace; }
IfcFace::IfcFace(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFace::IfcFace(IfcTemplatedEntityList< IfcFaceBound >::ptr v1_Bounds) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bounds)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFaceBasedSurfaceModel
IfcTemplatedEntityList< IfcConnectedFaceSet >::ptr IfcFaceBasedSurfaceModel::FbsmFaces() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcConnectedFaceSet>(); }
void IfcFaceBasedSurfaceModel::setFbsmFaces(IfcTemplatedEntityList< IfcConnectedFaceSet >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcFaceBasedSurfaceModel::declaration() const { return *IfcFaceBasedSurfaceModel_type; }
Type::Enum IfcFaceBasedSurfaceModel::Class() { return Type::IfcFaceBasedSurfaceModel; }
IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFaceBasedSurfaceModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(IfcTemplatedEntityList< IfcConnectedFaceSet >::ptr v1_FbsmFaces) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_FbsmFaces)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFaceBound
IfcLoop* IfcFaceBound::Bound() const { return (IfcLoop*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcFaceBound::setBound(IfcLoop* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcFaceBound::Orientation() const { return *data_->getArgument(1); }
void IfcFaceBound::setOrientation(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcFaceBound::declaration() const { return *IfcFaceBound_type; }
Type::Enum IfcFaceBound::Class() { return Type::IfcFaceBound; }
IfcFaceBound::IfcFaceBound(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFaceBound)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFaceBound::IfcFaceBound(IfcLoop* v1_Bound, bool v2_Orientation) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bound)); e->setArgument(1,(v2_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFaceOuterBound


const IfcParse::entity& IfcFaceOuterBound::declaration() const { return *IfcFaceOuterBound_type; }
Type::Enum IfcFaceOuterBound::Class() { return Type::IfcFaceOuterBound; }
IfcFaceOuterBound::IfcFaceOuterBound(IfcAbstractEntity* e) : IfcFaceBound((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFaceOuterBound)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFaceOuterBound::IfcFaceOuterBound(IfcLoop* v1_Bound, bool v2_Orientation) : IfcFaceBound((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bound)); e->setArgument(1,(v2_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFaceSurface
IfcSurface* IfcFaceSurface::FaceSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcFaceSurface::setFaceSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFaceSurface::SameSense() const { return *data_->getArgument(2); }
void IfcFaceSurface::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcFaceSurface::declaration() const { return *IfcFaceSurface_type; }
Type::Enum IfcFaceSurface::Class() { return Type::IfcFaceSurface; }
IfcFaceSurface::IfcFaceSurface(IfcAbstractEntity* e) : IfcFace((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFaceSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFaceSurface::IfcFaceSurface(IfcTemplatedEntityList< IfcFaceBound >::ptr v1_Bounds, IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFace((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Bounds)->generalize()); e->setArgument(1,(v2_FaceSurface)); e->setArgument(2,(v3_SameSense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFacetedBrep


const IfcParse::entity& IfcFacetedBrep::declaration() const { return *IfcFacetedBrep_type; }
Type::Enum IfcFacetedBrep::Class() { return Type::IfcFacetedBrep; }
IfcFacetedBrep::IfcFacetedBrep(IfcAbstractEntity* e) : IfcManifoldSolidBrep((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFacetedBrep)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFacetedBrep::IfcFacetedBrep(IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Outer)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFacetedBrepWithVoids
IfcTemplatedEntityList< IfcClosedShell >::ptr IfcFacetedBrepWithVoids::Voids() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcClosedShell>(); }
void IfcFacetedBrepWithVoids::setVoids(IfcTemplatedEntityList< IfcClosedShell >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcFacetedBrepWithVoids::declaration() const { return *IfcFacetedBrepWithVoids_type; }
Type::Enum IfcFacetedBrepWithVoids::Class() { return Type::IfcFacetedBrepWithVoids; }
IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(IfcAbstractEntity* e) : IfcFacetedBrep((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFacetedBrepWithVoids)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(IfcClosedShell* v1_Outer, IfcTemplatedEntityList< IfcClosedShell >::ptr v2_Voids) : IfcFacetedBrep((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Outer)); e->setArgument(1,(v2_Voids)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFailureConnectionCondition
bool IfcFailureConnectionCondition::hasTensionFailureX() const { return !data_->getArgument(1)->isNull(); }
double IfcFailureConnectionCondition::TensionFailureX() const { return *data_->getArgument(1); }
void IfcFailureConnectionCondition::setTensionFailureX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFailureConnectionCondition::hasTensionFailureY() const { return !data_->getArgument(2)->isNull(); }
double IfcFailureConnectionCondition::TensionFailureY() const { return *data_->getArgument(2); }
void IfcFailureConnectionCondition::setTensionFailureY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcFailureConnectionCondition::hasTensionFailureZ() const { return !data_->getArgument(3)->isNull(); }
double IfcFailureConnectionCondition::TensionFailureZ() const { return *data_->getArgument(3); }
void IfcFailureConnectionCondition::setTensionFailureZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcFailureConnectionCondition::hasCompressionFailureX() const { return !data_->getArgument(4)->isNull(); }
double IfcFailureConnectionCondition::CompressionFailureX() const { return *data_->getArgument(4); }
void IfcFailureConnectionCondition::setCompressionFailureX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcFailureConnectionCondition::hasCompressionFailureY() const { return !data_->getArgument(5)->isNull(); }
double IfcFailureConnectionCondition::CompressionFailureY() const { return *data_->getArgument(5); }
void IfcFailureConnectionCondition::setCompressionFailureY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcFailureConnectionCondition::hasCompressionFailureZ() const { return !data_->getArgument(6)->isNull(); }
double IfcFailureConnectionCondition::CompressionFailureZ() const { return *data_->getArgument(6); }
void IfcFailureConnectionCondition::setCompressionFailureZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcFailureConnectionCondition::declaration() const { return *IfcFailureConnectionCondition_type; }
Type::Enum IfcFailureConnectionCondition::Class() { return Type::IfcFailureConnectionCondition; }
IfcFailureConnectionCondition::IfcFailureConnectionCondition(IfcAbstractEntity* e) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFailureConnectionCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFailureConnectionCondition::IfcFailureConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_TensionFailureX, boost::optional< double > v3_TensionFailureY, boost::optional< double > v4_TensionFailureZ, boost::optional< double > v5_CompressionFailureX, boost::optional< double > v6_CompressionFailureY, boost::optional< double > v7_CompressionFailureZ) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_TensionFailureX) { e->setArgument(1,(*v2_TensionFailureX)); } else { e->setArgument(1); } if (v3_TensionFailureY) { e->setArgument(2,(*v3_TensionFailureY)); } else { e->setArgument(2); } if (v4_TensionFailureZ) { e->setArgument(3,(*v4_TensionFailureZ)); } else { e->setArgument(3); } if (v5_CompressionFailureX) { e->setArgument(4,(*v5_CompressionFailureX)); } else { e->setArgument(4); } if (v6_CompressionFailureY) { e->setArgument(5,(*v6_CompressionFailureY)); } else { e->setArgument(5); } if (v7_CompressionFailureZ) { e->setArgument(6,(*v7_CompressionFailureZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFan
bool IfcFan::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFanTypeEnum::IfcFanTypeEnum IfcFan::PredefinedType() const { return IfcFanTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFan::setPredefinedType(IfcFanTypeEnum::IfcFanTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFanTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFan::declaration() const { return *IfcFan_type; }
Type::Enum IfcFan::Class() { return Type::IfcFan; }
IfcFan::IfcFan(IfcAbstractEntity* e) : IfcFlowMovingDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFan)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFan::IfcFan(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFanTypeEnum::IfcFanTypeEnum > v9_PredefinedType) : IfcFlowMovingDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFanTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFanType
IfcFanTypeEnum::IfcFanTypeEnum IfcFanType::PredefinedType() const { return IfcFanTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFanType::setPredefinedType(IfcFanTypeEnum::IfcFanTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFanTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFanType::declaration() const { return *IfcFanType_type; }
Type::Enum IfcFanType::Class() { return Type::IfcFanType; }
IfcFanType::IfcFanType(IfcAbstractEntity* e) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFanType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFanType::IfcFanType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFanTypeEnum::IfcFanTypeEnum v10_PredefinedType) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFanTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFastener
bool IfcFastener::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFastenerTypeEnum::IfcFastenerTypeEnum IfcFastener::PredefinedType() const { return IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFastener::setPredefinedType(IfcFastenerTypeEnum::IfcFastenerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFastenerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFastener::declaration() const { return *IfcFastener_type; }
Type::Enum IfcFastener::Class() { return Type::IfcFastener; }
IfcFastener::IfcFastener(IfcAbstractEntity* e) : IfcElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFastener)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFastener::IfcFastener(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFastenerTypeEnum::IfcFastenerTypeEnum > v9_PredefinedType) : IfcElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFastenerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFastenerType
IfcFastenerTypeEnum::IfcFastenerTypeEnum IfcFastenerType::PredefinedType() const { return IfcFastenerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFastenerType::setPredefinedType(IfcFastenerTypeEnum::IfcFastenerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFastenerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFastenerType::declaration() const { return *IfcFastenerType_type; }
Type::Enum IfcFastenerType::Class() { return Type::IfcFastenerType; }
IfcFastenerType::IfcFastenerType(IfcAbstractEntity* e) : IfcElementComponentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFastenerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFastenerType::IfcFastenerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFastenerTypeEnum::IfcFastenerTypeEnum v10_PredefinedType) : IfcElementComponentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFastenerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFeatureElement


const IfcParse::entity& IfcFeatureElement::declaration() const { return *IfcFeatureElement_type; }
Type::Enum IfcFeatureElement::Class() { return Type::IfcFeatureElement; }
IfcFeatureElement::IfcFeatureElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFeatureElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFeatureElement::IfcFeatureElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFeatureElementAddition

IfcRelProjectsElement::list::ptr IfcFeatureElementAddition::ProjectsElements() const { return data_->getInverse(Type::IfcRelProjectsElement, 5)->as<IfcRelProjectsElement>(); }

const IfcParse::entity& IfcFeatureElementAddition::declaration() const { return *IfcFeatureElementAddition_type; }
Type::Enum IfcFeatureElementAddition::Class() { return Type::IfcFeatureElementAddition; }
IfcFeatureElementAddition::IfcFeatureElementAddition(IfcAbstractEntity* e) : IfcFeatureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFeatureElementAddition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFeatureElementAddition::IfcFeatureElementAddition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFeatureElementSubtraction

IfcRelVoidsElement::list::ptr IfcFeatureElementSubtraction::VoidsElements() const { return data_->getInverse(Type::IfcRelVoidsElement, 5)->as<IfcRelVoidsElement>(); }

const IfcParse::entity& IfcFeatureElementSubtraction::declaration() const { return *IfcFeatureElementSubtraction_type; }
Type::Enum IfcFeatureElementSubtraction::Class() { return Type::IfcFeatureElementSubtraction; }
IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(IfcAbstractEntity* e) : IfcFeatureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFeatureElementSubtraction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFillAreaStyle
IfcEntityList::ptr IfcFillAreaStyle::FillStyles() const { return *data_->getArgument(1); }
void IfcFillAreaStyle::setFillStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFillAreaStyle::hasModelorDraughting() const { return !data_->getArgument(2)->isNull(); }
bool IfcFillAreaStyle::ModelorDraughting() const { return *data_->getArgument(2); }
void IfcFillAreaStyle::setModelorDraughting(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcFillAreaStyle::declaration() const { return *IfcFillAreaStyle_type; }
Type::Enum IfcFillAreaStyle::Class() { return Type::IfcFillAreaStyle; }
IfcFillAreaStyle::IfcFillAreaStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFillAreaStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFillAreaStyle::IfcFillAreaStyle(boost::optional< std::string > v1_Name, IfcEntityList::ptr v2_FillStyles, boost::optional< bool > v3_ModelorDraughting) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_FillStyles)); if (v3_ModelorDraughting) { e->setArgument(2,(*v3_ModelorDraughting)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFillAreaStyleHatching
IfcCurveStyle* IfcFillAreaStyleHatching::HatchLineAppearance() const { return (IfcCurveStyle*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcFillAreaStyleHatching::setHatchLineAppearance(IfcCurveStyle* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcHatchLineDistanceSelect* IfcFillAreaStyleHatching::StartOfNextHatchLine() const { return (IfcHatchLineDistanceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcFillAreaStyleHatching::setStartOfNextHatchLine(IfcHatchLineDistanceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcFillAreaStyleHatching::hasPointOfReferenceHatchLine() const { return !data_->getArgument(2)->isNull(); }
IfcCartesianPoint* IfcFillAreaStyleHatching::PointOfReferenceHatchLine() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcFillAreaStyleHatching::setPointOfReferenceHatchLine(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcFillAreaStyleHatching::hasPatternStart() const { return !data_->getArgument(3)->isNull(); }
IfcCartesianPoint* IfcFillAreaStyleHatching::PatternStart() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcFillAreaStyleHatching::setPatternStart(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcFillAreaStyleHatching::HatchLineAngle() const { return *data_->getArgument(4); }
void IfcFillAreaStyleHatching::setHatchLineAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcFillAreaStyleHatching::declaration() const { return *IfcFillAreaStyleHatching_type; }
Type::Enum IfcFillAreaStyleHatching::Class() { return Type::IfcFillAreaStyleHatching; }
IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFillAreaStyleHatching)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcCurveStyle* v1_HatchLineAppearance, IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, IfcCartesianPoint* v3_PointOfReferenceHatchLine, IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_HatchLineAppearance)); e->setArgument(1,(v2_StartOfNextHatchLine)); e->setArgument(2,(v3_PointOfReferenceHatchLine)); e->setArgument(3,(v4_PatternStart)); e->setArgument(4,(v5_HatchLineAngle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFillAreaStyleTiles
IfcTemplatedEntityList< IfcVector >::ptr IfcFillAreaStyleTiles::TilingPattern() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcVector>(); }
void IfcFillAreaStyleTiles::setTilingPattern(IfcTemplatedEntityList< IfcVector >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
IfcTemplatedEntityList< IfcStyledItem >::ptr IfcFillAreaStyleTiles::Tiles() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcStyledItem>(); }
void IfcFillAreaStyleTiles::setTiles(IfcTemplatedEntityList< IfcStyledItem >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
double IfcFillAreaStyleTiles::TilingScale() const { return *data_->getArgument(2); }
void IfcFillAreaStyleTiles::setTilingScale(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcFillAreaStyleTiles::declaration() const { return *IfcFillAreaStyleTiles_type; }
Type::Enum IfcFillAreaStyleTiles::Class() { return Type::IfcFillAreaStyleTiles; }
IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFillAreaStyleTiles)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcTemplatedEntityList< IfcVector >::ptr v1_TilingPattern, IfcTemplatedEntityList< IfcStyledItem >::ptr v2_Tiles, double v3_TilingScale) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TilingPattern)->generalize()); e->setArgument(1,(v2_Tiles)->generalize()); e->setArgument(2,(v3_TilingScale)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFilter
bool IfcFilter::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFilterTypeEnum::IfcFilterTypeEnum IfcFilter::PredefinedType() const { return IfcFilterTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFilter::setPredefinedType(IfcFilterTypeEnum::IfcFilterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFilterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFilter::declaration() const { return *IfcFilter_type; }
Type::Enum IfcFilter::Class() { return Type::IfcFilter; }
IfcFilter::IfcFilter(IfcAbstractEntity* e) : IfcFlowTreatmentDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFilter)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFilter::IfcFilter(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFilterTypeEnum::IfcFilterTypeEnum > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFilterTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFilterType
IfcFilterTypeEnum::IfcFilterTypeEnum IfcFilterType::PredefinedType() const { return IfcFilterTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFilterType::setPredefinedType(IfcFilterTypeEnum::IfcFilterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFilterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFilterType::declaration() const { return *IfcFilterType_type; }
Type::Enum IfcFilterType::Class() { return Type::IfcFilterType; }
IfcFilterType::IfcFilterType(IfcAbstractEntity* e) : IfcFlowTreatmentDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFilterType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFilterType::IfcFilterType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFilterTypeEnum::IfcFilterTypeEnum v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFilterTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFireSuppressionTerminal
bool IfcFireSuppressionTerminal::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum IfcFireSuppressionTerminal::PredefinedType() const { return IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFireSuppressionTerminal::setPredefinedType(IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFireSuppressionTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFireSuppressionTerminal::declaration() const { return *IfcFireSuppressionTerminal_type; }
Type::Enum IfcFireSuppressionTerminal::Class() { return Type::IfcFireSuppressionTerminal; }
IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFireSuppressionTerminal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFireSuppressionTerminalTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFireSuppressionTerminalType
IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum IfcFireSuppressionTerminalType::PredefinedType() const { return IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFireSuppressionTerminalType::setPredefinedType(IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFireSuppressionTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFireSuppressionTerminalType::declaration() const { return *IfcFireSuppressionTerminalType_type; }
Type::Enum IfcFireSuppressionTerminalType::Class() { return Type::IfcFireSuppressionTerminalType; }
IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFireSuppressionTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFireSuppressionTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFixedReferenceSweptAreaSolid
IfcCurve* IfcFixedReferenceSweptAreaSolid::Directrix() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcFixedReferenceSweptAreaSolid::setDirectrix(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcFixedReferenceSweptAreaSolid::hasStartParam() const { return !data_->getArgument(3)->isNull(); }
double IfcFixedReferenceSweptAreaSolid::StartParam() const { return *data_->getArgument(3); }
void IfcFixedReferenceSweptAreaSolid::setStartParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcFixedReferenceSweptAreaSolid::hasEndParam() const { return !data_->getArgument(4)->isNull(); }
double IfcFixedReferenceSweptAreaSolid::EndParam() const { return *data_->getArgument(4); }
void IfcFixedReferenceSweptAreaSolid::setEndParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcDirection* IfcFixedReferenceSweptAreaSolid::FixedReference() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcFixedReferenceSweptAreaSolid::setFixedReference(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcFixedReferenceSweptAreaSolid::declaration() const { return *IfcFixedReferenceSweptAreaSolid_type; }
Type::Enum IfcFixedReferenceSweptAreaSolid::Class() { return Type::IfcFixedReferenceSweptAreaSolid; }
IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFixedReferenceSweptAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, IfcDirection* v6_FixedReference) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_Directrix)); if (v4_StartParam) { e->setArgument(3,(*v4_StartParam)); } else { e->setArgument(3); } if (v5_EndParam) { e->setArgument(4,(*v5_EndParam)); } else { e->setArgument(4); } e->setArgument(5,(v6_FixedReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowController


const IfcParse::entity& IfcFlowController::declaration() const { return *IfcFlowController_type; }
Type::Enum IfcFlowController::Class() { return Type::IfcFlowController; }
IfcFlowController::IfcFlowController(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowController)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowController::IfcFlowController(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowControllerType


const IfcParse::entity& IfcFlowControllerType::declaration() const { return *IfcFlowControllerType_type; }
Type::Enum IfcFlowControllerType::Class() { return Type::IfcFlowControllerType; }
IfcFlowControllerType::IfcFlowControllerType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowControllerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowControllerType::IfcFlowControllerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowFitting


const IfcParse::entity& IfcFlowFitting::declaration() const { return *IfcFlowFitting_type; }
Type::Enum IfcFlowFitting::Class() { return Type::IfcFlowFitting; }
IfcFlowFitting::IfcFlowFitting(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowFitting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowFitting::IfcFlowFitting(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowFittingType


const IfcParse::entity& IfcFlowFittingType::declaration() const { return *IfcFlowFittingType_type; }
Type::Enum IfcFlowFittingType::Class() { return Type::IfcFlowFittingType; }
IfcFlowFittingType::IfcFlowFittingType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowFittingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowInstrument
bool IfcFlowInstrument::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum IfcFlowInstrument::PredefinedType() const { return IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFlowInstrument::setPredefinedType(IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFlowInstrumentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFlowInstrument::declaration() const { return *IfcFlowInstrument_type; }
Type::Enum IfcFlowInstrument::Class() { return Type::IfcFlowInstrument; }
IfcFlowInstrument::IfcFlowInstrument(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowInstrument)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowInstrument::IfcFlowInstrument(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFlowInstrumentTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowInstrumentType
IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum IfcFlowInstrumentType::PredefinedType() const { return IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFlowInstrumentType::setPredefinedType(IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFlowInstrumentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFlowInstrumentType::declaration() const { return *IfcFlowInstrumentType_type; }
Type::Enum IfcFlowInstrumentType::Class() { return Type::IfcFlowInstrumentType; }
IfcFlowInstrumentType::IfcFlowInstrumentType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowInstrumentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFlowInstrumentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowMeter
bool IfcFlowMeter::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum IfcFlowMeter::PredefinedType() const { return IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFlowMeter::setPredefinedType(IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFlowMeterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFlowMeter::declaration() const { return *IfcFlowMeter_type; }
Type::Enum IfcFlowMeter::Class() { return Type::IfcFlowMeter; }
IfcFlowMeter::IfcFlowMeter(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowMeter)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowMeter::IfcFlowMeter(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFlowMeterTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowMeterType
IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum IfcFlowMeterType::PredefinedType() const { return IfcFlowMeterTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFlowMeterType::setPredefinedType(IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFlowMeterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFlowMeterType::declaration() const { return *IfcFlowMeterType_type; }
Type::Enum IfcFlowMeterType::Class() { return Type::IfcFlowMeterType; }
IfcFlowMeterType::IfcFlowMeterType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowMeterType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowMeterType::IfcFlowMeterType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFlowMeterTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowMovingDevice


const IfcParse::entity& IfcFlowMovingDevice::declaration() const { return *IfcFlowMovingDevice_type; }
Type::Enum IfcFlowMovingDevice::Class() { return Type::IfcFlowMovingDevice; }
IfcFlowMovingDevice::IfcFlowMovingDevice(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowMovingDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowMovingDevice::IfcFlowMovingDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowMovingDeviceType


const IfcParse::entity& IfcFlowMovingDeviceType::declaration() const { return *IfcFlowMovingDeviceType_type; }
Type::Enum IfcFlowMovingDeviceType::Class() { return Type::IfcFlowMovingDeviceType; }
IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowMovingDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowSegment


const IfcParse::entity& IfcFlowSegment::declaration() const { return *IfcFlowSegment_type; }
Type::Enum IfcFlowSegment::Class() { return Type::IfcFlowSegment; }
IfcFlowSegment::IfcFlowSegment(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowSegment::IfcFlowSegment(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowSegmentType


const IfcParse::entity& IfcFlowSegmentType::declaration() const { return *IfcFlowSegmentType_type; }
Type::Enum IfcFlowSegmentType::Class() { return Type::IfcFlowSegmentType; }
IfcFlowSegmentType::IfcFlowSegmentType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowSegmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowSegmentType::IfcFlowSegmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowStorageDevice


const IfcParse::entity& IfcFlowStorageDevice::declaration() const { return *IfcFlowStorageDevice_type; }
Type::Enum IfcFlowStorageDevice::Class() { return Type::IfcFlowStorageDevice; }
IfcFlowStorageDevice::IfcFlowStorageDevice(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowStorageDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowStorageDevice::IfcFlowStorageDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowStorageDeviceType


const IfcParse::entity& IfcFlowStorageDeviceType::declaration() const { return *IfcFlowStorageDeviceType_type; }
Type::Enum IfcFlowStorageDeviceType::Class() { return Type::IfcFlowStorageDeviceType; }
IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowStorageDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowTerminal


const IfcParse::entity& IfcFlowTerminal::declaration() const { return *IfcFlowTerminal_type; }
Type::Enum IfcFlowTerminal::Class() { return Type::IfcFlowTerminal; }
IfcFlowTerminal::IfcFlowTerminal(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowTerminal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowTerminal::IfcFlowTerminal(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowTerminalType


const IfcParse::entity& IfcFlowTerminalType::declaration() const { return *IfcFlowTerminalType_type; }
Type::Enum IfcFlowTerminalType::Class() { return Type::IfcFlowTerminalType; }
IfcFlowTerminalType::IfcFlowTerminalType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowTerminalType::IfcFlowTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowTreatmentDevice


const IfcParse::entity& IfcFlowTreatmentDevice::declaration() const { return *IfcFlowTreatmentDevice_type; }
Type::Enum IfcFlowTreatmentDevice::Class() { return Type::IfcFlowTreatmentDevice; }
IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(IfcAbstractEntity* e) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowTreatmentDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFlowTreatmentDeviceType


const IfcParse::entity& IfcFlowTreatmentDeviceType::declaration() const { return *IfcFlowTreatmentDeviceType_type; }
Type::Enum IfcFlowTreatmentDeviceType::Class() { return Type::IfcFlowTreatmentDeviceType; }
IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(IfcAbstractEntity* e) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFlowTreatmentDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFooting
bool IfcFooting::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFootingTypeEnum::IfcFootingTypeEnum IfcFooting::PredefinedType() const { return IfcFootingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFooting::setPredefinedType(IfcFootingTypeEnum::IfcFootingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFootingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFooting::declaration() const { return *IfcFooting_type; }
Type::Enum IfcFooting::Class() { return Type::IfcFooting; }
IfcFooting::IfcFooting(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFooting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFooting::IfcFooting(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFootingTypeEnum::IfcFootingTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFootingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFootingType
IfcFootingTypeEnum::IfcFootingTypeEnum IfcFootingType::PredefinedType() const { return IfcFootingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcFootingType::setPredefinedType(IfcFootingTypeEnum::IfcFootingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcFootingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFootingType::declaration() const { return *IfcFootingType_type; }
Type::Enum IfcFootingType::Class() { return Type::IfcFootingType; }
IfcFootingType::IfcFootingType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFootingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFootingType::IfcFootingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcFootingTypeEnum::IfcFootingTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcFootingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFurnishingElement


const IfcParse::entity& IfcFurnishingElement::declaration() const { return *IfcFurnishingElement_type; }
Type::Enum IfcFurnishingElement::Class() { return Type::IfcFurnishingElement; }
IfcFurnishingElement::IfcFurnishingElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFurnishingElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFurnishingElement::IfcFurnishingElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFurnishingElementType


const IfcParse::entity& IfcFurnishingElementType::declaration() const { return *IfcFurnishingElementType_type; }
Type::Enum IfcFurnishingElementType::Class() { return Type::IfcFurnishingElementType; }
IfcFurnishingElementType::IfcFurnishingElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFurnishingElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFurniture
bool IfcFurniture::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcFurnitureTypeEnum::IfcFurnitureTypeEnum IfcFurniture::PredefinedType() const { return IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); }
void IfcFurniture::setPredefinedType(IfcFurnitureTypeEnum::IfcFurnitureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcFurnitureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFurniture::declaration() const { return *IfcFurniture_type; }
Type::Enum IfcFurniture::Class() { return Type::IfcFurniture; }
IfcFurniture::IfcFurniture(IfcAbstractEntity* e) : IfcFurnishingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFurniture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFurniture::IfcFurniture(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcFurnitureTypeEnum::IfcFurnitureTypeEnum > v9_PredefinedType) : IfcFurnishingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcFurnitureTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcFurnitureType
IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum IfcFurnitureType::AssemblyPlace() const { return IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); }
void IfcFurnitureType::setAssemblyPlace(IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcAssemblyPlaceEnum::ToString(v)); }
bool IfcFurnitureType::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcFurnitureTypeEnum::IfcFurnitureTypeEnum IfcFurnitureType::PredefinedType() const { return IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); }
void IfcFurnitureType::setPredefinedType(IfcFurnitureTypeEnum::IfcFurnitureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcFurnitureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcFurnitureType::declaration() const { return *IfcFurnitureType_type; }
Type::Enum IfcFurnitureType::Class() { return Type::IfcFurnitureType; }
IfcFurnitureType::IfcFurnitureType(IfcAbstractEntity* e) : IfcFurnishingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcFurnitureType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum v10_AssemblyPlace, boost::optional< IfcFurnitureTypeEnum::IfcFurnitureTypeEnum > v11_PredefinedType) : IfcFurnishingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_AssemblyPlace,IfcAssemblyPlaceEnum::ToString(v10_AssemblyPlace)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcFurnitureTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeographicElement
bool IfcGeographicElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum IfcGeographicElement::PredefinedType() const { return IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcGeographicElement::setPredefinedType(IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcGeographicElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcGeographicElement::declaration() const { return *IfcGeographicElement_type; }
Type::Enum IfcGeographicElement::Class() { return Type::IfcGeographicElement; }
IfcGeographicElement::IfcGeographicElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeographicElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeographicElement::IfcGeographicElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum > v9_PredefinedType) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcGeographicElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeographicElementType
IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum IfcGeographicElementType::PredefinedType() const { return IfcGeographicElementTypeEnum::FromString(*data_->getArgument(9)); }
void IfcGeographicElementType::setPredefinedType(IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcGeographicElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcGeographicElementType::declaration() const { return *IfcGeographicElementType_type; }
Type::Enum IfcGeographicElementType::Class() { return Type::IfcGeographicElementType; }
IfcGeographicElementType::IfcGeographicElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeographicElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeographicElementType::IfcGeographicElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum v10_PredefinedType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcGeographicElementTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricCurveSet


const IfcParse::entity& IfcGeometricCurveSet::declaration() const { return *IfcGeometricCurveSet_type; }
Type::Enum IfcGeometricCurveSet::Class() { return Type::IfcGeometricCurveSet; }
IfcGeometricCurveSet::IfcGeometricCurveSet(IfcAbstractEntity* e) : IfcGeometricSet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricCurveSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricCurveSet::IfcGeometricCurveSet(IfcEntityList::ptr v1_Elements) : IfcGeometricSet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Elements)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricRepresentationContext
int IfcGeometricRepresentationContext::CoordinateSpaceDimension() const { return *data_->getArgument(2); }
void IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcGeometricRepresentationContext::hasPrecision() const { return !data_->getArgument(3)->isNull(); }
double IfcGeometricRepresentationContext::Precision() const { return *data_->getArgument(3); }
void IfcGeometricRepresentationContext::setPrecision(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcAxis2Placement* IfcGeometricRepresentationContext::WorldCoordinateSystem() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcGeometricRepresentationContext::setWorldCoordinateSystem(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcGeometricRepresentationContext::hasTrueNorth() const { return !data_->getArgument(5)->isNull(); }
IfcDirection* IfcGeometricRepresentationContext::TrueNorth() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcGeometricRepresentationContext::setTrueNorth(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcGeometricRepresentationSubContext::list::ptr IfcGeometricRepresentationContext::HasSubContexts() const { return data_->getInverse(Type::IfcGeometricRepresentationSubContext, 6)->as<IfcGeometricRepresentationSubContext>(); }
IfcCoordinateOperation::list::ptr IfcGeometricRepresentationContext::HasCoordinateOperation() const { return data_->getInverse(Type::IfcCoordinateOperation, 0)->as<IfcCoordinateOperation>(); }

const IfcParse::entity& IfcGeometricRepresentationContext::declaration() const { return *IfcGeometricRepresentationContext_type; }
Type::Enum IfcGeometricRepresentationContext::Class() { return Type::IfcGeometricRepresentationContext; }
IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(IfcAbstractEntity* e) : IfcRepresentationContext((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricRepresentationContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, IfcAxis2Placement* v5_WorldCoordinateSystem, IfcDirection* v6_TrueNorth) : IfcRepresentationContext((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ContextIdentifier) { e->setArgument(0,(*v1_ContextIdentifier)); } else { e->setArgument(0); } if (v2_ContextType) { e->setArgument(1,(*v2_ContextType)); } else { e->setArgument(1); } e->setArgument(2,(v3_CoordinateSpaceDimension)); if (v4_Precision) { e->setArgument(3,(*v4_Precision)); } else { e->setArgument(3); } e->setArgument(4,(v5_WorldCoordinateSystem)); e->setArgument(5,(v6_TrueNorth)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricRepresentationItem


const IfcParse::entity& IfcGeometricRepresentationItem::declaration() const { return *IfcGeometricRepresentationItem_type; }
Type::Enum IfcGeometricRepresentationItem::Class() { return Type::IfcGeometricRepresentationItem; }
IfcGeometricRepresentationItem::IfcGeometricRepresentationItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricRepresentationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricRepresentationSubContext
IfcGeometricRepresentationContext* IfcGeometricRepresentationSubContext::ParentContext() const { return (IfcGeometricRepresentationContext*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcGeometricRepresentationSubContext::setParentContext(IfcGeometricRepresentationContext* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcGeometricRepresentationSubContext::hasTargetScale() const { return !data_->getArgument(7)->isNull(); }
double IfcGeometricRepresentationSubContext::TargetScale() const { return *data_->getArgument(7); }
void IfcGeometricRepresentationSubContext::setTargetScale(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcGeometricProjectionEnum::IfcGeometricProjectionEnum IfcGeometricRepresentationSubContext::TargetView() const { return IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); }
void IfcGeometricRepresentationSubContext::setTargetView(IfcGeometricProjectionEnum::IfcGeometricProjectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcGeometricProjectionEnum::ToString(v)); }
bool IfcGeometricRepresentationSubContext::hasUserDefinedTargetView() const { return !data_->getArgument(9)->isNull(); }
std::string IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { return *data_->getArgument(9); }
void IfcGeometricRepresentationSubContext::setUserDefinedTargetView(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcGeometricRepresentationSubContext::declaration() const { return *IfcGeometricRepresentationSubContext_type; }
Type::Enum IfcGeometricRepresentationSubContext::Class() { return Type::IfcGeometricRepresentationSubContext; }
IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(IfcAbstractEntity* e) : IfcGeometricRepresentationContext((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricRepresentationSubContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, IfcGeometricProjectionEnum::IfcGeometricProjectionEnum v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView) : IfcGeometricRepresentationContext((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ContextIdentifier) { e->setArgument(0,(*v1_ContextIdentifier)); } else { e->setArgument(0); } if (v2_ContextType) { e->setArgument(1,(*v2_ContextType)); } else { e->setArgument(1); } e->setArgumentDerived(2); e->setArgumentDerived(3); e->setArgumentDerived(4); e->setArgumentDerived(5); e->setArgument(6,(v7_ParentContext)); if (v8_TargetScale) { e->setArgument(7,(*v8_TargetScale)); } else { e->setArgument(7); } e->setArgument(8,v9_TargetView,IfcGeometricProjectionEnum::ToString(v9_TargetView)); if (v10_UserDefinedTargetView) { e->setArgument(9,(*v10_UserDefinedTargetView)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGeometricSet
IfcEntityList::ptr IfcGeometricSet::Elements() const { return *data_->getArgument(0); }
void IfcGeometricSet::setElements(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcGeometricSet::declaration() const { return *IfcGeometricSet_type; }
Type::Enum IfcGeometricSet::Class() { return Type::IfcGeometricSet; }
IfcGeometricSet::IfcGeometricSet(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGeometricSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGeometricSet::IfcGeometricSet(IfcEntityList::ptr v1_Elements) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Elements)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGrid
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcGrid::UAxes() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcGridAxis>(); }
void IfcGrid::setUAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcGrid::VAxes() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcGridAxis>(); }
void IfcGrid::setVAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }
bool IfcGrid::hasWAxes() const { return !data_->getArgument(9)->isNull(); }
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcGrid::WAxes() const { IfcEntityList::ptr es = *data_->getArgument(9); return es->as<IfcGridAxis>(); }
void IfcGrid::setWAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v->generalize()); }
bool IfcGrid::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcGridTypeEnum::IfcGridTypeEnum IfcGrid::PredefinedType() const { return IfcGridTypeEnum::FromString(*data_->getArgument(10)); }
void IfcGrid::setPredefinedType(IfcGridTypeEnum::IfcGridTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcGridTypeEnum::ToString(v)); }

IfcRelContainedInSpatialStructure::list::ptr IfcGrid::ContainedInStructure() const { return data_->getInverse(Type::IfcRelContainedInSpatialStructure, 4)->as<IfcRelContainedInSpatialStructure>(); }

const IfcParse::entity& IfcGrid::declaration() const { return *IfcGrid_type; }
Type::Enum IfcGrid::Class() { return Type::IfcGrid; }
IfcGrid::IfcGrid(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGrid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGrid::IfcGrid(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcTemplatedEntityList< IfcGridAxis >::ptr v8_UAxes, IfcTemplatedEntityList< IfcGridAxis >::ptr v9_VAxes, boost::optional< IfcTemplatedEntityList< IfcGridAxis >::ptr > v10_WAxes, boost::optional< IfcGridTypeEnum::IfcGridTypeEnum > v11_PredefinedType) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_UAxes)->generalize()); e->setArgument(8,(v9_VAxes)->generalize()); if (v10_WAxes) { e->setArgument(9,(*v10_WAxes)->generalize()); } else { e->setArgument(9); } if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcGridTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGridAxis
bool IfcGridAxis::hasAxisTag() const { return !data_->getArgument(0)->isNull(); }
std::string IfcGridAxis::AxisTag() const { return *data_->getArgument(0); }
void IfcGridAxis::setAxisTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCurve* IfcGridAxis::AxisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcGridAxis::setAxisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcGridAxis::SameSense() const { return *data_->getArgument(2); }
void IfcGridAxis::setSameSense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcGrid::list::ptr IfcGridAxis::PartOfW() const { return data_->getInverse(Type::IfcGrid, 9)->as<IfcGrid>(); }
IfcGrid::list::ptr IfcGridAxis::PartOfV() const { return data_->getInverse(Type::IfcGrid, 8)->as<IfcGrid>(); }
IfcGrid::list::ptr IfcGridAxis::PartOfU() const { return data_->getInverse(Type::IfcGrid, 7)->as<IfcGrid>(); }
IfcVirtualGridIntersection::list::ptr IfcGridAxis::HasIntersections() const { return data_->getInverse(Type::IfcVirtualGridIntersection, 0)->as<IfcVirtualGridIntersection>(); }

const IfcParse::entity& IfcGridAxis::declaration() const { return *IfcGridAxis_type; }
Type::Enum IfcGridAxis::Class() { return Type::IfcGridAxis; }
IfcGridAxis::IfcGridAxis(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcGridAxis)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGridAxis::IfcGridAxis(boost::optional< std::string > v1_AxisTag, IfcCurve* v2_AxisCurve, bool v3_SameSense) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_AxisTag) { e->setArgument(0,(*v1_AxisTag)); } else { e->setArgument(0); } e->setArgument(1,(v2_AxisCurve)); e->setArgument(2,(v3_SameSense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGridPlacement
IfcVirtualGridIntersection* IfcGridPlacement::PlacementLocation() const { return (IfcVirtualGridIntersection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcGridPlacement::setPlacementLocation(IfcVirtualGridIntersection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcGridPlacement::hasPlacementRefDirection() const { return !data_->getArgument(1)->isNull(); }
IfcGridPlacementDirectionSelect* IfcGridPlacement::PlacementRefDirection() const { return (IfcGridPlacementDirectionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcGridPlacement::setPlacementRefDirection(IfcGridPlacementDirectionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcGridPlacement::declaration() const { return *IfcGridPlacement_type; }
Type::Enum IfcGridPlacement::Class() { return Type::IfcGridPlacement; }
IfcGridPlacement::IfcGridPlacement(IfcAbstractEntity* e) : IfcObjectPlacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGridPlacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGridPlacement::IfcGridPlacement(IfcVirtualGridIntersection* v1_PlacementLocation, IfcGridPlacementDirectionSelect* v2_PlacementRefDirection) : IfcObjectPlacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_PlacementLocation)); e->setArgument(1,(v2_PlacementRefDirection)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcGroup

IfcRelAssignsToGroup::list::ptr IfcGroup::IsGroupedBy() const { return data_->getInverse(Type::IfcRelAssignsToGroup, 6)->as<IfcRelAssignsToGroup>(); }

const IfcParse::entity& IfcGroup::declaration() const { return *IfcGroup_type; }
Type::Enum IfcGroup::Class() { return Type::IfcGroup; }
IfcGroup::IfcGroup(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcGroup::IfcGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcHalfSpaceSolid
IfcSurface* IfcHalfSpaceSolid::BaseSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcHalfSpaceSolid::setBaseSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcHalfSpaceSolid::AgreementFlag() const { return *data_->getArgument(1); }
void IfcHalfSpaceSolid::setAgreementFlag(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcHalfSpaceSolid::declaration() const { return *IfcHalfSpaceSolid_type; }
Type::Enum IfcHalfSpaceSolid::Class() { return Type::IfcHalfSpaceSolid; }
IfcHalfSpaceSolid::IfcHalfSpaceSolid(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcHalfSpaceSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcHalfSpaceSolid::IfcHalfSpaceSolid(IfcSurface* v1_BaseSurface, bool v2_AgreementFlag) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BaseSurface)); e->setArgument(1,(v2_AgreementFlag)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcHeatExchanger
bool IfcHeatExchanger::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum IfcHeatExchanger::PredefinedType() const { return IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcHeatExchanger::setPredefinedType(IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcHeatExchangerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcHeatExchanger::declaration() const { return *IfcHeatExchanger_type; }
Type::Enum IfcHeatExchanger::Class() { return Type::IfcHeatExchanger; }
IfcHeatExchanger::IfcHeatExchanger(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcHeatExchanger)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcHeatExchanger::IfcHeatExchanger(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcHeatExchangerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcHeatExchangerType
IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum IfcHeatExchangerType::PredefinedType() const { return IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcHeatExchangerType::setPredefinedType(IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcHeatExchangerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcHeatExchangerType::declaration() const { return *IfcHeatExchangerType_type; }
Type::Enum IfcHeatExchangerType::Class() { return Type::IfcHeatExchangerType; }
IfcHeatExchangerType::IfcHeatExchangerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcHeatExchangerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcHeatExchangerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcHumidifier
bool IfcHumidifier::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcHumidifierTypeEnum::IfcHumidifierTypeEnum IfcHumidifier::PredefinedType() const { return IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); }
void IfcHumidifier::setPredefinedType(IfcHumidifierTypeEnum::IfcHumidifierTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcHumidifierTypeEnum::ToString(v)); }


const IfcParse::entity& IfcHumidifier::declaration() const { return *IfcHumidifier_type; }
Type::Enum IfcHumidifier::Class() { return Type::IfcHumidifier; }
IfcHumidifier::IfcHumidifier(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcHumidifier)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcHumidifier::IfcHumidifier(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcHumidifierTypeEnum::IfcHumidifierTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcHumidifierTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcHumidifierType
IfcHumidifierTypeEnum::IfcHumidifierTypeEnum IfcHumidifierType::PredefinedType() const { return IfcHumidifierTypeEnum::FromString(*data_->getArgument(9)); }
void IfcHumidifierType::setPredefinedType(IfcHumidifierTypeEnum::IfcHumidifierTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcHumidifierTypeEnum::ToString(v)); }


const IfcParse::entity& IfcHumidifierType::declaration() const { return *IfcHumidifierType_type; }
Type::Enum IfcHumidifierType::Class() { return Type::IfcHumidifierType; }
IfcHumidifierType::IfcHumidifierType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcHumidifierType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcHumidifierType::IfcHumidifierType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcHumidifierTypeEnum::IfcHumidifierTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcHumidifierTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIShapeProfileDef
double IfcIShapeProfileDef::OverallWidth() const { return *data_->getArgument(3); }
void IfcIShapeProfileDef::setOverallWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcIShapeProfileDef::OverallDepth() const { return *data_->getArgument(4); }
void IfcIShapeProfileDef::setOverallDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcIShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcIShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcIShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcIShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcIShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcIShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcIShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcIShapeProfileDef::hasFlangeEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcIShapeProfileDef::FlangeEdgeRadius() const { return *data_->getArgument(8); }
void IfcIShapeProfileDef::setFlangeEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcIShapeProfileDef::hasFlangeSlope() const { return !data_->getArgument(9)->isNull(); }
double IfcIShapeProfileDef::FlangeSlope() const { return *data_->getArgument(9); }
void IfcIShapeProfileDef::setFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcIShapeProfileDef::declaration() const { return *IfcIShapeProfileDef_type; }
Type::Enum IfcIShapeProfileDef::Class() { return Type::IfcIShapeProfileDef; }
IfcIShapeProfileDef::IfcIShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIShapeProfileDef::IfcIShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_OverallWidth, double v5_OverallDepth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_FlangeSlope) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_OverallWidth)); e->setArgument(4,(v5_OverallDepth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_FlangeEdgeRadius) { e->setArgument(8,(*v9_FlangeEdgeRadius)); } else { e->setArgument(8); } if (v10_FlangeSlope) { e->setArgument(9,(*v10_FlangeSlope)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcImageTexture
std::string IfcImageTexture::URLReference() const { return *data_->getArgument(5); }
void IfcImageTexture::setURLReference(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcImageTexture::declaration() const { return *IfcImageTexture_type; }
Type::Enum IfcImageTexture::Class() { return Type::IfcImageTexture; }
IfcImageTexture::IfcImageTexture(IfcAbstractEntity* e) : IfcSurfaceTexture((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcImageTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference) : IfcSurfaceTexture((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); if (v3_Mode) { e->setArgument(2,(*v3_Mode)); } else { e->setArgument(2); } e->setArgument(3,(v4_TextureTransform)); if (v5_Parameter) { e->setArgument(4,(*v5_Parameter)); } else { e->setArgument(4); } e->setArgument(5,(v6_URLReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIndexedColourMap
IfcTessellatedFaceSet* IfcIndexedColourMap::MappedTo() const { return (IfcTessellatedFaceSet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcIndexedColourMap::setMappedTo(IfcTessellatedFaceSet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcIndexedColourMap::hasOpacity() const { return !data_->getArgument(1)->isNull(); }
double IfcIndexedColourMap::Opacity() const { return *data_->getArgument(1); }
void IfcIndexedColourMap::setOpacity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcColourRgbList* IfcIndexedColourMap::Colours() const { return (IfcColourRgbList*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcIndexedColourMap::setColours(IfcColourRgbList* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::vector< int > /*[1:?]*/ IfcIndexedColourMap::ColourIndex() const { return *data_->getArgument(3); }
void IfcIndexedColourMap::setColourIndex(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcIndexedColourMap::declaration() const { return *IfcIndexedColourMap_type; }
Type::Enum IfcIndexedColourMap::Class() { return Type::IfcIndexedColourMap; }
IfcIndexedColourMap::IfcIndexedColourMap(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIndexedColourMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIndexedColourMap::IfcIndexedColourMap(IfcTessellatedFaceSet* v1_MappedTo, boost::optional< double > v2_Opacity, IfcColourRgbList* v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MappedTo)); if (v2_Opacity) { e->setArgument(1,(*v2_Opacity)); } else { e->setArgument(1); } e->setArgument(2,(v3_Colours)); e->setArgument(3,(v4_ColourIndex)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIndexedPolyCurve
IfcCartesianPointList* IfcIndexedPolyCurve::Points() const { return (IfcCartesianPointList*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcIndexedPolyCurve::setPoints(IfcCartesianPointList* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcIndexedPolyCurve::hasSegments() const { return !data_->getArgument(1)->isNull(); }
IfcEntityList::ptr IfcIndexedPolyCurve::Segments() const { return *data_->getArgument(1); }
void IfcIndexedPolyCurve::setSegments(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcIndexedPolyCurve::hasSelfIntersect() const { return !data_->getArgument(2)->isNull(); }
bool IfcIndexedPolyCurve::SelfIntersect() const { return *data_->getArgument(2); }
void IfcIndexedPolyCurve::setSelfIntersect(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcIndexedPolyCurve::declaration() const { return *IfcIndexedPolyCurve_type; }
Type::Enum IfcIndexedPolyCurve::Class() { return Type::IfcIndexedPolyCurve; }
IfcIndexedPolyCurve::IfcIndexedPolyCurve(IfcAbstractEntity* e) : IfcBoundedCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIndexedPolyCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIndexedPolyCurve::IfcIndexedPolyCurve(IfcCartesianPointList* v1_Points, boost::optional< IfcEntityList::ptr > v2_Segments, boost::optional< bool > v3_SelfIntersect) : IfcBoundedCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Points)); if (v2_Segments) { e->setArgument(1,(*v2_Segments)); } else { e->setArgument(1); } if (v3_SelfIntersect) { e->setArgument(2,(*v3_SelfIntersect)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIndexedPolygonalFace
std::vector< int > /*[3:?]*/ IfcIndexedPolygonalFace::CoordIndex() const { return *data_->getArgument(0); }
void IfcIndexedPolygonalFace::setCoordIndex(std::vector< int > /*[3:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }

IfcPolygonalFaceSet::list::ptr IfcIndexedPolygonalFace::ToFaceSet() const { return data_->getInverse(Type::IfcPolygonalFaceSet, 2)->as<IfcPolygonalFaceSet>(); }

const IfcParse::entity& IfcIndexedPolygonalFace::declaration() const { return *IfcIndexedPolygonalFace_type; }
Type::Enum IfcIndexedPolygonalFace::Class() { return Type::IfcIndexedPolygonalFace; }
IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(IfcAbstractEntity* e) : IfcTessellatedItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIndexedPolygonalFace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(std::vector< int > /*[3:?]*/ v1_CoordIndex) : IfcTessellatedItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CoordIndex)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIndexedPolygonalFaceWithVoids
std::vector< std::vector< int > > IfcIndexedPolygonalFaceWithVoids::InnerCoordIndices() const { return *data_->getArgument(1); }
void IfcIndexedPolygonalFaceWithVoids::setInnerCoordIndices(std::vector< std::vector< int > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcIndexedPolygonalFaceWithVoids::declaration() const { return *IfcIndexedPolygonalFaceWithVoids_type; }
Type::Enum IfcIndexedPolygonalFaceWithVoids::Class() { return Type::IfcIndexedPolygonalFaceWithVoids; }
IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(IfcAbstractEntity* e) : IfcIndexedPolygonalFace((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIndexedPolygonalFaceWithVoids)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices) : IfcIndexedPolygonalFace((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CoordIndex)); e->setArgument(1,(v2_InnerCoordIndices)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIndexedTextureMap
IfcTessellatedFaceSet* IfcIndexedTextureMap::MappedTo() const { return (IfcTessellatedFaceSet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcIndexedTextureMap::setMappedTo(IfcTessellatedFaceSet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTextureVertexList* IfcIndexedTextureMap::TexCoords() const { return (IfcTextureVertexList*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcIndexedTextureMap::setTexCoords(IfcTextureVertexList* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcIndexedTextureMap::declaration() const { return *IfcIndexedTextureMap_type; }
Type::Enum IfcIndexedTextureMap::Class() { return Type::IfcIndexedTextureMap; }
IfcIndexedTextureMap::IfcIndexedTextureMap(IfcAbstractEntity* e) : IfcTextureCoordinate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIndexedTextureMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIndexedTextureMap::IfcIndexedTextureMap(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Maps, IfcTessellatedFaceSet* v2_MappedTo, IfcTextureVertexList* v3_TexCoords) : IfcTextureCoordinate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Maps)->generalize()); e->setArgument(1,(v2_MappedTo)); e->setArgument(2,(v3_TexCoords)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIndexedTriangleTextureMap
bool IfcIndexedTriangleTextureMap::hasTexCoordIndex() const { return !data_->getArgument(3)->isNull(); }
std::vector< std::vector< int > > IfcIndexedTriangleTextureMap::TexCoordIndex() const { return *data_->getArgument(3); }
void IfcIndexedTriangleTextureMap::setTexCoordIndex(std::vector< std::vector< int > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcIndexedTriangleTextureMap::declaration() const { return *IfcIndexedTriangleTextureMap_type; }
Type::Enum IfcIndexedTriangleTextureMap::Class() { return Type::IfcIndexedTriangleTextureMap; }
IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(IfcAbstractEntity* e) : IfcIndexedTextureMap((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIndexedTriangleTextureMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Maps, IfcTessellatedFaceSet* v2_MappedTo, IfcTextureVertexList* v3_TexCoords, boost::optional< std::vector< std::vector< int > > > v4_TexCoordIndex) : IfcIndexedTextureMap((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Maps)->generalize()); e->setArgument(1,(v2_MappedTo)); e->setArgument(2,(v3_TexCoords)); if (v4_TexCoordIndex) { e->setArgument(3,(*v4_TexCoordIndex)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcInterceptor
bool IfcInterceptor::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcInterceptorTypeEnum::IfcInterceptorTypeEnum IfcInterceptor::PredefinedType() const { return IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcInterceptor::setPredefinedType(IfcInterceptorTypeEnum::IfcInterceptorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcInterceptorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcInterceptor::declaration() const { return *IfcInterceptor_type; }
Type::Enum IfcInterceptor::Class() { return Type::IfcInterceptor; }
IfcInterceptor::IfcInterceptor(IfcAbstractEntity* e) : IfcFlowTreatmentDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcInterceptor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcInterceptor::IfcInterceptor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcInterceptorTypeEnum::IfcInterceptorTypeEnum > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcInterceptorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcInterceptorType
IfcInterceptorTypeEnum::IfcInterceptorTypeEnum IfcInterceptorType::PredefinedType() const { return IfcInterceptorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcInterceptorType::setPredefinedType(IfcInterceptorTypeEnum::IfcInterceptorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcInterceptorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcInterceptorType::declaration() const { return *IfcInterceptorType_type; }
Type::Enum IfcInterceptorType::Class() { return Type::IfcInterceptorType; }
IfcInterceptorType::IfcInterceptorType(IfcAbstractEntity* e) : IfcFlowTreatmentDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcInterceptorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcInterceptorType::IfcInterceptorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcInterceptorTypeEnum::IfcInterceptorTypeEnum v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcInterceptorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIntersectionCurve


const IfcParse::entity& IfcIntersectionCurve::declaration() const { return *IfcIntersectionCurve_type; }
Type::Enum IfcIntersectionCurve::Class() { return Type::IfcIntersectionCurve; }
IfcIntersectionCurve::IfcIntersectionCurve(IfcAbstractEntity* e) : IfcSurfaceCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIntersectionCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIntersectionCurve::IfcIntersectionCurve(IfcCurve* v1_Curve3D, IfcTemplatedEntityList< IfcPcurve >::ptr v2_AssociatedGeometry, IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation v3_MasterRepresentation) : IfcSurfaceCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Curve3D)); e->setArgument(1,(v2_AssociatedGeometry)->generalize()); e->setArgument(2,v3_MasterRepresentation,IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcInventory
bool IfcInventory::hasPredefinedType() const { return !data_->getArgument(5)->isNull(); }
IfcInventoryTypeEnum::IfcInventoryTypeEnum IfcInventory::PredefinedType() const { return IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); }
void IfcInventory::setPredefinedType(IfcInventoryTypeEnum::IfcInventoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcInventoryTypeEnum::ToString(v)); }
bool IfcInventory::hasJurisdiction() const { return !data_->getArgument(6)->isNull(); }
IfcActorSelect* IfcInventory::Jurisdiction() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcInventory::setJurisdiction(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcInventory::hasResponsiblePersons() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcPerson >::ptr IfcInventory::ResponsiblePersons() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcPerson>(); }
void IfcInventory::setResponsiblePersons(IfcTemplatedEntityList< IfcPerson >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcInventory::hasLastUpdateDate() const { return !data_->getArgument(8)->isNull(); }
std::string IfcInventory::LastUpdateDate() const { return *data_->getArgument(8); }
void IfcInventory::setLastUpdateDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcInventory::hasCurrentValue() const { return !data_->getArgument(9)->isNull(); }
IfcCostValue* IfcInventory::CurrentValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcInventory::setCurrentValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcInventory::hasOriginalValue() const { return !data_->getArgument(10)->isNull(); }
IfcCostValue* IfcInventory::OriginalValue() const { return (IfcCostValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcInventory::setOriginalValue(IfcCostValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcInventory::declaration() const { return *IfcInventory_type; }
Type::Enum IfcInventory::Class() { return Type::IfcInventory; }
IfcInventory::IfcInventory(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcInventory)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcInventory::IfcInventory(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< IfcInventoryTypeEnum::IfcInventoryTypeEnum > v6_PredefinedType, IfcActorSelect* v7_Jurisdiction, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_ResponsiblePersons, boost::optional< std::string > v9_LastUpdateDate, IfcCostValue* v10_CurrentValue, IfcCostValue* v11_OriginalValue) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_PredefinedType) { e->setArgument(5,*v6_PredefinedType,IfcInventoryTypeEnum::ToString(*v6_PredefinedType)); } else { e->setArgument(5); } e->setArgument(6,(v7_Jurisdiction)); if (v8_ResponsiblePersons) { e->setArgument(7,(*v8_ResponsiblePersons)->generalize()); } else { e->setArgument(7); } if (v9_LastUpdateDate) { e->setArgument(8,(*v9_LastUpdateDate)); } else { e->setArgument(8); } e->setArgument(9,(v10_CurrentValue)); e->setArgument(10,(v11_OriginalValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIrregularTimeSeries
IfcTemplatedEntityList< IfcIrregularTimeSeriesValue >::ptr IfcIrregularTimeSeries::Values() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcIrregularTimeSeriesValue>(); }
void IfcIrregularTimeSeries::setValues(IfcTemplatedEntityList< IfcIrregularTimeSeriesValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }


const IfcParse::entity& IfcIrregularTimeSeries::declaration() const { return *IfcIrregularTimeSeries_type; }
Type::Enum IfcIrregularTimeSeries::Class() { return Type::IfcIrregularTimeSeries; }
IfcIrregularTimeSeries::IfcIrregularTimeSeries(IfcAbstractEntity* e) : IfcTimeSeries((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcIrregularTimeSeries)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIrregularTimeSeries::IfcIrregularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v5_TimeSeriesDataType, IfcDataOriginEnum::IfcDataOriginEnum v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, IfcUnit* v8_Unit, IfcTemplatedEntityList< IfcIrregularTimeSeriesValue >::ptr v9_Values) : IfcTimeSeries((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_StartTime)); e->setArgument(3,(v4_EndTime)); e->setArgument(4,v5_TimeSeriesDataType,IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType)); e->setArgument(5,v6_DataOrigin,IfcDataOriginEnum::ToString(v6_DataOrigin)); if (v7_UserDefinedDataOrigin) { e->setArgument(6,(*v7_UserDefinedDataOrigin)); } else { e->setArgument(6); } e->setArgument(7,(v8_Unit)); e->setArgument(8,(v9_Values)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcIrregularTimeSeriesValue
std::string IfcIrregularTimeSeriesValue::TimeStamp() const { return *data_->getArgument(0); }
void IfcIrregularTimeSeriesValue::setTimeStamp(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcIrregularTimeSeriesValue::ListValues() const { return *data_->getArgument(1); }
void IfcIrregularTimeSeriesValue::setListValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcIrregularTimeSeriesValue::declaration() const { return *IfcIrregularTimeSeriesValue_type; }
Type::Enum IfcIrregularTimeSeriesValue::Class() { return Type::IfcIrregularTimeSeriesValue; }
IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcIrregularTimeSeriesValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_TimeStamp, IfcEntityList::ptr v2_ListValues) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TimeStamp)); e->setArgument(1,(v2_ListValues)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcJunctionBox
bool IfcJunctionBox::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum IfcJunctionBox::PredefinedType() const { return IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); }
void IfcJunctionBox::setPredefinedType(IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcJunctionBoxTypeEnum::ToString(v)); }


const IfcParse::entity& IfcJunctionBox::declaration() const { return *IfcJunctionBox_type; }
Type::Enum IfcJunctionBox::Class() { return Type::IfcJunctionBox; }
IfcJunctionBox::IfcJunctionBox(IfcAbstractEntity* e) : IfcFlowFitting((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcJunctionBox)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcJunctionBox::IfcJunctionBox(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum > v9_PredefinedType) : IfcFlowFitting((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcJunctionBoxTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcJunctionBoxType
IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum IfcJunctionBoxType::PredefinedType() const { return IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(9)); }
void IfcJunctionBoxType::setPredefinedType(IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcJunctionBoxTypeEnum::ToString(v)); }


const IfcParse::entity& IfcJunctionBoxType::declaration() const { return *IfcJunctionBoxType_type; }
Type::Enum IfcJunctionBoxType::Class() { return Type::IfcJunctionBoxType; }
IfcJunctionBoxType::IfcJunctionBoxType(IfcAbstractEntity* e) : IfcFlowFittingType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcJunctionBoxType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum v10_PredefinedType) : IfcFlowFittingType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcJunctionBoxTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLShapeProfileDef
double IfcLShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcLShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcLShapeProfileDef::hasWidth() const { return !data_->getArgument(4)->isNull(); }
double IfcLShapeProfileDef::Width() const { return *data_->getArgument(4); }
void IfcLShapeProfileDef::setWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcLShapeProfileDef::Thickness() const { return *data_->getArgument(5); }
void IfcLShapeProfileDef::setThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcLShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(6)->isNull(); }
double IfcLShapeProfileDef::FilletRadius() const { return *data_->getArgument(6); }
void IfcLShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcLShapeProfileDef::hasEdgeRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcLShapeProfileDef::EdgeRadius() const { return *data_->getArgument(7); }
void IfcLShapeProfileDef::setEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcLShapeProfileDef::hasLegSlope() const { return !data_->getArgument(8)->isNull(); }
double IfcLShapeProfileDef::LegSlope() const { return *data_->getArgument(8); }
void IfcLShapeProfileDef::setLegSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcLShapeProfileDef::declaration() const { return *IfcLShapeProfileDef_type; }
Type::Enum IfcLShapeProfileDef::Class() { return Type::IfcLShapeProfileDef; }
IfcLShapeProfileDef::IfcLShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLShapeProfileDef::IfcLShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, boost::optional< double > v5_Width, double v6_Thickness, boost::optional< double > v7_FilletRadius, boost::optional< double > v8_EdgeRadius, boost::optional< double > v9_LegSlope) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); if (v5_Width) { e->setArgument(4,(*v5_Width)); } else { e->setArgument(4); } e->setArgument(5,(v6_Thickness)); if (v7_FilletRadius) { e->setArgument(6,(*v7_FilletRadius)); } else { e->setArgument(6); } if (v8_EdgeRadius) { e->setArgument(7,(*v8_EdgeRadius)); } else { e->setArgument(7); } if (v9_LegSlope) { e->setArgument(8,(*v9_LegSlope)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLaborResource
bool IfcLaborResource::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum IfcLaborResource::PredefinedType() const { return IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); }
void IfcLaborResource::setPredefinedType(IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcLaborResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcLaborResource::declaration() const { return *IfcLaborResource_type; }
Type::Enum IfcLaborResource::Class() { return Type::IfcLaborResource; }
IfcLaborResource::IfcLaborResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLaborResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLaborResource::IfcLaborResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum > v11_PredefinedType) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcLaborResourceTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLaborResourceType
IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum IfcLaborResourceType::PredefinedType() const { return IfcLaborResourceTypeEnum::FromString(*data_->getArgument(11)); }
void IfcLaborResourceType::setPredefinedType(IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcLaborResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcLaborResourceType::declaration() const { return *IfcLaborResourceType_type; }
Type::Enum IfcLaborResourceType::Class() { return Type::IfcLaborResourceType; }
IfcLaborResourceType::IfcLaborResourceType(IfcAbstractEntity* e) : IfcConstructionResourceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLaborResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLaborResourceType::IfcLaborResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity, IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum v12_PredefinedType) : IfcConstructionResourceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); e->setArgument(11,v12_PredefinedType,IfcLaborResourceTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLagTime
IfcTimeOrRatioSelect* IfcLagTime::LagValue() const { return (IfcTimeOrRatioSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcLagTime::setLagValue(IfcTimeOrRatioSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcTaskDurationEnum::IfcTaskDurationEnum IfcLagTime::DurationType() const { return IfcTaskDurationEnum::FromString(*data_->getArgument(4)); }
void IfcLagTime::setDurationType(IfcTaskDurationEnum::IfcTaskDurationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcTaskDurationEnum::ToString(v)); }


const IfcParse::entity& IfcLagTime::declaration() const { return *IfcLagTime_type; }
Type::Enum IfcLagTime::Class() { return Type::IfcLagTime; }
IfcLagTime::IfcLagTime(IfcAbstractEntity* e) : IfcSchedulingTime((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLagTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, IfcTimeOrRatioSelect* v4_LagValue, IfcTaskDurationEnum::IfcTaskDurationEnum v5_DurationType) : IfcSchedulingTime((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } e->setArgument(3,(v4_LagValue)); e->setArgument(4,v5_DurationType,IfcTaskDurationEnum::ToString(v5_DurationType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLamp
bool IfcLamp::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcLampTypeEnum::IfcLampTypeEnum IfcLamp::PredefinedType() const { return IfcLampTypeEnum::FromString(*data_->getArgument(8)); }
void IfcLamp::setPredefinedType(IfcLampTypeEnum::IfcLampTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcLampTypeEnum::ToString(v)); }


const IfcParse::entity& IfcLamp::declaration() const { return *IfcLamp_type; }
Type::Enum IfcLamp::Class() { return Type::IfcLamp; }
IfcLamp::IfcLamp(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLamp)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLamp::IfcLamp(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcLampTypeEnum::IfcLampTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcLampTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLampType
IfcLampTypeEnum::IfcLampTypeEnum IfcLampType::PredefinedType() const { return IfcLampTypeEnum::FromString(*data_->getArgument(9)); }
void IfcLampType::setPredefinedType(IfcLampTypeEnum::IfcLampTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcLampTypeEnum::ToString(v)); }


const IfcParse::entity& IfcLampType::declaration() const { return *IfcLampType_type; }
Type::Enum IfcLampType::Class() { return Type::IfcLampType; }
IfcLampType::IfcLampType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLampType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLampType::IfcLampType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcLampTypeEnum::IfcLampTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcLampTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLibraryInformation
std::string IfcLibraryInformation::Name() const { return *data_->getArgument(0); }
void IfcLibraryInformation::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcLibraryInformation::hasVersion() const { return !data_->getArgument(1)->isNull(); }
std::string IfcLibraryInformation::Version() const { return *data_->getArgument(1); }
void IfcLibraryInformation::setVersion(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcLibraryInformation::hasPublisher() const { return !data_->getArgument(2)->isNull(); }
IfcActorSelect* IfcLibraryInformation::Publisher() const { return (IfcActorSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcLibraryInformation::setPublisher(IfcActorSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcLibraryInformation::hasVersionDate() const { return !data_->getArgument(3)->isNull(); }
std::string IfcLibraryInformation::VersionDate() const { return *data_->getArgument(3); }
void IfcLibraryInformation::setVersionDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcLibraryInformation::hasLocation() const { return !data_->getArgument(4)->isNull(); }
std::string IfcLibraryInformation::Location() const { return *data_->getArgument(4); }
void IfcLibraryInformation::setLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcLibraryInformation::hasDescription() const { return !data_->getArgument(5)->isNull(); }
std::string IfcLibraryInformation::Description() const { return *data_->getArgument(5); }
void IfcLibraryInformation::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcRelAssociatesLibrary::list::ptr IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(Type::IfcRelAssociatesLibrary, 5)->as<IfcRelAssociatesLibrary>(); }
IfcLibraryReference::list::ptr IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(Type::IfcLibraryReference, 5)->as<IfcLibraryReference>(); }

const IfcParse::entity& IfcLibraryInformation::declaration() const { return *IfcLibraryInformation_type; }
Type::Enum IfcLibraryInformation::Class() { return Type::IfcLibraryInformation; }
IfcLibraryInformation::IfcLibraryInformation(IfcAbstractEntity* e) : IfcExternalInformation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLibraryInformation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost::optional< std::string > v2_Version, IfcActorSelect* v3_Publisher, boost::optional< std::string > v4_VersionDate, boost::optional< std::string > v5_Location, boost::optional< std::string > v6_Description) : IfcExternalInformation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Version) { e->setArgument(1,(*v2_Version)); } else { e->setArgument(1); } e->setArgument(2,(v3_Publisher)); if (v4_VersionDate) { e->setArgument(3,(*v4_VersionDate)); } else { e->setArgument(3); } if (v5_Location) { e->setArgument(4,(*v5_Location)); } else { e->setArgument(4); } if (v6_Description) { e->setArgument(5,(*v6_Description)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLibraryReference
bool IfcLibraryReference::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcLibraryReference::Description() const { return *data_->getArgument(3); }
void IfcLibraryReference::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcLibraryReference::hasLanguage() const { return !data_->getArgument(4)->isNull(); }
std::string IfcLibraryReference::Language() const { return *data_->getArgument(4); }
void IfcLibraryReference::setLanguage(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcLibraryReference::hasReferencedLibrary() const { return !data_->getArgument(5)->isNull(); }
IfcLibraryInformation* IfcLibraryReference::ReferencedLibrary() const { return (IfcLibraryInformation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcLibraryReference::setReferencedLibrary(IfcLibraryInformation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcRelAssociatesLibrary::list::ptr IfcLibraryReference::LibraryRefForObjects() const { return data_->getInverse(Type::IfcRelAssociatesLibrary, 5)->as<IfcRelAssociatesLibrary>(); }

const IfcParse::entity& IfcLibraryReference::declaration() const { return *IfcLibraryReference_type; }
Type::Enum IfcLibraryReference::Class() { return Type::IfcLibraryReference; }
IfcLibraryReference::IfcLibraryReference(IfcAbstractEntity* e) : IfcExternalReference((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLibraryReference)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLibraryReference::IfcLibraryReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_Language, IfcLibraryInformation* v6_ReferencedLibrary) : IfcExternalReference((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Location) { e->setArgument(0,(*v1_Location)); } else { e->setArgument(0); } if (v2_Identification) { e->setArgument(1,(*v2_Identification)); } else { e->setArgument(1); } if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_Language) { e->setArgument(4,(*v5_Language)); } else { e->setArgument(4); } e->setArgument(5,(v6_ReferencedLibrary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightDistributionData
double IfcLightDistributionData::MainPlaneAngle() const { return *data_->getArgument(0); }
void IfcLightDistributionData::setMainPlaneAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::vector< double > /*[1:?]*/ IfcLightDistributionData::SecondaryPlaneAngle() const { return *data_->getArgument(1); }
void IfcLightDistributionData::setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
std::vector< double > /*[1:?]*/ IfcLightDistributionData::LuminousIntensity() const { return *data_->getArgument(2); }
void IfcLightDistributionData::setLuminousIntensity(std::vector< double > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcLightDistributionData::declaration() const { return *IfcLightDistributionData_type; }
Type::Enum IfcLightDistributionData::Class() { return Type::IfcLightDistributionData; }
IfcLightDistributionData::IfcLightDistributionData(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcLightDistributionData)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MainPlaneAngle)); e->setArgument(1,(v2_SecondaryPlaneAngle)); e->setArgument(2,(v3_LuminousIntensity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightFixture
bool IfcLightFixture::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum IfcLightFixture::PredefinedType() const { return IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); }
void IfcLightFixture::setPredefinedType(IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcLightFixtureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcLightFixture::declaration() const { return *IfcLightFixture_type; }
Type::Enum IfcLightFixture::Class() { return Type::IfcLightFixture; }
IfcLightFixture::IfcLightFixture(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightFixture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightFixture::IfcLightFixture(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcLightFixtureTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightFixtureType
IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum IfcLightFixtureType::PredefinedType() const { return IfcLightFixtureTypeEnum::FromString(*data_->getArgument(9)); }
void IfcLightFixtureType::setPredefinedType(IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcLightFixtureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcLightFixtureType::declaration() const { return *IfcLightFixtureType_type; }
Type::Enum IfcLightFixtureType::Class() { return Type::IfcLightFixtureType; }
IfcLightFixtureType::IfcLightFixtureType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightFixtureType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightFixtureType::IfcLightFixtureType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcLightFixtureTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightIntensityDistribution
IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum IfcLightIntensityDistribution::LightDistributionCurve() const { return IfcLightDistributionCurveEnum::FromString(*data_->getArgument(0)); }
void IfcLightIntensityDistribution::setLightDistributionCurve(IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcLightDistributionCurveEnum::ToString(v)); }
IfcTemplatedEntityList< IfcLightDistributionData >::ptr IfcLightIntensityDistribution::DistributionData() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcLightDistributionData>(); }
void IfcLightIntensityDistribution::setDistributionData(IfcTemplatedEntityList< IfcLightDistributionData >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }


const IfcParse::entity& IfcLightIntensityDistribution::declaration() const { return *IfcLightIntensityDistribution_type; }
Type::Enum IfcLightIntensityDistribution::Class() { return Type::IfcLightIntensityDistribution; }
IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcLightIntensityDistribution)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum v1_LightDistributionCurve, IfcTemplatedEntityList< IfcLightDistributionData >::ptr v2_DistributionData) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_LightDistributionCurve,IfcLightDistributionCurveEnum::ToString(v1_LightDistributionCurve)); e->setArgument(1,(v2_DistributionData)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSource
bool IfcLightSource::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcLightSource::Name() const { return *data_->getArgument(0); }
void IfcLightSource::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcColourRgb* IfcLightSource::LightColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcLightSource::setLightColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcLightSource::hasAmbientIntensity() const { return !data_->getArgument(2)->isNull(); }
double IfcLightSource::AmbientIntensity() const { return *data_->getArgument(2); }
void IfcLightSource::setAmbientIntensity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcLightSource::hasIntensity() const { return !data_->getArgument(3)->isNull(); }
double IfcLightSource::Intensity() const { return *data_->getArgument(3); }
void IfcLightSource::setIntensity(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcLightSource::declaration() const { return *IfcLightSource_type; }
Type::Enum IfcLightSource::Class() { return Type::IfcLightSource; }
IfcLightSource::IfcLightSource(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSource::IfcLightSource(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourceAmbient


const IfcParse::entity& IfcLightSourceAmbient::declaration() const { return *IfcLightSourceAmbient_type; }
Type::Enum IfcLightSourceAmbient::Class() { return Type::IfcLightSourceAmbient; }
IfcLightSourceAmbient::IfcLightSourceAmbient(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceAmbient)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceAmbient::IfcLightSourceAmbient(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourceDirectional
IfcDirection* IfcLightSourceDirectional::Orientation() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcLightSourceDirectional::setOrientation(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcLightSourceDirectional::declaration() const { return *IfcLightSourceDirectional_type; }
Type::Enum IfcLightSourceDirectional::Class() { return Type::IfcLightSourceDirectional; }
IfcLightSourceDirectional::IfcLightSourceDirectional(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceDirectional)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceDirectional::IfcLightSourceDirectional(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcDirection* v5_Orientation) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourceGoniometric
IfcAxis2Placement3D* IfcLightSourceGoniometric::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcLightSourceGoniometric::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcLightSourceGoniometric::hasColourAppearance() const { return !data_->getArgument(5)->isNull(); }
IfcColourRgb* IfcLightSourceGoniometric::ColourAppearance() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcLightSourceGoniometric::setColourAppearance(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcLightSourceGoniometric::ColourTemperature() const { return *data_->getArgument(6); }
void IfcLightSourceGoniometric::setColourTemperature(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
double IfcLightSourceGoniometric::LuminousFlux() const { return *data_->getArgument(7); }
void IfcLightSourceGoniometric::setLuminousFlux(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum IfcLightSourceGoniometric::LightEmissionSource() const { return IfcLightEmissionSourceEnum::FromString(*data_->getArgument(8)); }
void IfcLightSourceGoniometric::setLightEmissionSource(IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcLightEmissionSourceEnum::ToString(v)); }
IfcLightDistributionDataSourceSelect* IfcLightSourceGoniometric::LightDistributionDataSource() const { return (IfcLightDistributionDataSourceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcLightSourceGoniometric::setLightDistributionDataSource(IfcLightDistributionDataSourceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcLightSourceGoniometric::declaration() const { return *IfcLightSourceGoniometric_type; }
Type::Enum IfcLightSourceGoniometric::Class() { return Type::IfcLightSourceGoniometric; }
IfcLightSourceGoniometric::IfcLightSourceGoniometric(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceGoniometric)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceGoniometric::IfcLightSourceGoniometric(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcAxis2Placement3D* v5_Position, IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum v9_LightEmissionSource, IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Position)); e->setArgument(5,(v6_ColourAppearance)); e->setArgument(6,(v7_ColourTemperature)); e->setArgument(7,(v8_LuminousFlux)); e->setArgument(8,v9_LightEmissionSource,IfcLightEmissionSourceEnum::ToString(v9_LightEmissionSource)); e->setArgument(9,(v10_LightDistributionDataSource)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourcePositional
IfcCartesianPoint* IfcLightSourcePositional::Position() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcLightSourcePositional::setPosition(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcLightSourcePositional::Radius() const { return *data_->getArgument(5); }
void IfcLightSourcePositional::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcLightSourcePositional::ConstantAttenuation() const { return *data_->getArgument(6); }
void IfcLightSourcePositional::setConstantAttenuation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
double IfcLightSourcePositional::DistanceAttenuation() const { return *data_->getArgument(7); }
void IfcLightSourcePositional::setDistanceAttenuation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
double IfcLightSourcePositional::QuadricAttenuation() const { return *data_->getArgument(8); }
void IfcLightSourcePositional::setQuadricAttenuation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcLightSourcePositional::declaration() const { return *IfcLightSourcePositional_type; }
Type::Enum IfcLightSourcePositional::Class() { return Type::IfcLightSourcePositional; }
IfcLightSourcePositional::IfcLightSourcePositional(IfcAbstractEntity* e) : IfcLightSource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourcePositional)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation) : IfcLightSource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Position)); e->setArgument(5,(v6_Radius)); e->setArgument(6,(v7_ConstantAttenuation)); e->setArgument(7,(v8_DistanceAttenuation)); e->setArgument(8,(v9_QuadricAttenuation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLightSourceSpot
IfcDirection* IfcLightSourceSpot::Orientation() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcLightSourceSpot::setOrientation(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcLightSourceSpot::hasConcentrationExponent() const { return !data_->getArgument(10)->isNull(); }
double IfcLightSourceSpot::ConcentrationExponent() const { return *data_->getArgument(10); }
void IfcLightSourceSpot::setConcentrationExponent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
double IfcLightSourceSpot::SpreadAngle() const { return *data_->getArgument(11); }
void IfcLightSourceSpot::setSpreadAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
double IfcLightSourceSpot::BeamWidthAngle() const { return *data_->getArgument(12); }
void IfcLightSourceSpot::setBeamWidthAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcLightSourceSpot::declaration() const { return *IfcLightSourceSpot_type; }
Type::Enum IfcLightSourceSpot::Class() { return Type::IfcLightSourceSpot; }
IfcLightSourceSpot::IfcLightSourceSpot(IfcAbstractEntity* e) : IfcLightSourcePositional((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLightSourceSpot)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLightSourceSpot::IfcLightSourceSpot(boost::optional< std::string > v1_Name, IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle) : IfcLightSourcePositional((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_LightColour)); if (v3_AmbientIntensity) { e->setArgument(2,(*v3_AmbientIntensity)); } else { e->setArgument(2); } if (v4_Intensity) { e->setArgument(3,(*v4_Intensity)); } else { e->setArgument(3); } e->setArgument(4,(v5_Position)); e->setArgument(5,(v6_Radius)); e->setArgument(6,(v7_ConstantAttenuation)); e->setArgument(7,(v8_DistanceAttenuation)); e->setArgument(8,(v9_QuadricAttenuation)); e->setArgument(9,(v10_Orientation)); if (v11_ConcentrationExponent) { e->setArgument(10,(*v11_ConcentrationExponent)); } else { e->setArgument(10); } e->setArgument(11,(v12_SpreadAngle)); e->setArgument(12,(v13_BeamWidthAngle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLine
IfcCartesianPoint* IfcLine::Pnt() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcLine::setPnt(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcVector* IfcLine::Dir() const { return (IfcVector*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcLine::setDir(IfcVector* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcLine::declaration() const { return *IfcLine_type; }
Type::Enum IfcLine::Class() { return Type::IfcLine; }
IfcLine::IfcLine(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLine)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLine::IfcLine(IfcCartesianPoint* v1_Pnt, IfcVector* v2_Dir) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Pnt)); e->setArgument(1,(v2_Dir)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLocalPlacement
bool IfcLocalPlacement::hasPlacementRelTo() const { return !data_->getArgument(0)->isNull(); }
IfcObjectPlacement* IfcLocalPlacement::PlacementRelTo() const { return (IfcObjectPlacement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcLocalPlacement::setPlacementRelTo(IfcObjectPlacement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcAxis2Placement* IfcLocalPlacement::RelativePlacement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcLocalPlacement::setRelativePlacement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcLocalPlacement::declaration() const { return *IfcLocalPlacement_type; }
Type::Enum IfcLocalPlacement::Class() { return Type::IfcLocalPlacement; }
IfcLocalPlacement::IfcLocalPlacement(IfcAbstractEntity* e) : IfcObjectPlacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLocalPlacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLocalPlacement::IfcLocalPlacement(IfcObjectPlacement* v1_PlacementRelTo, IfcAxis2Placement* v2_RelativePlacement) : IfcObjectPlacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_PlacementRelTo)); e->setArgument(1,(v2_RelativePlacement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcLoop


const IfcParse::entity& IfcLoop::declaration() const { return *IfcLoop_type; }
Type::Enum IfcLoop::Class() { return Type::IfcLoop; }
IfcLoop::IfcLoop(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcLoop)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcLoop::IfcLoop() : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcManifoldSolidBrep
IfcClosedShell* IfcManifoldSolidBrep::Outer() const { return (IfcClosedShell*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcManifoldSolidBrep::setOuter(IfcClosedShell* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcManifoldSolidBrep::declaration() const { return *IfcManifoldSolidBrep_type; }
Type::Enum IfcManifoldSolidBrep::Class() { return Type::IfcManifoldSolidBrep; }
IfcManifoldSolidBrep::IfcManifoldSolidBrep(IfcAbstractEntity* e) : IfcSolidModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcManifoldSolidBrep)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcManifoldSolidBrep::IfcManifoldSolidBrep(IfcClosedShell* v1_Outer) : IfcSolidModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Outer)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMapConversion
double IfcMapConversion::Eastings() const { return *data_->getArgument(2); }
void IfcMapConversion::setEastings(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcMapConversion::Northings() const { return *data_->getArgument(3); }
void IfcMapConversion::setNorthings(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcMapConversion::OrthogonalHeight() const { return *data_->getArgument(4); }
void IfcMapConversion::setOrthogonalHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcMapConversion::hasXAxisAbscissa() const { return !data_->getArgument(5)->isNull(); }
double IfcMapConversion::XAxisAbscissa() const { return *data_->getArgument(5); }
void IfcMapConversion::setXAxisAbscissa(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcMapConversion::hasXAxisOrdinate() const { return !data_->getArgument(6)->isNull(); }
double IfcMapConversion::XAxisOrdinate() const { return *data_->getArgument(6); }
void IfcMapConversion::setXAxisOrdinate(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcMapConversion::hasScale() const { return !data_->getArgument(7)->isNull(); }
double IfcMapConversion::Scale() const { return *data_->getArgument(7); }
void IfcMapConversion::setScale(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcMapConversion::declaration() const { return *IfcMapConversion_type; }
Type::Enum IfcMapConversion::Class() { return Type::IfcMapConversion; }
IfcMapConversion::IfcMapConversion(IfcAbstractEntity* e) : IfcCoordinateOperation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMapConversion)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMapConversion::IfcMapConversion(IfcCoordinateReferenceSystemSelect* v1_SourceCRS, IfcCoordinateReferenceSystem* v2_TargetCRS, double v3_Eastings, double v4_Northings, double v5_OrthogonalHeight, boost::optional< double > v6_XAxisAbscissa, boost::optional< double > v7_XAxisOrdinate, boost::optional< double > v8_Scale) : IfcCoordinateOperation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SourceCRS)); e->setArgument(1,(v2_TargetCRS)); e->setArgument(2,(v3_Eastings)); e->setArgument(3,(v4_Northings)); e->setArgument(4,(v5_OrthogonalHeight)); if (v6_XAxisAbscissa) { e->setArgument(5,(*v6_XAxisAbscissa)); } else { e->setArgument(5); } if (v7_XAxisOrdinate) { e->setArgument(6,(*v7_XAxisOrdinate)); } else { e->setArgument(6); } if (v8_Scale) { e->setArgument(7,(*v8_Scale)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMappedItem
IfcRepresentationMap* IfcMappedItem::MappingSource() const { return (IfcRepresentationMap*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMappedItem::setMappingSource(IfcRepresentationMap* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCartesianTransformationOperator* IfcMappedItem::MappingTarget() const { return (IfcCartesianTransformationOperator*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcMappedItem::setMappingTarget(IfcCartesianTransformationOperator* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcMappedItem::declaration() const { return *IfcMappedItem_type; }
Type::Enum IfcMappedItem::Class() { return Type::IfcMappedItem; }
IfcMappedItem::IfcMappedItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMappedItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMappedItem::IfcMappedItem(IfcRepresentationMap* v1_MappingSource, IfcCartesianTransformationOperator* v2_MappingTarget) : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MappingSource)); e->setArgument(1,(v2_MappingTarget)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterial
std::string IfcMaterial::Name() const { return *data_->getArgument(0); }
void IfcMaterial::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcMaterial::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterial::Description() const { return *data_->getArgument(1); }
void IfcMaterial::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterial::hasCategory() const { return !data_->getArgument(2)->isNull(); }
std::string IfcMaterial::Category() const { return *data_->getArgument(2); }
void IfcMaterial::setCategory(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }

IfcMaterialDefinitionRepresentation::list::ptr IfcMaterial::HasRepresentation() const { return data_->getInverse(Type::IfcMaterialDefinitionRepresentation, 3)->as<IfcMaterialDefinitionRepresentation>(); }
IfcMaterialRelationship::list::ptr IfcMaterial::IsRelatedWith() const { return data_->getInverse(Type::IfcMaterialRelationship, 3)->as<IfcMaterialRelationship>(); }
IfcMaterialRelationship::list::ptr IfcMaterial::RelatesTo() const { return data_->getInverse(Type::IfcMaterialRelationship, 2)->as<IfcMaterialRelationship>(); }

const IfcParse::entity& IfcMaterial::declaration() const { return *IfcMaterial_type; }
Type::Enum IfcMaterial::Class() { return Type::IfcMaterial; }
IfcMaterial::IfcMaterial(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterial)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterial::IfcMaterial(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_Category) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_Category) { e->setArgument(2,(*v3_Category)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialClassificationRelationship
IfcEntityList::ptr IfcMaterialClassificationRelationship::MaterialClassifications() const { return *data_->getArgument(0); }
void IfcMaterialClassificationRelationship::setMaterialClassifications(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcMaterial* IfcMaterialClassificationRelationship::ClassifiedMaterial() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcMaterialClassificationRelationship::setClassifiedMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcMaterialClassificationRelationship::declaration() const { return *IfcMaterialClassificationRelationship_type; }
Type::Enum IfcMaterialClassificationRelationship::Class() { return Type::IfcMaterialClassificationRelationship; }
IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialClassificationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcEntityList::ptr v1_MaterialClassifications, IfcMaterial* v2_ClassifiedMaterial) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MaterialClassifications)); e->setArgument(1,(v2_ClassifiedMaterial)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialConstituent
bool IfcMaterialConstituent::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcMaterialConstituent::Name() const { return *data_->getArgument(0); }
void IfcMaterialConstituent::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcMaterialConstituent::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterialConstituent::Description() const { return *data_->getArgument(1); }
void IfcMaterialConstituent::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcMaterial* IfcMaterialConstituent::Material() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcMaterialConstituent::setMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcMaterialConstituent::hasFraction() const { return !data_->getArgument(3)->isNull(); }
double IfcMaterialConstituent::Fraction() const { return *data_->getArgument(3); }
void IfcMaterialConstituent::setFraction(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcMaterialConstituent::hasCategory() const { return !data_->getArgument(4)->isNull(); }
std::string IfcMaterialConstituent::Category() const { return *data_->getArgument(4); }
void IfcMaterialConstituent::setCategory(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }

IfcMaterialConstituentSet::list::ptr IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(Type::IfcMaterialConstituentSet, 2)->as<IfcMaterialConstituentSet>(); }

const IfcParse::entity& IfcMaterialConstituent::declaration() const { return *IfcMaterialConstituent_type; }
Type::Enum IfcMaterialConstituent::Class() { return Type::IfcMaterialConstituent; }
IfcMaterialConstituent::IfcMaterialConstituent(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialConstituent)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcMaterial* v3_Material, boost::optional< double > v4_Fraction, boost::optional< std::string > v5_Category) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Material)); if (v4_Fraction) { e->setArgument(3,(*v4_Fraction)); } else { e->setArgument(3); } if (v5_Category) { e->setArgument(4,(*v5_Category)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialConstituentSet
bool IfcMaterialConstituentSet::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcMaterialConstituentSet::Name() const { return *data_->getArgument(0); }
void IfcMaterialConstituentSet::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcMaterialConstituentSet::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterialConstituentSet::Description() const { return *data_->getArgument(1); }
void IfcMaterialConstituentSet::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterialConstituentSet::hasMaterialConstituents() const { return !data_->getArgument(2)->isNull(); }
IfcTemplatedEntityList< IfcMaterialConstituent >::ptr IfcMaterialConstituentSet::MaterialConstituents() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcMaterialConstituent>(); }
void IfcMaterialConstituentSet::setMaterialConstituents(IfcTemplatedEntityList< IfcMaterialConstituent >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcMaterialConstituentSet::declaration() const { return *IfcMaterialConstituentSet_type; }
Type::Enum IfcMaterialConstituentSet::Class() { return Type::IfcMaterialConstituentSet; }
IfcMaterialConstituentSet::IfcMaterialConstituentSet(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialConstituentSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialConstituentSet::IfcMaterialConstituentSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcTemplatedEntityList< IfcMaterialConstituent >::ptr > v3_MaterialConstituents) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_MaterialConstituents) { e->setArgument(2,(*v3_MaterialConstituents)->generalize()); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialDefinition

IfcRelAssociatesMaterial::list::ptr IfcMaterialDefinition::AssociatedTo() const { return data_->getInverse(Type::IfcRelAssociatesMaterial, 5)->as<IfcRelAssociatesMaterial>(); }
IfcExternalReferenceRelationship::list::ptr IfcMaterialDefinition::HasExternalReferences() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }
IfcMaterialProperties::list::ptr IfcMaterialDefinition::HasProperties() const { return data_->getInverse(Type::IfcMaterialProperties, 3)->as<IfcMaterialProperties>(); }

const IfcParse::entity& IfcMaterialDefinition::declaration() const { return *IfcMaterialDefinition_type; }
Type::Enum IfcMaterialDefinition::Class() { return Type::IfcMaterialDefinition; }
IfcMaterialDefinition::IfcMaterialDefinition(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialDefinition::IfcMaterialDefinition() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialDefinitionRepresentation
IfcMaterial* IfcMaterialDefinitionRepresentation::RepresentedMaterial() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcMaterialDefinitionRepresentation::setRepresentedMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcMaterialDefinitionRepresentation::declaration() const { return *IfcMaterialDefinitionRepresentation_type; }
Type::Enum IfcMaterialDefinitionRepresentation::Class() { return Type::IfcMaterialDefinitionRepresentation; }
IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(IfcAbstractEntity* e) : IfcProductRepresentation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialDefinitionRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcRepresentation >::ptr v3_Representations, IfcMaterial* v4_RepresentedMaterial) : IfcProductRepresentation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Representations)->generalize()); e->setArgument(3,(v4_RepresentedMaterial)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialLayer
bool IfcMaterialLayer::hasMaterial() const { return !data_->getArgument(0)->isNull(); }
IfcMaterial* IfcMaterialLayer::Material() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMaterialLayer::setMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcMaterialLayer::LayerThickness() const { return *data_->getArgument(1); }
void IfcMaterialLayer::setLayerThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterialLayer::hasIsVentilated() const { return !data_->getArgument(2)->isNull(); }
boost::logic::tribool IfcMaterialLayer::IsVentilated() const { return *data_->getArgument(2); }
void IfcMaterialLayer::setIsVentilated(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcMaterialLayer::hasName() const { return !data_->getArgument(3)->isNull(); }
std::string IfcMaterialLayer::Name() const { return *data_->getArgument(3); }
void IfcMaterialLayer::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcMaterialLayer::hasDescription() const { return !data_->getArgument(4)->isNull(); }
std::string IfcMaterialLayer::Description() const { return *data_->getArgument(4); }
void IfcMaterialLayer::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcMaterialLayer::hasCategory() const { return !data_->getArgument(5)->isNull(); }
std::string IfcMaterialLayer::Category() const { return *data_->getArgument(5); }
void IfcMaterialLayer::setCategory(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcMaterialLayer::hasPriority() const { return !data_->getArgument(6)->isNull(); }
int IfcMaterialLayer::Priority() const { return *data_->getArgument(6); }
void IfcMaterialLayer::setPriority(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcMaterialLayerSet::list::ptr IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(Type::IfcMaterialLayerSet, 0)->as<IfcMaterialLayerSet>(); }

const IfcParse::entity& IfcMaterialLayer::declaration() const { return *IfcMaterialLayer_type; }
Type::Enum IfcMaterialLayer::Class() { return Type::IfcMaterialLayer; }
IfcMaterialLayer::IfcMaterialLayer(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialLayer)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialLayer::IfcMaterialLayer(IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); e->setArgument(1,(v2_LayerThickness)); if (v3_IsVentilated) { e->setArgument(2,(*v3_IsVentilated)); } else { e->setArgument(2); } if (v4_Name) { e->setArgument(3,(*v4_Name)); } else { e->setArgument(3); } if (v5_Description) { e->setArgument(4,(*v5_Description)); } else { e->setArgument(4); } if (v6_Category) { e->setArgument(5,(*v6_Category)); } else { e->setArgument(5); } if (v7_Priority) { e->setArgument(6,(*v7_Priority)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialLayerSet
IfcTemplatedEntityList< IfcMaterialLayer >::ptr IfcMaterialLayerSet::MaterialLayers() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcMaterialLayer>(); }
void IfcMaterialLayerSet::setMaterialLayers(IfcTemplatedEntityList< IfcMaterialLayer >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
bool IfcMaterialLayerSet::hasLayerSetName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterialLayerSet::LayerSetName() const { return *data_->getArgument(1); }
void IfcMaterialLayerSet::setLayerSetName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterialLayerSet::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcMaterialLayerSet::Description() const { return *data_->getArgument(2); }
void IfcMaterialLayerSet::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcMaterialLayerSet::declaration() const { return *IfcMaterialLayerSet_type; }
Type::Enum IfcMaterialLayerSet::Class() { return Type::IfcMaterialLayerSet; }
IfcMaterialLayerSet::IfcMaterialLayerSet(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialLayerSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialLayerSet::IfcMaterialLayerSet(IfcTemplatedEntityList< IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName, boost::optional< std::string > v3_Description) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MaterialLayers)->generalize()); if (v2_LayerSetName) { e->setArgument(1,(*v2_LayerSetName)); } else { e->setArgument(1); } if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialLayerSetUsage
IfcMaterialLayerSet* IfcMaterialLayerSetUsage::ForLayerSet() const { return (IfcMaterialLayerSet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMaterialLayerSetUsage::setForLayerSet(IfcMaterialLayerSet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum IfcMaterialLayerSetUsage::LayerSetDirection() const { return IfcLayerSetDirectionEnum::FromString(*data_->getArgument(1)); }
void IfcMaterialLayerSetUsage::setLayerSetDirection(IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcLayerSetDirectionEnum::ToString(v)); }
IfcDirectionSenseEnum::IfcDirectionSenseEnum IfcMaterialLayerSetUsage::DirectionSense() const { return IfcDirectionSenseEnum::FromString(*data_->getArgument(2)); }
void IfcMaterialLayerSetUsage::setDirectionSense(IfcDirectionSenseEnum::IfcDirectionSenseEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcDirectionSenseEnum::ToString(v)); }
double IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const { return *data_->getArgument(3); }
void IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcMaterialLayerSetUsage::hasReferenceExtent() const { return !data_->getArgument(4)->isNull(); }
double IfcMaterialLayerSetUsage::ReferenceExtent() const { return *data_->getArgument(4); }
void IfcMaterialLayerSetUsage::setReferenceExtent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcMaterialLayerSetUsage::declaration() const { return *IfcMaterialLayerSetUsage_type; }
Type::Enum IfcMaterialLayerSetUsage::Class() { return Type::IfcMaterialLayerSetUsage; }
IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcAbstractEntity* e) : IfcMaterialUsageDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialLayerSetUsage)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcMaterialLayerSet* v1_ForLayerSet, IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum v2_LayerSetDirection, IfcDirectionSenseEnum::IfcDirectionSenseEnum v3_DirectionSense, double v4_OffsetFromReferenceLine, boost::optional< double > v5_ReferenceExtent) : IfcMaterialUsageDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ForLayerSet)); e->setArgument(1,v2_LayerSetDirection,IfcLayerSetDirectionEnum::ToString(v2_LayerSetDirection)); e->setArgument(2,v3_DirectionSense,IfcDirectionSenseEnum::ToString(v3_DirectionSense)); e->setArgument(3,(v4_OffsetFromReferenceLine)); if (v5_ReferenceExtent) { e->setArgument(4,(*v5_ReferenceExtent)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialLayerWithOffsets
IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum IfcMaterialLayerWithOffsets::OffsetDirection() const { return IfcLayerSetDirectionEnum::FromString(*data_->getArgument(7)); }
void IfcMaterialLayerWithOffsets::setOffsetDirection(IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcLayerSetDirectionEnum::ToString(v)); }
std::vector< double > /*[1:2]*/ IfcMaterialLayerWithOffsets::OffsetValues() const { return *data_->getArgument(8); }
void IfcMaterialLayerWithOffsets::setOffsetValues(std::vector< double > /*[1:2]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcMaterialLayerWithOffsets::declaration() const { return *IfcMaterialLayerWithOffsets_type; }
Type::Enum IfcMaterialLayerWithOffsets::Class() { return Type::IfcMaterialLayerWithOffsets; }
IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(IfcAbstractEntity* e) : IfcMaterialLayer((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialLayerWithOffsets)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(IfcMaterial* v1_Material, double v2_LayerThickness, boost::optional< boost::logic::tribool > v3_IsVentilated, boost::optional< std::string > v4_Name, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Category, boost::optional< int > v7_Priority, IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues) : IfcMaterialLayer((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Material)); e->setArgument(1,(v2_LayerThickness)); if (v3_IsVentilated) { e->setArgument(2,(*v3_IsVentilated)); } else { e->setArgument(2); } if (v4_Name) { e->setArgument(3,(*v4_Name)); } else { e->setArgument(3); } if (v5_Description) { e->setArgument(4,(*v5_Description)); } else { e->setArgument(4); } if (v6_Category) { e->setArgument(5,(*v6_Category)); } else { e->setArgument(5); } if (v7_Priority) { e->setArgument(6,(*v7_Priority)); } else { e->setArgument(6); } e->setArgument(7,v8_OffsetDirection,IfcLayerSetDirectionEnum::ToString(v8_OffsetDirection)); e->setArgument(8,(v9_OffsetValues)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialList
IfcTemplatedEntityList< IfcMaterial >::ptr IfcMaterialList::Materials() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcMaterial>(); }
void IfcMaterialList::setMaterials(IfcTemplatedEntityList< IfcMaterial >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcMaterialList::declaration() const { return *IfcMaterialList_type; }
Type::Enum IfcMaterialList::Class() { return Type::IfcMaterialList; }
IfcMaterialList::IfcMaterialList(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialList)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialList::IfcMaterialList(IfcTemplatedEntityList< IfcMaterial >::ptr v1_Materials) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Materials)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialProfile
bool IfcMaterialProfile::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcMaterialProfile::Name() const { return *data_->getArgument(0); }
void IfcMaterialProfile::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcMaterialProfile::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterialProfile::Description() const { return *data_->getArgument(1); }
void IfcMaterialProfile::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterialProfile::hasMaterial() const { return !data_->getArgument(2)->isNull(); }
IfcMaterial* IfcMaterialProfile::Material() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcMaterialProfile::setMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcProfileDef* IfcMaterialProfile::Profile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcMaterialProfile::setProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcMaterialProfile::hasPriority() const { return !data_->getArgument(4)->isNull(); }
int IfcMaterialProfile::Priority() const { return *data_->getArgument(4); }
void IfcMaterialProfile::setPriority(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcMaterialProfile::hasCategory() const { return !data_->getArgument(5)->isNull(); }
std::string IfcMaterialProfile::Category() const { return *data_->getArgument(5); }
void IfcMaterialProfile::setCategory(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }

IfcMaterialProfileSet::list::ptr IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(Type::IfcMaterialProfileSet, 2)->as<IfcMaterialProfileSet>(); }

const IfcParse::entity& IfcMaterialProfile::declaration() const { return *IfcMaterialProfile_type; }
Type::Enum IfcMaterialProfile::Class() { return Type::IfcMaterialProfile; }
IfcMaterialProfile::IfcMaterialProfile(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialProfile)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcMaterial* v3_Material, IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Material)); e->setArgument(3,(v4_Profile)); if (v5_Priority) { e->setArgument(4,(*v5_Priority)); } else { e->setArgument(4); } if (v6_Category) { e->setArgument(5,(*v6_Category)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialProfileSet
bool IfcMaterialProfileSet::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcMaterialProfileSet::Name() const { return *data_->getArgument(0); }
void IfcMaterialProfileSet::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcMaterialProfileSet::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcMaterialProfileSet::Description() const { return *data_->getArgument(1); }
void IfcMaterialProfileSet::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityList< IfcMaterialProfile >::ptr IfcMaterialProfileSet::MaterialProfiles() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcMaterialProfile>(); }
void IfcMaterialProfileSet::setMaterialProfiles(IfcTemplatedEntityList< IfcMaterialProfile >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }
bool IfcMaterialProfileSet::hasCompositeProfile() const { return !data_->getArgument(3)->isNull(); }
IfcCompositeProfileDef* IfcMaterialProfileSet::CompositeProfile() const { return (IfcCompositeProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcMaterialProfileSet::setCompositeProfile(IfcCompositeProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcMaterialProfileSet::declaration() const { return *IfcMaterialProfileSet_type; }
Type::Enum IfcMaterialProfileSet::Class() { return Type::IfcMaterialProfileSet; }
IfcMaterialProfileSet::IfcMaterialProfileSet(IfcAbstractEntity* e) : IfcMaterialDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialProfileSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcMaterialProfile >::ptr v3_MaterialProfiles, IfcCompositeProfileDef* v4_CompositeProfile) : IfcMaterialDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_MaterialProfiles)->generalize()); e->setArgument(3,(v4_CompositeProfile)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialProfileSetUsage
IfcMaterialProfileSet* IfcMaterialProfileSetUsage::ForProfileSet() const { return (IfcMaterialProfileSet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMaterialProfileSetUsage::setForProfileSet(IfcMaterialProfileSet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcMaterialProfileSetUsage::hasCardinalPoint() const { return !data_->getArgument(1)->isNull(); }
int IfcMaterialProfileSetUsage::CardinalPoint() const { return *data_->getArgument(1); }
void IfcMaterialProfileSetUsage::setCardinalPoint(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcMaterialProfileSetUsage::hasReferenceExtent() const { return !data_->getArgument(2)->isNull(); }
double IfcMaterialProfileSetUsage::ReferenceExtent() const { return *data_->getArgument(2); }
void IfcMaterialProfileSetUsage::setReferenceExtent(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcMaterialProfileSetUsage::declaration() const { return *IfcMaterialProfileSetUsage_type; }
Type::Enum IfcMaterialProfileSetUsage::Class() { return Type::IfcMaterialProfileSetUsage; }
IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(IfcAbstractEntity* e) : IfcMaterialUsageDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialProfileSetUsage)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent) : IfcMaterialUsageDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ForProfileSet)); if (v2_CardinalPoint) { e->setArgument(1,(*v2_CardinalPoint)); } else { e->setArgument(1); } if (v3_ReferenceExtent) { e->setArgument(2,(*v3_ReferenceExtent)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialProfileSetUsageTapering
IfcMaterialProfileSet* IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const { return (IfcMaterialProfileSet*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcMaterialProfileSetUsageTapering::setForProfileEndSet(IfcMaterialProfileSet* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcMaterialProfileSetUsageTapering::hasCardinalEndPoint() const { return !data_->getArgument(4)->isNull(); }
int IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { return *data_->getArgument(4); }
void IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcMaterialProfileSetUsageTapering::declaration() const { return *IfcMaterialProfileSetUsageTapering_type; }
Type::Enum IfcMaterialProfileSetUsageTapering::Class() { return Type::IfcMaterialProfileSetUsageTapering; }
IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(IfcAbstractEntity* e) : IfcMaterialProfileSetUsage((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialProfileSetUsageTapering)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent, IfcMaterialProfileSet* v4_ForProfileEndSet, boost::optional< int > v5_CardinalEndPoint) : IfcMaterialProfileSetUsage((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ForProfileSet)); if (v2_CardinalPoint) { e->setArgument(1,(*v2_CardinalPoint)); } else { e->setArgument(1); } if (v3_ReferenceExtent) { e->setArgument(2,(*v3_ReferenceExtent)); } else { e->setArgument(2); } e->setArgument(3,(v4_ForProfileEndSet)); if (v5_CardinalEndPoint) { e->setArgument(4,(*v5_CardinalEndPoint)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialProfileWithOffsets
std::vector< double > /*[1:2]*/ IfcMaterialProfileWithOffsets::OffsetValues() const { return *data_->getArgument(6); }
void IfcMaterialProfileWithOffsets::setOffsetValues(std::vector< double > /*[1:2]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcMaterialProfileWithOffsets::declaration() const { return *IfcMaterialProfileWithOffsets_type; }
Type::Enum IfcMaterialProfileWithOffsets::Class() { return Type::IfcMaterialProfileWithOffsets; }
IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(IfcAbstractEntity* e) : IfcMaterialProfile((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialProfileWithOffsets)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcMaterial* v3_Material, IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues) : IfcMaterialProfile((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Material)); e->setArgument(3,(v4_Profile)); if (v5_Priority) { e->setArgument(4,(*v5_Priority)); } else { e->setArgument(4); } if (v6_Category) { e->setArgument(5,(*v6_Category)); } else { e->setArgument(5); } e->setArgument(6,(v7_OffsetValues)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialProperties
IfcMaterialDefinition* IfcMaterialProperties::Material() const { return (IfcMaterialDefinition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcMaterialProperties::setMaterial(IfcMaterialDefinition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcMaterialProperties::declaration() const { return *IfcMaterialProperties_type; }
Type::Enum IfcMaterialProperties::Class() { return Type::IfcMaterialProperties; }
IfcMaterialProperties::IfcMaterialProperties(IfcAbstractEntity* e) : IfcExtendedProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialProperties::IfcMaterialProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcProperty >::ptr v3_Properties, IfcMaterialDefinition* v4_Material) : IfcExtendedProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Properties)->generalize()); e->setArgument(3,(v4_Material)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialRelationship
IfcMaterial* IfcMaterialRelationship::RelatingMaterial() const { return (IfcMaterial*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcMaterialRelationship::setRelatingMaterial(IfcMaterial* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcMaterial >::ptr IfcMaterialRelationship::RelatedMaterials() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcMaterial>(); }
void IfcMaterialRelationship::setRelatedMaterials(IfcTemplatedEntityList< IfcMaterial >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }
bool IfcMaterialRelationship::hasExpression() const { return !data_->getArgument(4)->isNull(); }
std::string IfcMaterialRelationship::Expression() const { return *data_->getArgument(4); }
void IfcMaterialRelationship::setExpression(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcMaterialRelationship::declaration() const { return *IfcMaterialRelationship_type; }
Type::Enum IfcMaterialRelationship::Class() { return Type::IfcMaterialRelationship; }
IfcMaterialRelationship::IfcMaterialRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMaterialRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialRelationship::IfcMaterialRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcMaterial* v3_RelatingMaterial, IfcTemplatedEntityList< IfcMaterial >::ptr v4_RelatedMaterials, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingMaterial)); e->setArgument(3,(v4_RelatedMaterials)->generalize()); if (v5_Expression) { e->setArgument(4,(*v5_Expression)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMaterialUsageDefinition

IfcRelAssociatesMaterial::list::ptr IfcMaterialUsageDefinition::AssociatedTo() const { return data_->getInverse(Type::IfcRelAssociatesMaterial, 5)->as<IfcRelAssociatesMaterial>(); }

const IfcParse::entity& IfcMaterialUsageDefinition::declaration() const { return *IfcMaterialUsageDefinition_type; }
Type::Enum IfcMaterialUsageDefinition::Class() { return Type::IfcMaterialUsageDefinition; }
IfcMaterialUsageDefinition::IfcMaterialUsageDefinition(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMaterialUsageDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMaterialUsageDefinition::IfcMaterialUsageDefinition() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMeasureWithUnit
IfcValue* IfcMeasureWithUnit::ValueComponent() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcMeasureWithUnit::setValueComponent(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcUnit* IfcMeasureWithUnit::UnitComponent() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcMeasureWithUnit::setUnitComponent(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcMeasureWithUnit::declaration() const { return *IfcMeasureWithUnit_type; }
Type::Enum IfcMeasureWithUnit::Class() { return Type::IfcMeasureWithUnit; }
IfcMeasureWithUnit::IfcMeasureWithUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMeasureWithUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMeasureWithUnit::IfcMeasureWithUnit(IfcValue* v1_ValueComponent, IfcUnit* v2_UnitComponent) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ValueComponent)); e->setArgument(1,(v2_UnitComponent)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMechanicalFastener
bool IfcMechanicalFastener::hasNominalDiameter() const { return !data_->getArgument(8)->isNull(); }
double IfcMechanicalFastener::NominalDiameter() const { return *data_->getArgument(8); }
void IfcMechanicalFastener::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcMechanicalFastener::hasNominalLength() const { return !data_->getArgument(9)->isNull(); }
double IfcMechanicalFastener::NominalLength() const { return *data_->getArgument(9); }
void IfcMechanicalFastener::setNominalLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcMechanicalFastener::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum IfcMechanicalFastener::PredefinedType() const { return IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); }
void IfcMechanicalFastener::setPredefinedType(IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcMechanicalFastenerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMechanicalFastener::declaration() const { return *IfcMechanicalFastener_type; }
Type::Enum IfcMechanicalFastener::Class() { return Type::IfcMechanicalFastener; }
IfcMechanicalFastener::IfcMechanicalFastener(IfcAbstractEntity* e) : IfcElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMechanicalFastener)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength, boost::optional< IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum > v11_PredefinedType) : IfcElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_NominalDiameter) { e->setArgument(8,(*v9_NominalDiameter)); } else { e->setArgument(8); } if (v10_NominalLength) { e->setArgument(9,(*v10_NominalLength)); } else { e->setArgument(9); } if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcMechanicalFastenerTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMechanicalFastenerType
IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum IfcMechanicalFastenerType::PredefinedType() const { return IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcMechanicalFastenerType::setPredefinedType(IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcMechanicalFastenerTypeEnum::ToString(v)); }
bool IfcMechanicalFastenerType::hasNominalDiameter() const { return !data_->getArgument(10)->isNull(); }
double IfcMechanicalFastenerType::NominalDiameter() const { return *data_->getArgument(10); }
void IfcMechanicalFastenerType::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcMechanicalFastenerType::hasNominalLength() const { return !data_->getArgument(11)->isNull(); }
double IfcMechanicalFastenerType::NominalLength() const { return *data_->getArgument(11); }
void IfcMechanicalFastenerType::setNominalLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcMechanicalFastenerType::declaration() const { return *IfcMechanicalFastenerType_type; }
Type::Enum IfcMechanicalFastenerType::Class() { return Type::IfcMechanicalFastenerType; }
IfcMechanicalFastenerType::IfcMechanicalFastenerType(IfcAbstractEntity* e) : IfcElementComponentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMechanicalFastenerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_NominalLength) : IfcElementComponentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcMechanicalFastenerTypeEnum::ToString(v10_PredefinedType)); if (v11_NominalDiameter) { e->setArgument(10,(*v11_NominalDiameter)); } else { e->setArgument(10); } if (v12_NominalLength) { e->setArgument(11,(*v12_NominalLength)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMedicalDevice
bool IfcMedicalDevice::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum IfcMedicalDevice::PredefinedType() const { return IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcMedicalDevice::setPredefinedType(IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcMedicalDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMedicalDevice::declaration() const { return *IfcMedicalDevice_type; }
Type::Enum IfcMedicalDevice::Class() { return Type::IfcMedicalDevice; }
IfcMedicalDevice::IfcMedicalDevice(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMedicalDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMedicalDevice::IfcMedicalDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcMedicalDeviceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMedicalDeviceType
IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum IfcMedicalDeviceType::PredefinedType() const { return IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcMedicalDeviceType::setPredefinedType(IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcMedicalDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMedicalDeviceType::declaration() const { return *IfcMedicalDeviceType_type; }
Type::Enum IfcMedicalDeviceType::Class() { return Type::IfcMedicalDeviceType; }
IfcMedicalDeviceType::IfcMedicalDeviceType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMedicalDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcMedicalDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMember
bool IfcMember::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcMemberTypeEnum::IfcMemberTypeEnum IfcMember::PredefinedType() const { return IfcMemberTypeEnum::FromString(*data_->getArgument(8)); }
void IfcMember::setPredefinedType(IfcMemberTypeEnum::IfcMemberTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcMemberTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMember::declaration() const { return *IfcMember_type; }
Type::Enum IfcMember::Class() { return Type::IfcMember; }
IfcMember::IfcMember(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMember::IfcMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcMemberTypeEnum::IfcMemberTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcMemberTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMemberStandardCase


const IfcParse::entity& IfcMemberStandardCase::declaration() const { return *IfcMemberStandardCase_type; }
Type::Enum IfcMemberStandardCase::Class() { return Type::IfcMemberStandardCase; }
IfcMemberStandardCase::IfcMemberStandardCase(IfcAbstractEntity* e) : IfcMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMemberStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMemberStandardCase::IfcMemberStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcMemberTypeEnum::IfcMemberTypeEnum > v9_PredefinedType) : IfcMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcMemberTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMemberType
IfcMemberTypeEnum::IfcMemberTypeEnum IfcMemberType::PredefinedType() const { return IfcMemberTypeEnum::FromString(*data_->getArgument(9)); }
void IfcMemberType::setPredefinedType(IfcMemberTypeEnum::IfcMemberTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcMemberTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMemberType::declaration() const { return *IfcMemberType_type; }
Type::Enum IfcMemberType::Class() { return Type::IfcMemberType; }
IfcMemberType::IfcMemberType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMemberType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMemberType::IfcMemberType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcMemberTypeEnum::IfcMemberTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcMemberTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMetric
IfcBenchmarkEnum::IfcBenchmarkEnum IfcMetric::Benchmark() const { return IfcBenchmarkEnum::FromString(*data_->getArgument(7)); }
void IfcMetric::setBenchmark(IfcBenchmarkEnum::IfcBenchmarkEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcBenchmarkEnum::ToString(v)); }
bool IfcMetric::hasValueSource() const { return !data_->getArgument(8)->isNull(); }
std::string IfcMetric::ValueSource() const { return *data_->getArgument(8); }
void IfcMetric::setValueSource(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcMetric::hasDataValue() const { return !data_->getArgument(9)->isNull(); }
IfcMetricValueSelect* IfcMetric::DataValue() const { return (IfcMetricValueSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcMetric::setDataValue(IfcMetricValueSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcMetric::hasReferencePath() const { return !data_->getArgument(10)->isNull(); }
IfcReference* IfcMetric::ReferencePath() const { return (IfcReference*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcMetric::setReferencePath(IfcReference* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcMetric::declaration() const { return *IfcMetric_type; }
Type::Enum IfcMetric::Class() { return Type::IfcMetric; }
IfcMetric::IfcMetric(IfcAbstractEntity* e) : IfcConstraint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMetric)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMetric::IfcMetric(std::string v1_Name, boost::optional< std::string > v2_Description, IfcConstraintEnum::IfcConstraintEnum v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, IfcBenchmarkEnum::IfcBenchmarkEnum v8_Benchmark, boost::optional< std::string > v9_ValueSource, IfcMetricValueSelect* v10_DataValue, IfcReference* v11_ReferencePath) : IfcConstraint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,v3_ConstraintGrade,IfcConstraintEnum::ToString(v3_ConstraintGrade)); if (v4_ConstraintSource) { e->setArgument(3,(*v4_ConstraintSource)); } else { e->setArgument(3); } e->setArgument(4,(v5_CreatingActor)); if (v6_CreationTime) { e->setArgument(5,(*v6_CreationTime)); } else { e->setArgument(5); } if (v7_UserDefinedGrade) { e->setArgument(6,(*v7_UserDefinedGrade)); } else { e->setArgument(6); } e->setArgument(7,v8_Benchmark,IfcBenchmarkEnum::ToString(v8_Benchmark)); if (v9_ValueSource) { e->setArgument(8,(*v9_ValueSource)); } else { e->setArgument(8); } e->setArgument(9,(v10_DataValue)); e->setArgument(10,(v11_ReferencePath)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMirroredProfileDef


const IfcParse::entity& IfcMirroredProfileDef::declaration() const { return *IfcMirroredProfileDef_type; }
Type::Enum IfcMirroredProfileDef::Class() { return Type::IfcMirroredProfileDef; }
IfcMirroredProfileDef::IfcMirroredProfileDef(IfcAbstractEntity* e) : IfcDerivedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMirroredProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMirroredProfileDef::IfcMirroredProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcProfileDef* v3_ParentProfile, boost::optional< std::string > v5_Label) : IfcDerivedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_ParentProfile)); e->setArgumentDerived(3); if (v5_Label) { e->setArgument(4,(*v5_Label)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMonetaryUnit
std::string IfcMonetaryUnit::Currency() const { return *data_->getArgument(0); }
void IfcMonetaryUnit::setCurrency(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcMonetaryUnit::declaration() const { return *IfcMonetaryUnit_type; }
Type::Enum IfcMonetaryUnit::Class() { return Type::IfcMonetaryUnit; }
IfcMonetaryUnit::IfcMonetaryUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcMonetaryUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Currency)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMotorConnection
bool IfcMotorConnection::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum IfcMotorConnection::PredefinedType() const { return IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); }
void IfcMotorConnection::setPredefinedType(IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcMotorConnectionTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMotorConnection::declaration() const { return *IfcMotorConnection_type; }
Type::Enum IfcMotorConnection::Class() { return Type::IfcMotorConnection; }
IfcMotorConnection::IfcMotorConnection(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMotorConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMotorConnection::IfcMotorConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcMotorConnectionTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcMotorConnectionType
IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum IfcMotorConnectionType::PredefinedType() const { return IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void IfcMotorConnectionType::setPredefinedType(IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcMotorConnectionTypeEnum::ToString(v)); }


const IfcParse::entity& IfcMotorConnectionType::declaration() const { return *IfcMotorConnectionType_type; }
Type::Enum IfcMotorConnectionType::Class() { return Type::IfcMotorConnectionType; }
IfcMotorConnectionType::IfcMotorConnectionType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcMotorConnectionType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcMotorConnectionType::IfcMotorConnectionType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcMotorConnectionTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcNamedUnit
IfcDimensionalExponents* IfcNamedUnit::Dimensions() const { return (IfcDimensionalExponents*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcNamedUnit::setDimensions(IfcDimensionalExponents* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcUnitEnum::IfcUnitEnum IfcNamedUnit::UnitType() const { return IfcUnitEnum::FromString(*data_->getArgument(1)); }
void IfcNamedUnit::setUnitType(IfcUnitEnum::IfcUnitEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcUnitEnum::ToString(v)); }


const IfcParse::entity& IfcNamedUnit::declaration() const { return *IfcNamedUnit_type; }
Type::Enum IfcNamedUnit::Class() { return Type::IfcNamedUnit; }
IfcNamedUnit::IfcNamedUnit(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcNamedUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcNamedUnit::IfcNamedUnit(IfcDimensionalExponents* v1_Dimensions, IfcUnitEnum::IfcUnitEnum v2_UnitType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Dimensions)); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcObject
bool IfcObject::hasObjectType() const { return !data_->getArgument(4)->isNull(); }
std::string IfcObject::ObjectType() const { return *data_->getArgument(4); }
void IfcObject::setObjectType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }

IfcRelDefinesByObject::list::ptr IfcObject::IsDeclaredBy() const { return data_->getInverse(Type::IfcRelDefinesByObject, 4)->as<IfcRelDefinesByObject>(); }
IfcRelDefinesByObject::list::ptr IfcObject::Declares() const { return data_->getInverse(Type::IfcRelDefinesByObject, 5)->as<IfcRelDefinesByObject>(); }
IfcRelDefinesByType::list::ptr IfcObject::IsTypedBy() const { return data_->getInverse(Type::IfcRelDefinesByType, 4)->as<IfcRelDefinesByType>(); }
IfcRelDefinesByProperties::list::ptr IfcObject::IsDefinedBy() const { return data_->getInverse(Type::IfcRelDefinesByProperties, 4)->as<IfcRelDefinesByProperties>(); }

const IfcParse::entity& IfcObject::declaration() const { return *IfcObject_type; }
Type::Enum IfcObject::Class() { return Type::IfcObject; }
IfcObject::IfcObject(IfcAbstractEntity* e) : IfcObjectDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcObject)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcObject::IfcObject(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObjectDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcObjectDefinition

IfcRelAssigns::list::ptr IfcObjectDefinition::HasAssignments() const { return data_->getInverse(Type::IfcRelAssigns, 4)->as<IfcRelAssigns>(); }
IfcRelNests::list::ptr IfcObjectDefinition::Nests() const { return data_->getInverse(Type::IfcRelNests, 5)->as<IfcRelNests>(); }
IfcRelNests::list::ptr IfcObjectDefinition::IsNestedBy() const { return data_->getInverse(Type::IfcRelNests, 4)->as<IfcRelNests>(); }
IfcRelDeclares::list::ptr IfcObjectDefinition::HasContext() const { return data_->getInverse(Type::IfcRelDeclares, 5)->as<IfcRelDeclares>(); }
IfcRelAggregates::list::ptr IfcObjectDefinition::IsDecomposedBy() const { return data_->getInverse(Type::IfcRelAggregates, 4)->as<IfcRelAggregates>(); }
IfcRelAggregates::list::ptr IfcObjectDefinition::Decomposes() const { return data_->getInverse(Type::IfcRelAggregates, 5)->as<IfcRelAggregates>(); }
IfcRelAssociates::list::ptr IfcObjectDefinition::HasAssociations() const { return data_->getInverse(Type::IfcRelAssociates, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& IfcObjectDefinition::declaration() const { return *IfcObjectDefinition_type; }
Type::Enum IfcObjectDefinition::Class() { return Type::IfcObjectDefinition; }
IfcObjectDefinition::IfcObjectDefinition(IfcAbstractEntity* e) : IfcRoot((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcObjectDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcObjectDefinition::IfcObjectDefinition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcObjectPlacement

IfcProduct::list::ptr IfcObjectPlacement::PlacesObject() const { return data_->getInverse(Type::IfcProduct, 5)->as<IfcProduct>(); }
IfcLocalPlacement::list::ptr IfcObjectPlacement::ReferencedByPlacements() const { return data_->getInverse(Type::IfcLocalPlacement, 0)->as<IfcLocalPlacement>(); }

const IfcParse::entity& IfcObjectPlacement::declaration() const { return *IfcObjectPlacement_type; }
Type::Enum IfcObjectPlacement::Class() { return Type::IfcObjectPlacement; }
IfcObjectPlacement::IfcObjectPlacement(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcObjectPlacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcObjectPlacement::IfcObjectPlacement() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcObjective
bool IfcObjective::hasBenchmarkValues() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcConstraint >::ptr IfcObjective::BenchmarkValues() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcConstraint>(); }
void IfcObjective::setBenchmarkValues(IfcTemplatedEntityList< IfcConstraint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcObjective::hasLogicalAggregator() const { return !data_->getArgument(8)->isNull(); }
IfcLogicalOperatorEnum::IfcLogicalOperatorEnum IfcObjective::LogicalAggregator() const { return IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); }
void IfcObjective::setLogicalAggregator(IfcLogicalOperatorEnum::IfcLogicalOperatorEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcLogicalOperatorEnum::ToString(v)); }
IfcObjectiveEnum::IfcObjectiveEnum IfcObjective::ObjectiveQualifier() const { return IfcObjectiveEnum::FromString(*data_->getArgument(9)); }
void IfcObjective::setObjectiveQualifier(IfcObjectiveEnum::IfcObjectiveEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcObjectiveEnum::ToString(v)); }
bool IfcObjective::hasUserDefinedQualifier() const { return !data_->getArgument(10)->isNull(); }
std::string IfcObjective::UserDefinedQualifier() const { return *data_->getArgument(10); }
void IfcObjective::setUserDefinedQualifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcObjective::declaration() const { return *IfcObjective_type; }
Type::Enum IfcObjective::Class() { return Type::IfcObjective; }
IfcObjective::IfcObjective(IfcAbstractEntity* e) : IfcConstraint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcObjective)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::string > v2_Description, IfcConstraintEnum::IfcConstraintEnum v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, boost::optional< IfcTemplatedEntityList< IfcConstraint >::ptr > v8_BenchmarkValues, boost::optional< IfcLogicalOperatorEnum::IfcLogicalOperatorEnum > v9_LogicalAggregator, IfcObjectiveEnum::IfcObjectiveEnum v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier) : IfcConstraint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,v3_ConstraintGrade,IfcConstraintEnum::ToString(v3_ConstraintGrade)); if (v4_ConstraintSource) { e->setArgument(3,(*v4_ConstraintSource)); } else { e->setArgument(3); } e->setArgument(4,(v5_CreatingActor)); if (v6_CreationTime) { e->setArgument(5,(*v6_CreationTime)); } else { e->setArgument(5); } if (v7_UserDefinedGrade) { e->setArgument(6,(*v7_UserDefinedGrade)); } else { e->setArgument(6); } if (v8_BenchmarkValues) { e->setArgument(7,(*v8_BenchmarkValues)->generalize()); } else { e->setArgument(7); } if (v9_LogicalAggregator) { e->setArgument(8,*v9_LogicalAggregator,IfcLogicalOperatorEnum::ToString(*v9_LogicalAggregator)); } else { e->setArgument(8); } e->setArgument(9,v10_ObjectiveQualifier,IfcObjectiveEnum::ToString(v10_ObjectiveQualifier)); if (v11_UserDefinedQualifier) { e->setArgument(10,(*v11_UserDefinedQualifier)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOccupant
bool IfcOccupant::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcOccupantTypeEnum::IfcOccupantTypeEnum IfcOccupant::PredefinedType() const { return IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); }
void IfcOccupant::setPredefinedType(IfcOccupantTypeEnum::IfcOccupantTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcOccupantTypeEnum::ToString(v)); }


const IfcParse::entity& IfcOccupant::declaration() const { return *IfcOccupant_type; }
Type::Enum IfcOccupant::Class() { return Type::IfcOccupant; }
IfcOccupant::IfcOccupant(IfcAbstractEntity* e) : IfcActor((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOccupant)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOccupant::IfcOccupant(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcActorSelect* v6_TheActor, boost::optional< IfcOccupantTypeEnum::IfcOccupantTypeEnum > v7_PredefinedType) : IfcActor((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_TheActor)); if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcOccupantTypeEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOffsetCurve2D
IfcCurve* IfcOffsetCurve2D::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOffsetCurve2D::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcOffsetCurve2D::Distance() const { return *data_->getArgument(1); }
void IfcOffsetCurve2D::setDistance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
boost::logic::tribool IfcOffsetCurve2D::SelfIntersect() const { return *data_->getArgument(2); }
void IfcOffsetCurve2D::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcOffsetCurve2D::declaration() const { return *IfcOffsetCurve2D_type; }
Type::Enum IfcOffsetCurve2D::Class() { return Type::IfcOffsetCurve2D; }
IfcOffsetCurve2D::IfcOffsetCurve2D(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOffsetCurve2D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOffsetCurve2D::IfcOffsetCurve2D(IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_Distance)); e->setArgument(2,(v3_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOffsetCurve3D
IfcCurve* IfcOffsetCurve3D::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOffsetCurve3D::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcOffsetCurve3D::Distance() const { return *data_->getArgument(1); }
void IfcOffsetCurve3D::setDistance(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
boost::logic::tribool IfcOffsetCurve3D::SelfIntersect() const { return *data_->getArgument(2); }
void IfcOffsetCurve3D::setSelfIntersect(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcDirection* IfcOffsetCurve3D::RefDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcOffsetCurve3D::setRefDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcOffsetCurve3D::declaration() const { return *IfcOffsetCurve3D_type; }
Type::Enum IfcOffsetCurve3D::Class() { return Type::IfcOffsetCurve3D; }
IfcOffsetCurve3D::IfcOffsetCurve3D(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOffsetCurve3D)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOffsetCurve3D::IfcOffsetCurve3D(IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, IfcDirection* v4_RefDirection) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_Distance)); e->setArgument(2,(v3_SelfIntersect)); e->setArgument(3,(v4_RefDirection)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOpenShell


const IfcParse::entity& IfcOpenShell::declaration() const { return *IfcOpenShell_type; }
Type::Enum IfcOpenShell::Class() { return Type::IfcOpenShell; }
IfcOpenShell::IfcOpenShell(IfcAbstractEntity* e) : IfcConnectedFaceSet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOpenShell)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOpenShell::IfcOpenShell(IfcTemplatedEntityList< IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_CfsFaces)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOpeningElement
bool IfcOpeningElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum IfcOpeningElement::PredefinedType() const { return IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcOpeningElement::setPredefinedType(IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcOpeningElementTypeEnum::ToString(v)); }

IfcRelFillsElement::list::ptr IfcOpeningElement::HasFillings() const { return data_->getInverse(Type::IfcRelFillsElement, 4)->as<IfcRelFillsElement>(); }

const IfcParse::entity& IfcOpeningElement::declaration() const { return *IfcOpeningElement_type; }
Type::Enum IfcOpeningElement::Class() { return Type::IfcOpeningElement; }
IfcOpeningElement::IfcOpeningElement(IfcAbstractEntity* e) : IfcFeatureElementSubtraction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOpeningElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOpeningElement::IfcOpeningElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcOpeningElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOpeningStandardCase


const IfcParse::entity& IfcOpeningStandardCase::declaration() const { return *IfcOpeningStandardCase_type; }
Type::Enum IfcOpeningStandardCase::Class() { return Type::IfcOpeningStandardCase; }
IfcOpeningStandardCase::IfcOpeningStandardCase(IfcAbstractEntity* e) : IfcOpeningElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOpeningStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum > v9_PredefinedType) : IfcOpeningElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcOpeningElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOrganization
bool IfcOrganization::hasIdentification() const { return !data_->getArgument(0)->isNull(); }
std::string IfcOrganization::Identification() const { return *data_->getArgument(0); }
void IfcOrganization::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcOrganization::Name() const { return *data_->getArgument(1); }
void IfcOrganization::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcOrganization::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcOrganization::Description() const { return *data_->getArgument(2); }
void IfcOrganization::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcOrganization::hasRoles() const { return !data_->getArgument(3)->isNull(); }
IfcTemplatedEntityList< IfcActorRole >::ptr IfcOrganization::Roles() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcActorRole>(); }
void IfcOrganization::setRoles(IfcTemplatedEntityList< IfcActorRole >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }
bool IfcOrganization::hasAddresses() const { return !data_->getArgument(4)->isNull(); }
IfcTemplatedEntityList< IfcAddress >::ptr IfcOrganization::Addresses() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcAddress>(); }
void IfcOrganization::setAddresses(IfcTemplatedEntityList< IfcAddress >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }

IfcOrganizationRelationship::list::ptr IfcOrganization::IsRelatedBy() const { return data_->getInverse(Type::IfcOrganizationRelationship, 3)->as<IfcOrganizationRelationship>(); }
IfcOrganizationRelationship::list::ptr IfcOrganization::Relates() const { return data_->getInverse(Type::IfcOrganizationRelationship, 2)->as<IfcOrganizationRelationship>(); }
IfcPersonAndOrganization::list::ptr IfcOrganization::Engages() const { return data_->getInverse(Type::IfcPersonAndOrganization, 1)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& IfcOrganization::declaration() const { return *IfcOrganization_type; }
Type::Enum IfcOrganization::Class() { return Type::IfcOrganization; }
IfcOrganization::IfcOrganization(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcOrganization)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOrganization::IfcOrganization(boost::optional< std::string > v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< IfcTemplatedEntityList< IfcActorRole >::ptr > v4_Roles, boost::optional< IfcTemplatedEntityList< IfcAddress >::ptr > v5_Addresses) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Identification) { e->setArgument(0,(*v1_Identification)); } else { e->setArgument(0); } e->setArgument(1,(v2_Name)); if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } if (v4_Roles) { e->setArgument(3,(*v4_Roles)->generalize()); } else { e->setArgument(3); } if (v5_Addresses) { e->setArgument(4,(*v5_Addresses)->generalize()); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOrganizationRelationship
IfcOrganization* IfcOrganizationRelationship::RelatingOrganization() const { return (IfcOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcOrganizationRelationship::setRelatingOrganization(IfcOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcOrganization >::ptr IfcOrganizationRelationship::RelatedOrganizations() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcOrganization>(); }
void IfcOrganizationRelationship::setRelatedOrganizations(IfcTemplatedEntityList< IfcOrganization >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }


const IfcParse::entity& IfcOrganizationRelationship::declaration() const { return *IfcOrganizationRelationship_type; }
Type::Enum IfcOrganizationRelationship::Class() { return Type::IfcOrganizationRelationship; }
IfcOrganizationRelationship::IfcOrganizationRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOrganizationRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOrganizationRelationship::IfcOrganizationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcOrganization* v3_RelatingOrganization, IfcTemplatedEntityList< IfcOrganization >::ptr v4_RelatedOrganizations) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingOrganization)); e->setArgument(3,(v4_RelatedOrganizations)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOrientedEdge
IfcEdge* IfcOrientedEdge::EdgeElement() const { return (IfcEdge*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcOrientedEdge::setEdgeElement(IfcEdge* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcOrientedEdge::Orientation() const { return *data_->getArgument(3); }
void IfcOrientedEdge::setOrientation(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcOrientedEdge::declaration() const { return *IfcOrientedEdge_type; }
Type::Enum IfcOrientedEdge::Class() { return Type::IfcOrientedEdge; }
IfcOrientedEdge::IfcOrientedEdge(IfcAbstractEntity* e) : IfcEdge((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOrientedEdge)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOrientedEdge::IfcOrientedEdge(IfcEdge* v3_EdgeElement, bool v4_Orientation) : IfcEdge((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgumentDerived(0); e->setArgumentDerived(1); e->setArgument(2,(v3_EdgeElement)); e->setArgument(3,(v4_Orientation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOuterBoundaryCurve


const IfcParse::entity& IfcOuterBoundaryCurve::declaration() const { return *IfcOuterBoundaryCurve_type; }
Type::Enum IfcOuterBoundaryCurve::Class() { return Type::IfcOuterBoundaryCurve; }
IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(IfcAbstractEntity* e) : IfcBoundaryCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOuterBoundaryCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(IfcTemplatedEntityList< IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundaryCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Segments)->generalize()); e->setArgument(1,(v2_SelfIntersect)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOutlet
bool IfcOutlet::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcOutletTypeEnum::IfcOutletTypeEnum IfcOutlet::PredefinedType() const { return IfcOutletTypeEnum::FromString(*data_->getArgument(8)); }
void IfcOutlet::setPredefinedType(IfcOutletTypeEnum::IfcOutletTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcOutletTypeEnum::ToString(v)); }


const IfcParse::entity& IfcOutlet::declaration() const { return *IfcOutlet_type; }
Type::Enum IfcOutlet::Class() { return Type::IfcOutlet; }
IfcOutlet::IfcOutlet(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOutlet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOutlet::IfcOutlet(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcOutletTypeEnum::IfcOutletTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcOutletTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOutletType
IfcOutletTypeEnum::IfcOutletTypeEnum IfcOutletType::PredefinedType() const { return IfcOutletTypeEnum::FromString(*data_->getArgument(9)); }
void IfcOutletType::setPredefinedType(IfcOutletTypeEnum::IfcOutletTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcOutletTypeEnum::ToString(v)); }


const IfcParse::entity& IfcOutletType::declaration() const { return *IfcOutletType_type; }
Type::Enum IfcOutletType::Class() { return Type::IfcOutletType; }
IfcOutletType::IfcOutletType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcOutletType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOutletType::IfcOutletType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcOutletTypeEnum::IfcOutletTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcOutletTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcOwnerHistory
IfcPersonAndOrganization* IfcOwnerHistory::OwningUser() const { return (IfcPersonAndOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcOwnerHistory::setOwningUser(IfcPersonAndOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcApplication* IfcOwnerHistory::OwningApplication() const { return (IfcApplication*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcOwnerHistory::setOwningApplication(IfcApplication* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcOwnerHistory::hasState() const { return !data_->getArgument(2)->isNull(); }
IfcStateEnum::IfcStateEnum IfcOwnerHistory::State() const { return IfcStateEnum::FromString(*data_->getArgument(2)); }
void IfcOwnerHistory::setState(IfcStateEnum::IfcStateEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcStateEnum::ToString(v)); }
bool IfcOwnerHistory::hasChangeAction() const { return !data_->getArgument(3)->isNull(); }
IfcChangeActionEnum::IfcChangeActionEnum IfcOwnerHistory::ChangeAction() const { return IfcChangeActionEnum::FromString(*data_->getArgument(3)); }
void IfcOwnerHistory::setChangeAction(IfcChangeActionEnum::IfcChangeActionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcChangeActionEnum::ToString(v)); }
bool IfcOwnerHistory::hasLastModifiedDate() const { return !data_->getArgument(4)->isNull(); }
int IfcOwnerHistory::LastModifiedDate() const { return *data_->getArgument(4); }
void IfcOwnerHistory::setLastModifiedDate(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcOwnerHistory::hasLastModifyingUser() const { return !data_->getArgument(5)->isNull(); }
IfcPersonAndOrganization* IfcOwnerHistory::LastModifyingUser() const { return (IfcPersonAndOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcOwnerHistory::setLastModifyingUser(IfcPersonAndOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcOwnerHistory::hasLastModifyingApplication() const { return !data_->getArgument(6)->isNull(); }
IfcApplication* IfcOwnerHistory::LastModifyingApplication() const { return (IfcApplication*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcOwnerHistory::setLastModifyingApplication(IfcApplication* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
int IfcOwnerHistory::CreationDate() const { return *data_->getArgument(7); }
void IfcOwnerHistory::setCreationDate(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcOwnerHistory::declaration() const { return *IfcOwnerHistory_type; }
Type::Enum IfcOwnerHistory::Class() { return Type::IfcOwnerHistory; }
IfcOwnerHistory::IfcOwnerHistory(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcOwnerHistory)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcOwnerHistory::IfcOwnerHistory(IfcPersonAndOrganization* v1_OwningUser, IfcApplication* v2_OwningApplication, boost::optional< IfcStateEnum::IfcStateEnum > v3_State, boost::optional< IfcChangeActionEnum::IfcChangeActionEnum > v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, IfcPersonAndOrganization* v6_LastModifyingUser, IfcApplication* v7_LastModifyingApplication, int v8_CreationDate) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_OwningUser)); e->setArgument(1,(v2_OwningApplication)); if (v3_State) { e->setArgument(2,*v3_State,IfcStateEnum::ToString(*v3_State)); } else { e->setArgument(2); } if (v4_ChangeAction) { e->setArgument(3,*v4_ChangeAction,IfcChangeActionEnum::ToString(*v4_ChangeAction)); } else { e->setArgument(3); } if (v5_LastModifiedDate) { e->setArgument(4,(*v5_LastModifiedDate)); } else { e->setArgument(4); } e->setArgument(5,(v6_LastModifyingUser)); e->setArgument(6,(v7_LastModifyingApplication)); e->setArgument(7,(v8_CreationDate)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcParameterizedProfileDef
bool IfcParameterizedProfileDef::hasPosition() const { return !data_->getArgument(2)->isNull(); }
IfcAxis2Placement2D* IfcParameterizedProfileDef::Position() const { return (IfcAxis2Placement2D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcParameterizedProfileDef::setPosition(IfcAxis2Placement2D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcParameterizedProfileDef::declaration() const { return *IfcParameterizedProfileDef_type; }
Type::Enum IfcParameterizedProfileDef::Class() { return Type::IfcParameterizedProfileDef; }
IfcParameterizedProfileDef::IfcParameterizedProfileDef(IfcAbstractEntity* e) : IfcProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcParameterizedProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcParameterizedProfileDef::IfcParameterizedProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position) : IfcProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPath
IfcTemplatedEntityList< IfcOrientedEdge >::ptr IfcPath::EdgeList() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcOrientedEdge>(); }
void IfcPath::setEdgeList(IfcTemplatedEntityList< IfcOrientedEdge >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcPath::declaration() const { return *IfcPath_type; }
Type::Enum IfcPath::Class() { return Type::IfcPath; }
IfcPath::IfcPath(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPath)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPath::IfcPath(IfcTemplatedEntityList< IfcOrientedEdge >::ptr v1_EdgeList) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeList)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPcurve
IfcSurface* IfcPcurve::BasisSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPcurve::setBasisSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcCurve* IfcPcurve::ReferenceCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcPcurve::setReferenceCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcPcurve::declaration() const { return *IfcPcurve_type; }
Type::Enum IfcPcurve::Class() { return Type::IfcPcurve; }
IfcPcurve::IfcPcurve(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPcurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPcurve::IfcPcurve(IfcSurface* v1_BasisSurface, IfcCurve* v2_ReferenceCurve) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_ReferenceCurve)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPerformanceHistory
std::string IfcPerformanceHistory::LifeCyclePhase() const { return *data_->getArgument(6); }
void IfcPerformanceHistory::setLifeCyclePhase(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcPerformanceHistory::hasPredefinedType() const { return !data_->getArgument(7)->isNull(); }
IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum IfcPerformanceHistory::PredefinedType() const { return IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); }
void IfcPerformanceHistory::setPredefinedType(IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcPerformanceHistoryTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPerformanceHistory::declaration() const { return *IfcPerformanceHistory_type; }
Type::Enum IfcPerformanceHistory::Class() { return Type::IfcPerformanceHistory; }
IfcPerformanceHistory::IfcPerformanceHistory(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPerformanceHistory)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPerformanceHistory::IfcPerformanceHistory(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_LifeCyclePhase, boost::optional< IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum > v8_PredefinedType) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } e->setArgument(6,(v7_LifeCyclePhase)); if (v8_PredefinedType) { e->setArgument(7,*v8_PredefinedType,IfcPerformanceHistoryTypeEnum::ToString(*v8_PredefinedType)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPermeableCoveringProperties
IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum IfcPermeableCoveringProperties::OperationType() const { return IfcPermeableCoveringOperationEnum::FromString(*data_->getArgument(4)); }
void IfcPermeableCoveringProperties::setOperationType(IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcPermeableCoveringOperationEnum::ToString(v)); }
IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum IfcPermeableCoveringProperties::PanelPosition() const { return IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void IfcPermeableCoveringProperties::setPanelPosition(IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcWindowPanelPositionEnum::ToString(v)); }
bool IfcPermeableCoveringProperties::hasFrameDepth() const { return !data_->getArgument(6)->isNull(); }
double IfcPermeableCoveringProperties::FrameDepth() const { return *data_->getArgument(6); }
void IfcPermeableCoveringProperties::setFrameDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcPermeableCoveringProperties::hasFrameThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcPermeableCoveringProperties::FrameThickness() const { return *data_->getArgument(7); }
void IfcPermeableCoveringProperties::setFrameThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcPermeableCoveringProperties::hasShapeAspectStyle() const { return !data_->getArgument(8)->isNull(); }
IfcShapeAspect* IfcPermeableCoveringProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcPermeableCoveringProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcPermeableCoveringProperties::declaration() const { return *IfcPermeableCoveringProperties_type; }
Type::Enum IfcPermeableCoveringProperties::Class() { return Type::IfcPermeableCoveringProperties; }
IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(IfcAbstractEntity* e) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPermeableCoveringProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum v5_OperationType, IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,v5_OperationType,IfcPermeableCoveringOperationEnum::ToString(v5_OperationType)); e->setArgument(5,v6_PanelPosition,IfcWindowPanelPositionEnum::ToString(v6_PanelPosition)); if (v7_FrameDepth) { e->setArgument(6,(*v7_FrameDepth)); } else { e->setArgument(6); } if (v8_FrameThickness) { e->setArgument(7,(*v8_FrameThickness)); } else { e->setArgument(7); } e->setArgument(8,(v9_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPermit
bool IfcPermit::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcPermitTypeEnum::IfcPermitTypeEnum IfcPermit::PredefinedType() const { return IfcPermitTypeEnum::FromString(*data_->getArgument(6)); }
void IfcPermit::setPredefinedType(IfcPermitTypeEnum::IfcPermitTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcPermitTypeEnum::ToString(v)); }
bool IfcPermit::hasStatus() const { return !data_->getArgument(7)->isNull(); }
std::string IfcPermit::Status() const { return *data_->getArgument(7); }
void IfcPermit::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcPermit::hasLongDescription() const { return !data_->getArgument(8)->isNull(); }
std::string IfcPermit::LongDescription() const { return *data_->getArgument(8); }
void IfcPermit::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcPermit::declaration() const { return *IfcPermit_type; }
Type::Enum IfcPermit::Class() { return Type::IfcPermit; }
IfcPermit::IfcPermit(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPermit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPermit::IfcPermit(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcPermitTypeEnum::IfcPermitTypeEnum > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcPermitTypeEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } if (v8_Status) { e->setArgument(7,(*v8_Status)); } else { e->setArgument(7); } if (v9_LongDescription) { e->setArgument(8,(*v9_LongDescription)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPerson
bool IfcPerson::hasIdentification() const { return !data_->getArgument(0)->isNull(); }
std::string IfcPerson::Identification() const { return *data_->getArgument(0); }
void IfcPerson::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcPerson::hasFamilyName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcPerson::FamilyName() const { return *data_->getArgument(1); }
void IfcPerson::setFamilyName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPerson::hasGivenName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcPerson::GivenName() const { return *data_->getArgument(2); }
void IfcPerson::setGivenName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPerson::hasMiddleNames() const { return !data_->getArgument(3)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPerson::MiddleNames() const { return *data_->getArgument(3); }
void IfcPerson::setMiddleNames(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPerson::hasPrefixTitles() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPerson::PrefixTitles() const { return *data_->getArgument(4); }
void IfcPerson::setPrefixTitles(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPerson::hasSuffixTitles() const { return !data_->getArgument(5)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPerson::SuffixTitles() const { return *data_->getArgument(5); }
void IfcPerson::setSuffixTitles(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcPerson::hasRoles() const { return !data_->getArgument(6)->isNull(); }
IfcTemplatedEntityList< IfcActorRole >::ptr IfcPerson::Roles() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcActorRole>(); }
void IfcPerson::setRoles(IfcTemplatedEntityList< IfcActorRole >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }
bool IfcPerson::hasAddresses() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcAddress >::ptr IfcPerson::Addresses() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcAddress>(); }
void IfcPerson::setAddresses(IfcTemplatedEntityList< IfcAddress >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }

IfcPersonAndOrganization::list::ptr IfcPerson::EngagedIn() const { return data_->getInverse(Type::IfcPersonAndOrganization, 0)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& IfcPerson::declaration() const { return *IfcPerson_type; }
Type::Enum IfcPerson::Class() { return Type::IfcPerson; }
IfcPerson::IfcPerson(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPerson)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPerson::IfcPerson(boost::optional< std::string > v1_Identification, boost::optional< std::string > v2_FamilyName, boost::optional< std::string > v3_GivenName, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_MiddleNames, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_PrefixTitles, boost::optional< std::vector< std::string > /*[1:?]*/ > v6_SuffixTitles, boost::optional< IfcTemplatedEntityList< IfcActorRole >::ptr > v7_Roles, boost::optional< IfcTemplatedEntityList< IfcAddress >::ptr > v8_Addresses) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Identification) { e->setArgument(0,(*v1_Identification)); } else { e->setArgument(0); } if (v2_FamilyName) { e->setArgument(1,(*v2_FamilyName)); } else { e->setArgument(1); } if (v3_GivenName) { e->setArgument(2,(*v3_GivenName)); } else { e->setArgument(2); } if (v4_MiddleNames) { e->setArgument(3,(*v4_MiddleNames)); } else { e->setArgument(3); } if (v5_PrefixTitles) { e->setArgument(4,(*v5_PrefixTitles)); } else { e->setArgument(4); } if (v6_SuffixTitles) { e->setArgument(5,(*v6_SuffixTitles)); } else { e->setArgument(5); } if (v7_Roles) { e->setArgument(6,(*v7_Roles)->generalize()); } else { e->setArgument(6); } if (v8_Addresses) { e->setArgument(7,(*v8_Addresses)->generalize()); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPersonAndOrganization
IfcPerson* IfcPersonAndOrganization::ThePerson() const { return (IfcPerson*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPersonAndOrganization::setThePerson(IfcPerson* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcOrganization* IfcPersonAndOrganization::TheOrganization() const { return (IfcOrganization*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcPersonAndOrganization::setTheOrganization(IfcOrganization* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPersonAndOrganization::hasRoles() const { return !data_->getArgument(2)->isNull(); }
IfcTemplatedEntityList< IfcActorRole >::ptr IfcPersonAndOrganization::Roles() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcActorRole>(); }
void IfcPersonAndOrganization::setRoles(IfcTemplatedEntityList< IfcActorRole >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcPersonAndOrganization::declaration() const { return *IfcPersonAndOrganization_type; }
Type::Enum IfcPersonAndOrganization::Class() { return Type::IfcPersonAndOrganization; }
IfcPersonAndOrganization::IfcPersonAndOrganization(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPersonAndOrganization)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPersonAndOrganization::IfcPersonAndOrganization(IfcPerson* v1_ThePerson, IfcOrganization* v2_TheOrganization, boost::optional< IfcTemplatedEntityList< IfcActorRole >::ptr > v3_Roles) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ThePerson)); e->setArgument(1,(v2_TheOrganization)); if (v3_Roles) { e->setArgument(2,(*v3_Roles)->generalize()); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPhysicalComplexQuantity
IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr IfcPhysicalComplexQuantity::HasQuantities() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcPhysicalQuantity>(); }
void IfcPhysicalComplexQuantity::setHasQuantities(IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }
std::string IfcPhysicalComplexQuantity::Discrimination() const { return *data_->getArgument(3); }
void IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPhysicalComplexQuantity::hasQuality() const { return !data_->getArgument(4)->isNull(); }
std::string IfcPhysicalComplexQuantity::Quality() const { return *data_->getArgument(4); }
void IfcPhysicalComplexQuantity::setQuality(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPhysicalComplexQuantity::hasUsage() const { return !data_->getArgument(5)->isNull(); }
std::string IfcPhysicalComplexQuantity::Usage() const { return *data_->getArgument(5); }
void IfcPhysicalComplexQuantity::setUsage(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcPhysicalComplexQuantity::declaration() const { return *IfcPhysicalComplexQuantity_type; }
Type::Enum IfcPhysicalComplexQuantity::Class() { return Type::IfcPhysicalComplexQuantity; }
IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(IfcAbstractEntity* e) : IfcPhysicalQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPhysicalComplexQuantity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcPhysicalQuantity >::ptr v3_HasQuantities, std::string v4_Discrimination, boost::optional< std::string > v5_Quality, boost::optional< std::string > v6_Usage) : IfcPhysicalQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_HasQuantities)->generalize()); e->setArgument(3,(v4_Discrimination)); if (v5_Quality) { e->setArgument(4,(*v5_Quality)); } else { e->setArgument(4); } if (v6_Usage) { e->setArgument(5,(*v6_Usage)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPhysicalQuantity
std::string IfcPhysicalQuantity::Name() const { return *data_->getArgument(0); }
void IfcPhysicalQuantity::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcPhysicalQuantity::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcPhysicalQuantity::Description() const { return *data_->getArgument(1); }
void IfcPhysicalQuantity::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcExternalReferenceRelationship::list::ptr IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }
IfcPhysicalComplexQuantity::list::ptr IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(Type::IfcPhysicalComplexQuantity, 2)->as<IfcPhysicalComplexQuantity>(); }

const IfcParse::entity& IfcPhysicalQuantity::declaration() const { return *IfcPhysicalQuantity_type; }
Type::Enum IfcPhysicalQuantity::Class() { return Type::IfcPhysicalQuantity; }
IfcPhysicalQuantity::IfcPhysicalQuantity(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPhysicalQuantity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPhysicalQuantity::IfcPhysicalQuantity(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPhysicalSimpleQuantity
bool IfcPhysicalSimpleQuantity::hasUnit() const { return !data_->getArgument(2)->isNull(); }
IfcNamedUnit* IfcPhysicalSimpleQuantity::Unit() const { return (IfcNamedUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPhysicalSimpleQuantity::setUnit(IfcNamedUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPhysicalSimpleQuantity::declaration() const { return *IfcPhysicalSimpleQuantity_type; }
Type::Enum IfcPhysicalSimpleQuantity::Class() { return Type::IfcPhysicalSimpleQuantity; }
IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(IfcAbstractEntity* e) : IfcPhysicalQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPhysicalSimpleQuantity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit) : IfcPhysicalQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPile
bool IfcPile::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcPileTypeEnum::IfcPileTypeEnum IfcPile::PredefinedType() const { return IfcPileTypeEnum::FromString(*data_->getArgument(8)); }
void IfcPile::setPredefinedType(IfcPileTypeEnum::IfcPileTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcPileTypeEnum::ToString(v)); }
bool IfcPile::hasConstructionType() const { return !data_->getArgument(9)->isNull(); }
IfcPileConstructionEnum::IfcPileConstructionEnum IfcPile::ConstructionType() const { return IfcPileConstructionEnum::FromString(*data_->getArgument(9)); }
void IfcPile::setConstructionType(IfcPileConstructionEnum::IfcPileConstructionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPileConstructionEnum::ToString(v)); }


const IfcParse::entity& IfcPile::declaration() const { return *IfcPile_type; }
Type::Enum IfcPile::Class() { return Type::IfcPile; }
IfcPile::IfcPile(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPile)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPile::IfcPile(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcPileTypeEnum::IfcPileTypeEnum > v9_PredefinedType, boost::optional< IfcPileConstructionEnum::IfcPileConstructionEnum > v10_ConstructionType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcPileTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } if (v10_ConstructionType) { e->setArgument(9,*v10_ConstructionType,IfcPileConstructionEnum::ToString(*v10_ConstructionType)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPileType
IfcPileTypeEnum::IfcPileTypeEnum IfcPileType::PredefinedType() const { return IfcPileTypeEnum::FromString(*data_->getArgument(9)); }
void IfcPileType::setPredefinedType(IfcPileTypeEnum::IfcPileTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPileTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPileType::declaration() const { return *IfcPileType_type; }
Type::Enum IfcPileType::Class() { return Type::IfcPileType; }
IfcPileType::IfcPileType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPileType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPileType::IfcPileType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcPileTypeEnum::IfcPileTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcPileTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPipeFitting
bool IfcPipeFitting::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum IfcPipeFitting::PredefinedType() const { return IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcPipeFitting::setPredefinedType(IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcPipeFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPipeFitting::declaration() const { return *IfcPipeFitting_type; }
Type::Enum IfcPipeFitting::Class() { return Type::IfcPipeFitting; }
IfcPipeFitting::IfcPipeFitting(IfcAbstractEntity* e) : IfcFlowFitting((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPipeFitting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPipeFitting::IfcPipeFitting(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum > v9_PredefinedType) : IfcFlowFitting((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcPipeFittingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPipeFittingType
IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum IfcPipeFittingType::PredefinedType() const { return IfcPipeFittingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcPipeFittingType::setPredefinedType(IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPipeFittingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPipeFittingType::declaration() const { return *IfcPipeFittingType_type; }
Type::Enum IfcPipeFittingType::Class() { return Type::IfcPipeFittingType; }
IfcPipeFittingType::IfcPipeFittingType(IfcAbstractEntity* e) : IfcFlowFittingType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPipeFittingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum v10_PredefinedType) : IfcFlowFittingType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcPipeFittingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPipeSegment
bool IfcPipeSegment::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum IfcPipeSegment::PredefinedType() const { return IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void IfcPipeSegment::setPredefinedType(IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcPipeSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPipeSegment::declaration() const { return *IfcPipeSegment_type; }
Type::Enum IfcPipeSegment::Class() { return Type::IfcPipeSegment; }
IfcPipeSegment::IfcPipeSegment(IfcAbstractEntity* e) : IfcFlowSegment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPipeSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPipeSegment::IfcPipeSegment(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum > v9_PredefinedType) : IfcFlowSegment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcPipeSegmentTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPipeSegmentType
IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum IfcPipeSegmentType::PredefinedType() const { return IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcPipeSegmentType::setPredefinedType(IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPipeSegmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPipeSegmentType::declaration() const { return *IfcPipeSegmentType_type; }
Type::Enum IfcPipeSegmentType::Class() { return Type::IfcPipeSegmentType; }
IfcPipeSegmentType::IfcPipeSegmentType(IfcAbstractEntity* e) : IfcFlowSegmentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPipeSegmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPipeSegmentType::IfcPipeSegmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum v10_PredefinedType) : IfcFlowSegmentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcPipeSegmentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPixelTexture
int IfcPixelTexture::Width() const { return *data_->getArgument(5); }
void IfcPixelTexture::setWidth(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
int IfcPixelTexture::Height() const { return *data_->getArgument(6); }
void IfcPixelTexture::setHeight(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
int IfcPixelTexture::ColourComponents() const { return *data_->getArgument(7); }
void IfcPixelTexture::setColourComponents(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
std::vector< boost::dynamic_bitset<> > /*[1:?]*/ IfcPixelTexture::Pixel() const { return *data_->getArgument(8); }
void IfcPixelTexture::setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcPixelTexture::declaration() const { return *IfcPixelTexture_type; }
Type::Enum IfcPixelTexture::Class() { return Type::IfcPixelTexture; }
IfcPixelTexture::IfcPixelTexture(IfcAbstractEntity* e) : IfcSurfaceTexture((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPixelTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPixelTexture::IfcPixelTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, int v6_Width, int v7_Height, int v8_ColourComponents, std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v9_Pixel) : IfcSurfaceTexture((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); if (v3_Mode) { e->setArgument(2,(*v3_Mode)); } else { e->setArgument(2); } e->setArgument(3,(v4_TextureTransform)); if (v5_Parameter) { e->setArgument(4,(*v5_Parameter)); } else { e->setArgument(4); } e->setArgument(5,(v6_Width)); e->setArgument(6,(v7_Height)); e->setArgument(7,(v8_ColourComponents)); e->setArgument(8,(v9_Pixel)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlacement
IfcCartesianPoint* IfcPlacement::Location() const { return (IfcCartesianPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPlacement::setLocation(IfcCartesianPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcPlacement::declaration() const { return *IfcPlacement_type; }
Type::Enum IfcPlacement::Class() { return Type::IfcPlacement; }
IfcPlacement::IfcPlacement(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlacement::IfcPlacement(IfcCartesianPoint* v1_Location) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Location)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlanarBox
IfcAxis2Placement* IfcPlanarBox::Placement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPlanarBox::setPlacement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPlanarBox::declaration() const { return *IfcPlanarBox_type; }
Type::Enum IfcPlanarBox::Class() { return Type::IfcPlanarBox; }
IfcPlanarBox::IfcPlanarBox(IfcAbstractEntity* e) : IfcPlanarExtent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlanarBox)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlanarBox::IfcPlanarBox(double v1_SizeInX, double v2_SizeInY, IfcAxis2Placement* v3_Placement) : IfcPlanarExtent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SizeInX)); e->setArgument(1,(v2_SizeInY)); e->setArgument(2,(v3_Placement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlanarExtent
double IfcPlanarExtent::SizeInX() const { return *data_->getArgument(0); }
void IfcPlanarExtent::setSizeInX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcPlanarExtent::SizeInY() const { return *data_->getArgument(1); }
void IfcPlanarExtent::setSizeInY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcPlanarExtent::declaration() const { return *IfcPlanarExtent_type; }
Type::Enum IfcPlanarExtent::Class() { return Type::IfcPlanarExtent; }
IfcPlanarExtent::IfcPlanarExtent(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlanarExtent)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlanarExtent::IfcPlanarExtent(double v1_SizeInX, double v2_SizeInY) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SizeInX)); e->setArgument(1,(v2_SizeInY)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlane


const IfcParse::entity& IfcPlane::declaration() const { return *IfcPlane_type; }
Type::Enum IfcPlane::Class() { return Type::IfcPlane; }
IfcPlane::IfcPlane(IfcAbstractEntity* e) : IfcElementarySurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlane)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlane::IfcPlane(IfcAxis2Placement3D* v1_Position) : IfcElementarySurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlate
bool IfcPlate::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcPlateTypeEnum::IfcPlateTypeEnum IfcPlate::PredefinedType() const { return IfcPlateTypeEnum::FromString(*data_->getArgument(8)); }
void IfcPlate::setPredefinedType(IfcPlateTypeEnum::IfcPlateTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcPlateTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPlate::declaration() const { return *IfcPlate_type; }
Type::Enum IfcPlate::Class() { return Type::IfcPlate; }
IfcPlate::IfcPlate(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlate::IfcPlate(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcPlateTypeEnum::IfcPlateTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcPlateTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlateStandardCase


const IfcParse::entity& IfcPlateStandardCase::declaration() const { return *IfcPlateStandardCase_type; }
Type::Enum IfcPlateStandardCase::Class() { return Type::IfcPlateStandardCase; }
IfcPlateStandardCase::IfcPlateStandardCase(IfcAbstractEntity* e) : IfcPlate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlateStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlateStandardCase::IfcPlateStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcPlateTypeEnum::IfcPlateTypeEnum > v9_PredefinedType) : IfcPlate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcPlateTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPlateType
IfcPlateTypeEnum::IfcPlateTypeEnum IfcPlateType::PredefinedType() const { return IfcPlateTypeEnum::FromString(*data_->getArgument(9)); }
void IfcPlateType::setPredefinedType(IfcPlateTypeEnum::IfcPlateTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPlateTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPlateType::declaration() const { return *IfcPlateType_type; }
Type::Enum IfcPlateType::Class() { return Type::IfcPlateType; }
IfcPlateType::IfcPlateType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPlateType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPlateType::IfcPlateType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcPlateTypeEnum::IfcPlateTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcPlateTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPoint


const IfcParse::entity& IfcPoint::declaration() const { return *IfcPoint_type; }
Type::Enum IfcPoint::Class() { return Type::IfcPoint; }
IfcPoint::IfcPoint(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPoint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPoint::IfcPoint() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPointOnCurve
IfcCurve* IfcPointOnCurve::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPointOnCurve::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcPointOnCurve::PointParameter() const { return *data_->getArgument(1); }
void IfcPointOnCurve::setPointParameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcPointOnCurve::declaration() const { return *IfcPointOnCurve_type; }
Type::Enum IfcPointOnCurve::Class() { return Type::IfcPointOnCurve; }
IfcPointOnCurve::IfcPointOnCurve(IfcAbstractEntity* e) : IfcPoint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPointOnCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPointOnCurve::IfcPointOnCurve(IfcCurve* v1_BasisCurve, double v2_PointParameter) : IfcPoint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_PointParameter)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPointOnSurface
IfcSurface* IfcPointOnSurface::BasisSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcPointOnSurface::setBasisSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcPointOnSurface::PointParameterU() const { return *data_->getArgument(1); }
void IfcPointOnSurface::setPointParameterU(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcPointOnSurface::PointParameterV() const { return *data_->getArgument(2); }
void IfcPointOnSurface::setPointParameterV(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPointOnSurface::declaration() const { return *IfcPointOnSurface_type; }
Type::Enum IfcPointOnSurface::Class() { return Type::IfcPointOnSurface; }
IfcPointOnSurface::IfcPointOnSurface(IfcAbstractEntity* e) : IfcPoint((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPointOnSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPointOnSurface::IfcPointOnSurface(IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV) : IfcPoint((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_PointParameterU)); e->setArgument(2,(v3_PointParameterV)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPolyLoop
IfcTemplatedEntityList< IfcCartesianPoint >::ptr IfcPolyLoop::Polygon() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcCartesianPoint>(); }
void IfcPolyLoop::setPolygon(IfcTemplatedEntityList< IfcCartesianPoint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcPolyLoop::declaration() const { return *IfcPolyLoop_type; }
Type::Enum IfcPolyLoop::Class() { return Type::IfcPolyLoop; }
IfcPolyLoop::IfcPolyLoop(IfcAbstractEntity* e) : IfcLoop((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPolyLoop)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPolyLoop::IfcPolyLoop(IfcTemplatedEntityList< IfcCartesianPoint >::ptr v1_Polygon) : IfcLoop((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Polygon)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPolygonalBoundedHalfSpace
IfcAxis2Placement3D* IfcPolygonalBoundedHalfSpace::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPolygonalBoundedHalfSpace::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcBoundedCurve* IfcPolygonalBoundedHalfSpace::PolygonalBoundary() const { return (IfcBoundedCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPolygonalBoundedHalfSpace::setPolygonalBoundary(IfcBoundedCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPolygonalBoundedHalfSpace::declaration() const { return *IfcPolygonalBoundedHalfSpace_type; }
Type::Enum IfcPolygonalBoundedHalfSpace::Class() { return Type::IfcPolygonalBoundedHalfSpace; }
IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(IfcAbstractEntity* e) : IfcHalfSpaceSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPolygonalBoundedHalfSpace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, IfcAxis2Placement3D* v3_Position, IfcBoundedCurve* v4_PolygonalBoundary) : IfcHalfSpaceSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BaseSurface)); e->setArgument(1,(v2_AgreementFlag)); e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_PolygonalBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPolygonalFaceSet
bool IfcPolygonalFaceSet::hasClosed() const { return !data_->getArgument(1)->isNull(); }
bool IfcPolygonalFaceSet::Closed() const { return *data_->getArgument(1); }
void IfcPolygonalFaceSet::setClosed(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityList< IfcIndexedPolygonalFace >::ptr IfcPolygonalFaceSet::Faces() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcIndexedPolygonalFace>(); }
void IfcPolygonalFaceSet::setFaces(IfcTemplatedEntityList< IfcIndexedPolygonalFace >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }
bool IfcPolygonalFaceSet::hasPnIndex() const { return !data_->getArgument(3)->isNull(); }
std::vector< int > /*[1:?]*/ IfcPolygonalFaceSet::PnIndex() const { return *data_->getArgument(3); }
void IfcPolygonalFaceSet::setPnIndex(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPolygonalFaceSet::declaration() const { return *IfcPolygonalFaceSet_type; }
Type::Enum IfcPolygonalFaceSet::Class() { return Type::IfcPolygonalFaceSet; }
IfcPolygonalFaceSet::IfcPolygonalFaceSet(IfcAbstractEntity* e) : IfcTessellatedFaceSet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPolygonalFaceSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPolygonalFaceSet::IfcPolygonalFaceSet(IfcCartesianPointList3D* v1_Coordinates, boost::optional< bool > v2_Closed, IfcTemplatedEntityList< IfcIndexedPolygonalFace >::ptr v3_Faces, boost::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex) : IfcTessellatedFaceSet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Coordinates)); if (v2_Closed) { e->setArgument(1,(*v2_Closed)); } else { e->setArgument(1); } e->setArgument(2,(v3_Faces)->generalize()); if (v4_PnIndex) { e->setArgument(3,(*v4_PnIndex)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPolyline
IfcTemplatedEntityList< IfcCartesianPoint >::ptr IfcPolyline::Points() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcCartesianPoint>(); }
void IfcPolyline::setPoints(IfcTemplatedEntityList< IfcCartesianPoint >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcPolyline::declaration() const { return *IfcPolyline_type; }
Type::Enum IfcPolyline::Class() { return Type::IfcPolyline; }
IfcPolyline::IfcPolyline(IfcAbstractEntity* e) : IfcBoundedCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPolyline)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPolyline::IfcPolyline(IfcTemplatedEntityList< IfcCartesianPoint >::ptr v1_Points) : IfcBoundedCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Points)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPort

IfcRelConnectsPortToElement::list::ptr IfcPort::ContainedIn() const { return data_->getInverse(Type::IfcRelConnectsPortToElement, 4)->as<IfcRelConnectsPortToElement>(); }
IfcRelConnectsPorts::list::ptr IfcPort::ConnectedFrom() const { return data_->getInverse(Type::IfcRelConnectsPorts, 5)->as<IfcRelConnectsPorts>(); }
IfcRelConnectsPorts::list::ptr IfcPort::ConnectedTo() const { return data_->getInverse(Type::IfcRelConnectsPorts, 4)->as<IfcRelConnectsPorts>(); }

const IfcParse::entity& IfcPort::declaration() const { return *IfcPort_type; }
Type::Enum IfcPort::Class() { return Type::IfcPort; }
IfcPort::IfcPort(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPort)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPort::IfcPort(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPostalAddress
bool IfcPostalAddress::hasInternalLocation() const { return !data_->getArgument(3)->isNull(); }
std::string IfcPostalAddress::InternalLocation() const { return *data_->getArgument(3); }
void IfcPostalAddress::setInternalLocation(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPostalAddress::hasAddressLines() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcPostalAddress::AddressLines() const { return *data_->getArgument(4); }
void IfcPostalAddress::setAddressLines(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPostalAddress::hasPostalBox() const { return !data_->getArgument(5)->isNull(); }
std::string IfcPostalAddress::PostalBox() const { return *data_->getArgument(5); }
void IfcPostalAddress::setPostalBox(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcPostalAddress::hasTown() const { return !data_->getArgument(6)->isNull(); }
std::string IfcPostalAddress::Town() const { return *data_->getArgument(6); }
void IfcPostalAddress::setTown(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcPostalAddress::hasRegion() const { return !data_->getArgument(7)->isNull(); }
std::string IfcPostalAddress::Region() const { return *data_->getArgument(7); }
void IfcPostalAddress::setRegion(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcPostalAddress::hasPostalCode() const { return !data_->getArgument(8)->isNull(); }
std::string IfcPostalAddress::PostalCode() const { return *data_->getArgument(8); }
void IfcPostalAddress::setPostalCode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcPostalAddress::hasCountry() const { return !data_->getArgument(9)->isNull(); }
std::string IfcPostalAddress::Country() const { return *data_->getArgument(9); }
void IfcPostalAddress::setCountry(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcPostalAddress::declaration() const { return *IfcPostalAddress_type; }
Type::Enum IfcPostalAddress::Class() { return Type::IfcPostalAddress; }
IfcPostalAddress::IfcPostalAddress(IfcAbstractEntity* e) : IfcAddress((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPostalAddress)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPostalAddress::IfcPostalAddress(boost::optional< IfcAddressTypeEnum::IfcAddressTypeEnum > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::string > v4_InternalLocation, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, boost::optional< std::string > v6_PostalBox, boost::optional< std::string > v7_Town, boost::optional< std::string > v8_Region, boost::optional< std::string > v9_PostalCode, boost::optional< std::string > v10_Country) : IfcAddress((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Purpose) { e->setArgument(0,*v1_Purpose,IfcAddressTypeEnum::ToString(*v1_Purpose)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UserDefinedPurpose) { e->setArgument(2,(*v3_UserDefinedPurpose)); } else { e->setArgument(2); } if (v4_InternalLocation) { e->setArgument(3,(*v4_InternalLocation)); } else { e->setArgument(3); } if (v5_AddressLines) { e->setArgument(4,(*v5_AddressLines)); } else { e->setArgument(4); } if (v6_PostalBox) { e->setArgument(5,(*v6_PostalBox)); } else { e->setArgument(5); } if (v7_Town) { e->setArgument(6,(*v7_Town)); } else { e->setArgument(6); } if (v8_Region) { e->setArgument(7,(*v8_Region)); } else { e->setArgument(7); } if (v9_PostalCode) { e->setArgument(8,(*v9_PostalCode)); } else { e->setArgument(8); } if (v10_Country) { e->setArgument(9,(*v10_Country)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedColour


const IfcParse::entity& IfcPreDefinedColour::declaration() const { return *IfcPreDefinedColour_type; }
Type::Enum IfcPreDefinedColour::Class() { return Type::IfcPreDefinedColour; }
IfcPreDefinedColour::IfcPreDefinedColour(IfcAbstractEntity* e) : IfcPreDefinedItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPreDefinedColour)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPreDefinedColour::IfcPreDefinedColour(std::string v1_Name) : IfcPreDefinedItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedCurveFont


const IfcParse::entity& IfcPreDefinedCurveFont::declaration() const { return *IfcPreDefinedCurveFont_type; }
Type::Enum IfcPreDefinedCurveFont::Class() { return Type::IfcPreDefinedCurveFont; }
IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(IfcAbstractEntity* e) : IfcPreDefinedItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPreDefinedCurveFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedItem
std::string IfcPreDefinedItem::Name() const { return *data_->getArgument(0); }
void IfcPreDefinedItem::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcPreDefinedItem::declaration() const { return *IfcPreDefinedItem_type; }
Type::Enum IfcPreDefinedItem::Class() { return Type::IfcPreDefinedItem; }
IfcPreDefinedItem::IfcPreDefinedItem(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPreDefinedItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPreDefinedItem::IfcPreDefinedItem(std::string v1_Name) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedProperties


const IfcParse::entity& IfcPreDefinedProperties::declaration() const { return *IfcPreDefinedProperties_type; }
Type::Enum IfcPreDefinedProperties::Class() { return Type::IfcPreDefinedProperties; }
IfcPreDefinedProperties::IfcPreDefinedProperties(IfcAbstractEntity* e) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPreDefinedProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPreDefinedProperties::IfcPreDefinedProperties() : IfcPropertyAbstraction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedPropertySet


const IfcParse::entity& IfcPreDefinedPropertySet::declaration() const { return *IfcPreDefinedPropertySet_type; }
Type::Enum IfcPreDefinedPropertySet::Class() { return Type::IfcPreDefinedPropertySet; }
IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPreDefinedPropertySet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPreDefinedTextFont


const IfcParse::entity& IfcPreDefinedTextFont::declaration() const { return *IfcPreDefinedTextFont_type; }
Type::Enum IfcPreDefinedTextFont::Class() { return Type::IfcPreDefinedTextFont; }
IfcPreDefinedTextFont::IfcPreDefinedTextFont(IfcAbstractEntity* e) : IfcPreDefinedItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPreDefinedTextFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPreDefinedTextFont::IfcPreDefinedTextFont(std::string v1_Name) : IfcPreDefinedItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPresentationItem


const IfcParse::entity& IfcPresentationItem::declaration() const { return *IfcPresentationItem_type; }
Type::Enum IfcPresentationItem::Class() { return Type::IfcPresentationItem; }
IfcPresentationItem::IfcPresentationItem(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPresentationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPresentationLayerAssignment
std::string IfcPresentationLayerAssignment::Name() const { return *data_->getArgument(0); }
void IfcPresentationLayerAssignment::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcPresentationLayerAssignment::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcPresentationLayerAssignment::Description() const { return *data_->getArgument(1); }
void IfcPresentationLayerAssignment::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcEntityList::ptr IfcPresentationLayerAssignment::AssignedItems() const { return *data_->getArgument(2); }
void IfcPresentationLayerAssignment::setAssignedItems(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPresentationLayerAssignment::hasIdentifier() const { return !data_->getArgument(3)->isNull(); }
std::string IfcPresentationLayerAssignment::Identifier() const { return *data_->getArgument(3); }
void IfcPresentationLayerAssignment::setIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPresentationLayerAssignment::declaration() const { return *IfcPresentationLayerAssignment_type; }
Type::Enum IfcPresentationLayerAssignment::Class() { return Type::IfcPresentationLayerAssignment; }
IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPresentationLayerAssignment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AssignedItems)); if (v4_Identifier) { e->setArgument(3,(*v4_Identifier)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPresentationLayerWithStyle
boost::logic::tribool IfcPresentationLayerWithStyle::LayerOn() const { return *data_->getArgument(4); }
void IfcPresentationLayerWithStyle::setLayerOn(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
boost::logic::tribool IfcPresentationLayerWithStyle::LayerFrozen() const { return *data_->getArgument(5); }
void IfcPresentationLayerWithStyle::setLayerFrozen(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
boost::logic::tribool IfcPresentationLayerWithStyle::LayerBlocked() const { return *data_->getArgument(6); }
void IfcPresentationLayerWithStyle::setLayerBlocked(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcTemplatedEntityList< IfcPresentationStyle >::ptr IfcPresentationLayerWithStyle::LayerStyles() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcPresentationStyle>(); }
void IfcPresentationLayerWithStyle::setLayerStyles(IfcTemplatedEntityList< IfcPresentationStyle >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }


const IfcParse::entity& IfcPresentationLayerWithStyle::declaration() const { return *IfcPresentationLayerWithStyle_type; }
Type::Enum IfcPresentationLayerWithStyle::Class() { return Type::IfcPresentationLayerWithStyle; }
IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(IfcAbstractEntity* e) : IfcPresentationLayerAssignment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPresentationLayerWithStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, IfcTemplatedEntityList< IfcPresentationStyle >::ptr v8_LayerStyles) : IfcPresentationLayerAssignment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_AssignedItems)); if (v4_Identifier) { e->setArgument(3,(*v4_Identifier)); } else { e->setArgument(3); } e->setArgument(4,(v5_LayerOn)); e->setArgument(5,(v6_LayerFrozen)); e->setArgument(6,(v7_LayerBlocked)); e->setArgument(7,(v8_LayerStyles)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPresentationStyle
bool IfcPresentationStyle::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcPresentationStyle::Name() const { return *data_->getArgument(0); }
void IfcPresentationStyle::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcPresentationStyle::declaration() const { return *IfcPresentationStyle_type; }
Type::Enum IfcPresentationStyle::Class() { return Type::IfcPresentationStyle; }
IfcPresentationStyle::IfcPresentationStyle(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPresentationStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPresentationStyle::IfcPresentationStyle(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPresentationStyleAssignment
IfcEntityList::ptr IfcPresentationStyleAssignment::Styles() const { return *data_->getArgument(0); }
void IfcPresentationStyleAssignment::setStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcPresentationStyleAssignment::declaration() const { return *IfcPresentationStyleAssignment_type; }
Type::Enum IfcPresentationStyleAssignment::Class() { return Type::IfcPresentationStyleAssignment; }
IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPresentationStyleAssignment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(IfcEntityList::ptr v1_Styles) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Styles)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProcedure
bool IfcProcedure::hasPredefinedType() const { return !data_->getArgument(7)->isNull(); }
IfcProcedureTypeEnum::IfcProcedureTypeEnum IfcProcedure::PredefinedType() const { return IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); }
void IfcProcedure::setPredefinedType(IfcProcedureTypeEnum::IfcProcedureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcProcedureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProcedure::declaration() const { return *IfcProcedure_type; }
Type::Enum IfcProcedure::Class() { return Type::IfcProcedure; }
IfcProcedure::IfcProcedure(IfcAbstractEntity* e) : IfcProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProcedure)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProcedure::IfcProcedure(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< IfcProcedureTypeEnum::IfcProcedureTypeEnum > v8_PredefinedType) : IfcProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } if (v8_PredefinedType) { e->setArgument(7,*v8_PredefinedType,IfcProcedureTypeEnum::ToString(*v8_PredefinedType)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProcedureType
IfcProcedureTypeEnum::IfcProcedureTypeEnum IfcProcedureType::PredefinedType() const { return IfcProcedureTypeEnum::FromString(*data_->getArgument(9)); }
void IfcProcedureType::setPredefinedType(IfcProcedureTypeEnum::IfcProcedureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcProcedureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProcedureType::declaration() const { return *IfcProcedureType_type; }
Type::Enum IfcProcedureType::Class() { return Type::IfcProcedureType; }
IfcProcedureType::IfcProcedureType(IfcAbstractEntity* e) : IfcTypeProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProcedureType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, IfcProcedureTypeEnum::IfcProcedureTypeEnum v10_PredefinedType) : IfcTypeProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ProcessType) { e->setArgument(8,(*v9_ProcessType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcProcedureTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProcess
bool IfcProcess::hasIdentification() const { return !data_->getArgument(5)->isNull(); }
std::string IfcProcess::Identification() const { return *data_->getArgument(5); }
void IfcProcess::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcProcess::hasLongDescription() const { return !data_->getArgument(6)->isNull(); }
std::string IfcProcess::LongDescription() const { return *data_->getArgument(6); }
void IfcProcess::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcRelSequence::list::ptr IfcProcess::IsPredecessorTo() const { return data_->getInverse(Type::IfcRelSequence, 4)->as<IfcRelSequence>(); }
IfcRelSequence::list::ptr IfcProcess::IsSuccessorFrom() const { return data_->getInverse(Type::IfcRelSequence, 5)->as<IfcRelSequence>(); }
IfcRelAssignsToProcess::list::ptr IfcProcess::OperatesOn() const { return data_->getInverse(Type::IfcRelAssignsToProcess, 6)->as<IfcRelAssignsToProcess>(); }

const IfcParse::entity& IfcProcess::declaration() const { return *IfcProcess_type; }
Type::Enum IfcProcess::Class() { return Type::IfcProcess; }
IfcProcess::IfcProcess(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProcess)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProcess::IfcProcess(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProduct
bool IfcProduct::hasObjectPlacement() const { return !data_->getArgument(5)->isNull(); }
IfcObjectPlacement* IfcProduct::ObjectPlacement() const { return (IfcObjectPlacement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcProduct::setObjectPlacement(IfcObjectPlacement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcProduct::hasRepresentation() const { return !data_->getArgument(6)->isNull(); }
IfcProductRepresentation* IfcProduct::Representation() const { return (IfcProductRepresentation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcProduct::setRepresentation(IfcProductRepresentation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcRelAssignsToProduct::list::ptr IfcProduct::ReferencedBy() const { return data_->getInverse(Type::IfcRelAssignsToProduct, 6)->as<IfcRelAssignsToProduct>(); }

const IfcParse::entity& IfcProduct::declaration() const { return *IfcProduct_type; }
Type::Enum IfcProduct::Class() { return Type::IfcProduct; }
IfcProduct::IfcProduct(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProduct)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProduct::IfcProduct(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProductDefinitionShape

IfcProduct::list::ptr IfcProductDefinitionShape::ShapeOfProduct() const { return data_->getInverse(Type::IfcProduct, 6)->as<IfcProduct>(); }
IfcShapeAspect::list::ptr IfcProductDefinitionShape::HasShapeAspects() const { return data_->getInverse(Type::IfcShapeAspect, 4)->as<IfcShapeAspect>(); }

const IfcParse::entity& IfcProductDefinitionShape::declaration() const { return *IfcProductDefinitionShape_type; }
Type::Enum IfcProductDefinitionShape::Class() { return Type::IfcProductDefinitionShape; }
IfcProductDefinitionShape::IfcProductDefinitionShape(IfcAbstractEntity* e) : IfcProductRepresentation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProductDefinitionShape)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcRepresentation >::ptr v3_Representations) : IfcProductRepresentation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Representations)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProductRepresentation
bool IfcProductRepresentation::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcProductRepresentation::Name() const { return *data_->getArgument(0); }
void IfcProductRepresentation::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcProductRepresentation::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcProductRepresentation::Description() const { return *data_->getArgument(1); }
void IfcProductRepresentation::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTemplatedEntityList< IfcRepresentation >::ptr IfcProductRepresentation::Representations() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcRepresentation>(); }
void IfcProductRepresentation::setRepresentations(IfcTemplatedEntityList< IfcRepresentation >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcProductRepresentation::declaration() const { return *IfcProductRepresentation_type; }
Type::Enum IfcProductRepresentation::Class() { return Type::IfcProductRepresentation; }
IfcProductRepresentation::IfcProductRepresentation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcProductRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProductRepresentation::IfcProductRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcRepresentation >::ptr v3_Representations) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Representations)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProfileDef
IfcProfileTypeEnum::IfcProfileTypeEnum IfcProfileDef::ProfileType() const { return IfcProfileTypeEnum::FromString(*data_->getArgument(0)); }
void IfcProfileDef::setProfileType(IfcProfileTypeEnum::IfcProfileTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcProfileTypeEnum::ToString(v)); }
bool IfcProfileDef::hasProfileName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcProfileDef::ProfileName() const { return *data_->getArgument(1); }
void IfcProfileDef::setProfileName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcExternalReferenceRelationship::list::ptr IfcProfileDef::HasExternalReference() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }
IfcProfileProperties::list::ptr IfcProfileDef::HasProperties() const { return data_->getInverse(Type::IfcProfileProperties, 3)->as<IfcProfileProperties>(); }

const IfcParse::entity& IfcProfileDef::declaration() const { return *IfcProfileDef_type; }
Type::Enum IfcProfileDef::Class() { return Type::IfcProfileDef; }
IfcProfileDef::IfcProfileDef(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProfileDef::IfcProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProfileProperties
IfcProfileDef* IfcProfileProperties::ProfileDefinition() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcProfileProperties::setProfileDefinition(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcProfileProperties::declaration() const { return *IfcProfileProperties_type; }
Type::Enum IfcProfileProperties::Class() { return Type::IfcProfileProperties; }
IfcProfileProperties::IfcProfileProperties(IfcAbstractEntity* e) : IfcExtendedProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProfileProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProfileProperties::IfcProfileProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcTemplatedEntityList< IfcProperty >::ptr v3_Properties, IfcProfileDef* v4_ProfileDefinition) : IfcExtendedProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Properties)->generalize()); e->setArgument(3,(v4_ProfileDefinition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProject


const IfcParse::entity& IfcProject::declaration() const { return *IfcProject_type; }
Type::Enum IfcProject::Class() { return Type::IfcProject; }
IfcProject::IfcProject(IfcAbstractEntity* e) : IfcContext((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProject)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProject::IfcProject(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< IfcTemplatedEntityList< IfcRepresentationContext >::ptr > v8_RepresentationContexts, IfcUnitAssignment* v9_UnitsInContext) : IfcContext((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } if (v7_Phase) { e->setArgument(6,(*v7_Phase)); } else { e->setArgument(6); } if (v8_RepresentationContexts) { e->setArgument(7,(*v8_RepresentationContexts)->generalize()); } else { e->setArgument(7); } e->setArgument(8,(v9_UnitsInContext)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProjectLibrary


const IfcParse::entity& IfcProjectLibrary::declaration() const { return *IfcProjectLibrary_type; }
Type::Enum IfcProjectLibrary::Class() { return Type::IfcProjectLibrary; }
IfcProjectLibrary::IfcProjectLibrary(IfcAbstractEntity* e) : IfcContext((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProjectLibrary)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName, boost::optional< std::string > v7_Phase, boost::optional< IfcTemplatedEntityList< IfcRepresentationContext >::ptr > v8_RepresentationContexts, IfcUnitAssignment* v9_UnitsInContext) : IfcContext((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } if (v7_Phase) { e->setArgument(6,(*v7_Phase)); } else { e->setArgument(6); } if (v8_RepresentationContexts) { e->setArgument(7,(*v8_RepresentationContexts)->generalize()); } else { e->setArgument(7); } e->setArgument(8,(v9_UnitsInContext)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProjectOrder
bool IfcProjectOrder::hasPredefinedType() const { return !data_->getArgument(6)->isNull(); }
IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum IfcProjectOrder::PredefinedType() const { return IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); }
void IfcProjectOrder::setPredefinedType(IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcProjectOrderTypeEnum::ToString(v)); }
bool IfcProjectOrder::hasStatus() const { return !data_->getArgument(7)->isNull(); }
std::string IfcProjectOrder::Status() const { return *data_->getArgument(7); }
void IfcProjectOrder::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcProjectOrder::hasLongDescription() const { return !data_->getArgument(8)->isNull(); }
std::string IfcProjectOrder::LongDescription() const { return *data_->getArgument(8); }
void IfcProjectOrder::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcProjectOrder::declaration() const { return *IfcProjectOrder_type; }
Type::Enum IfcProjectOrder::Class() { return Type::IfcProjectOrder; }
IfcProjectOrder::IfcProjectOrder(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProjectOrder)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_PredefinedType) { e->setArgument(6,*v7_PredefinedType,IfcProjectOrderTypeEnum::ToString(*v7_PredefinedType)); } else { e->setArgument(6); } if (v8_Status) { e->setArgument(7,(*v8_Status)); } else { e->setArgument(7); } if (v9_LongDescription) { e->setArgument(8,(*v9_LongDescription)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProjectedCRS
bool IfcProjectedCRS::hasMapProjection() const { return !data_->getArgument(4)->isNull(); }
std::string IfcProjectedCRS::MapProjection() const { return *data_->getArgument(4); }
void IfcProjectedCRS::setMapProjection(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcProjectedCRS::hasMapZone() const { return !data_->getArgument(5)->isNull(); }
std::string IfcProjectedCRS::MapZone() const { return *data_->getArgument(5); }
void IfcProjectedCRS::setMapZone(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcProjectedCRS::hasMapUnit() const { return !data_->getArgument(6)->isNull(); }
IfcNamedUnit* IfcProjectedCRS::MapUnit() const { return (IfcNamedUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcProjectedCRS::setMapUnit(IfcNamedUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcProjectedCRS::declaration() const { return *IfcProjectedCRS_type; }
Type::Enum IfcProjectedCRS::Class() { return Type::IfcProjectedCRS; }
IfcProjectedCRS::IfcProjectedCRS(IfcAbstractEntity* e) : IfcCoordinateReferenceSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProjectedCRS)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProjectedCRS::IfcProjectedCRS(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_GeodeticDatum, boost::optional< std::string > v4_VerticalDatum, boost::optional< std::string > v5_MapProjection, boost::optional< std::string > v6_MapZone, IfcNamedUnit* v7_MapUnit) : IfcCoordinateReferenceSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_GeodeticDatum) { e->setArgument(2,(*v3_GeodeticDatum)); } else { e->setArgument(2); } if (v4_VerticalDatum) { e->setArgument(3,(*v4_VerticalDatum)); } else { e->setArgument(3); } if (v5_MapProjection) { e->setArgument(4,(*v5_MapProjection)); } else { e->setArgument(4); } if (v6_MapZone) { e->setArgument(5,(*v6_MapZone)); } else { e->setArgument(5); } e->setArgument(6,(v7_MapUnit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProjectionElement
bool IfcProjectionElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum IfcProjectionElement::PredefinedType() const { return IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcProjectionElement::setPredefinedType(IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcProjectionElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProjectionElement::declaration() const { return *IfcProjectionElement_type; }
Type::Enum IfcProjectionElement::Class() { return Type::IfcProjectionElement; }
IfcProjectionElement::IfcProjectionElement(IfcAbstractEntity* e) : IfcFeatureElementAddition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProjectionElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum > v9_PredefinedType) : IfcFeatureElementAddition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcProjectionElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProperty
std::string IfcProperty::Name() const { return *data_->getArgument(0); }
void IfcProperty::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcProperty::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcProperty::Description() const { return *data_->getArgument(1); }
void IfcProperty::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcPropertySet::list::ptr IfcProperty::PartOfPset() const { return data_->getInverse(Type::IfcPropertySet, 4)->as<IfcPropertySet>(); }
IfcPropertyDependencyRelationship::list::ptr IfcProperty::PropertyForDependance() const { return data_->getInverse(Type::IfcPropertyDependencyRelationship, 2)->as<IfcPropertyDependencyRelationship>(); }
IfcPropertyDependencyRelationship::list::ptr IfcProperty::PropertyDependsOn() const { return data_->getInverse(Type::IfcPropertyDependencyRelationship, 3)->as<IfcPropertyDependencyRelationship>(); }
IfcComplexProperty::list::ptr IfcProperty::PartOfComplex() const { return data_->getInverse(Type::IfcComplexProperty, 3)->as<IfcComplexProperty>(); }
IfcResourceConstraintRelationship::list::ptr IfcProperty::HasConstraints() const { return data_->getInverse(Type::IfcResourceConstraintRelationship, 3)->as<IfcResourceConstraintRelationship>(); }
IfcResourceApprovalRelationship::list::ptr IfcProperty::HasApprovals() const { return data_->getInverse(Type::IfcResourceApprovalRelationship, 2)->as<IfcResourceApprovalRelationship>(); }

const IfcParse::entity& IfcProperty::declaration() const { return *IfcProperty_type; }
Type::Enum IfcProperty::Class() { return Type::IfcProperty; }
IfcProperty::IfcProperty(IfcAbstractEntity* e) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProperty)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProperty::IfcProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyAbstraction

IfcExternalReferenceRelationship::list::ptr IfcPropertyAbstraction::HasExternalReferences() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcPropertyAbstraction::declaration() const { return *IfcPropertyAbstraction_type; }
Type::Enum IfcPropertyAbstraction::Class() { return Type::IfcPropertyAbstraction; }
IfcPropertyAbstraction::IfcPropertyAbstraction(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcPropertyAbstraction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyAbstraction::IfcPropertyAbstraction() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyBoundedValue
bool IfcPropertyBoundedValue::hasUpperBoundValue() const { return !data_->getArgument(2)->isNull(); }
IfcValue* IfcPropertyBoundedValue::UpperBoundValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertyBoundedValue::setUpperBoundValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyBoundedValue::hasLowerBoundValue() const { return !data_->getArgument(3)->isNull(); }
IfcValue* IfcPropertyBoundedValue::LowerBoundValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyBoundedValue::setLowerBoundValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPropertyBoundedValue::hasUnit() const { return !data_->getArgument(4)->isNull(); }
IfcUnit* IfcPropertyBoundedValue::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcPropertyBoundedValue::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPropertyBoundedValue::hasSetPointValue() const { return !data_->getArgument(5)->isNull(); }
IfcValue* IfcPropertyBoundedValue::SetPointValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcPropertyBoundedValue::setSetPointValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcPropertyBoundedValue::declaration() const { return *IfcPropertyBoundedValue_type; }
Type::Enum IfcPropertyBoundedValue::Class() { return Type::IfcPropertyBoundedValue; }
IfcPropertyBoundedValue::IfcPropertyBoundedValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyBoundedValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyBoundedValue::IfcPropertyBoundedValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcValue* v3_UpperBoundValue, IfcValue* v4_LowerBoundValue, IfcUnit* v5_Unit, IfcValue* v6_SetPointValue) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_UpperBoundValue)); e->setArgument(3,(v4_LowerBoundValue)); e->setArgument(4,(v5_Unit)); e->setArgument(5,(v6_SetPointValue)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyDefinition

IfcRelDeclares::list::ptr IfcPropertyDefinition::HasContext() const { return data_->getInverse(Type::IfcRelDeclares, 5)->as<IfcRelDeclares>(); }
IfcRelAssociates::list::ptr IfcPropertyDefinition::HasAssociations() const { return data_->getInverse(Type::IfcRelAssociates, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& IfcPropertyDefinition::declaration() const { return *IfcPropertyDefinition_type; }
Type::Enum IfcPropertyDefinition::Class() { return Type::IfcPropertyDefinition; }
IfcPropertyDefinition::IfcPropertyDefinition(IfcAbstractEntity* e) : IfcRoot((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyDefinition::IfcPropertyDefinition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyDependencyRelationship
IfcProperty* IfcPropertyDependencyRelationship::DependingProperty() const { return (IfcProperty*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertyDependencyRelationship::setDependingProperty(IfcProperty* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcProperty* IfcPropertyDependencyRelationship::DependantProperty() const { return (IfcProperty*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyDependencyRelationship::setDependantProperty(IfcProperty* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPropertyDependencyRelationship::hasExpression() const { return !data_->getArgument(4)->isNull(); }
std::string IfcPropertyDependencyRelationship::Expression() const { return *data_->getArgument(4); }
void IfcPropertyDependencyRelationship::setExpression(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcPropertyDependencyRelationship::declaration() const { return *IfcPropertyDependencyRelationship_type; }
Type::Enum IfcPropertyDependencyRelationship::Class() { return Type::IfcPropertyDependencyRelationship; }
IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyDependencyRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcProperty* v3_DependingProperty, IfcProperty* v4_DependantProperty, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_DependingProperty)); e->setArgument(3,(v4_DependantProperty)); if (v5_Expression) { e->setArgument(4,(*v5_Expression)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyEnumeratedValue
bool IfcPropertyEnumeratedValue::hasEnumerationValues() const { return !data_->getArgument(2)->isNull(); }
IfcEntityList::ptr IfcPropertyEnumeratedValue::EnumerationValues() const { return *data_->getArgument(2); }
void IfcPropertyEnumeratedValue::setEnumerationValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyEnumeratedValue::hasEnumerationReference() const { return !data_->getArgument(3)->isNull(); }
IfcPropertyEnumeration* IfcPropertyEnumeratedValue::EnumerationReference() const { return (IfcPropertyEnumeration*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyEnumeratedValue::setEnumerationReference(IfcPropertyEnumeration* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyEnumeratedValue::declaration() const { return *IfcPropertyEnumeratedValue_type; }
Type::Enum IfcPropertyEnumeratedValue::Class() { return Type::IfcPropertyEnumeratedValue; }
IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyEnumeratedValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcEntityList::ptr > v3_EnumerationValues, IfcPropertyEnumeration* v4_EnumerationReference) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_EnumerationValues) { e->setArgument(2,(*v3_EnumerationValues)); } else { e->setArgument(2); } e->setArgument(3,(v4_EnumerationReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyEnumeration
std::string IfcPropertyEnumeration::Name() const { return *data_->getArgument(0); }
void IfcPropertyEnumeration::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcPropertyEnumeration::EnumerationValues() const { return *data_->getArgument(1); }
void IfcPropertyEnumeration::setEnumerationValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcPropertyEnumeration::hasUnit() const { return !data_->getArgument(2)->isNull(); }
IfcUnit* IfcPropertyEnumeration::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertyEnumeration::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcPropertyEnumeration::declaration() const { return *IfcPropertyEnumeration_type; }
Type::Enum IfcPropertyEnumeration::Class() { return Type::IfcPropertyEnumeration; }
IfcPropertyEnumeration::IfcPropertyEnumeration(IfcAbstractEntity* e) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyEnumeration)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, IfcEntityList::ptr v2_EnumerationValues, IfcUnit* v3_Unit) : IfcPropertyAbstraction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); e->setArgument(1,(v2_EnumerationValues)); e->setArgument(2,(v3_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyListValue
bool IfcPropertyListValue::hasListValues() const { return !data_->getArgument(2)->isNull(); }
IfcEntityList::ptr IfcPropertyListValue::ListValues() const { return *data_->getArgument(2); }
void IfcPropertyListValue::setListValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyListValue::hasUnit() const { return !data_->getArgument(3)->isNull(); }
IfcUnit* IfcPropertyListValue::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyListValue::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyListValue::declaration() const { return *IfcPropertyListValue_type; }
Type::Enum IfcPropertyListValue::Class() { return Type::IfcPropertyListValue; }
IfcPropertyListValue::IfcPropertyListValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyListValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcEntityList::ptr > v3_ListValues, IfcUnit* v4_Unit) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_ListValues) { e->setArgument(2,(*v3_ListValues)); } else { e->setArgument(2); } e->setArgument(3,(v4_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyReferenceValue
bool IfcPropertyReferenceValue::hasUsageName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcPropertyReferenceValue::UsageName() const { return *data_->getArgument(2); }
void IfcPropertyReferenceValue::setUsageName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyReferenceValue::hasPropertyReference() const { return !data_->getArgument(3)->isNull(); }
IfcObjectReferenceSelect* IfcPropertyReferenceValue::PropertyReference() const { return (IfcObjectReferenceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertyReferenceValue::setPropertyReference(IfcObjectReferenceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertyReferenceValue::declaration() const { return *IfcPropertyReferenceValue_type; }
Type::Enum IfcPropertyReferenceValue::Class() { return Type::IfcPropertyReferenceValue; }
IfcPropertyReferenceValue::IfcPropertyReferenceValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyReferenceValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyReferenceValue::IfcPropertyReferenceValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UsageName, IfcObjectReferenceSelect* v4_PropertyReference) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UsageName) { e->setArgument(2,(*v3_UsageName)); } else { e->setArgument(2); } e->setArgument(3,(v4_PropertyReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySet
IfcTemplatedEntityList< IfcProperty >::ptr IfcPropertySet::HasProperties() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcProperty>(); }
void IfcPropertySet::setHasProperties(IfcTemplatedEntityList< IfcProperty >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }


const IfcParse::entity& IfcPropertySet::declaration() const { return *IfcPropertySet_type; }
Type::Enum IfcPropertySet::Class() { return Type::IfcPropertySet; }
IfcPropertySet::IfcPropertySet(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySet::IfcPropertySet(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcProperty >::ptr v5_HasProperties) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_HasProperties)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySetDefinition

IfcTypeObject::list::ptr IfcPropertySetDefinition::DefinesType() const { return data_->getInverse(Type::IfcTypeObject, 5)->as<IfcTypeObject>(); }
IfcRelDefinesByTemplate::list::ptr IfcPropertySetDefinition::IsDefinedBy() const { return data_->getInverse(Type::IfcRelDefinesByTemplate, 4)->as<IfcRelDefinesByTemplate>(); }
IfcRelDefinesByProperties::list::ptr IfcPropertySetDefinition::DefinesOccurrence() const { return data_->getInverse(Type::IfcRelDefinesByProperties, 5)->as<IfcRelDefinesByProperties>(); }

const IfcParse::entity& IfcPropertySetDefinition::declaration() const { return *IfcPropertySetDefinition_type; }
Type::Enum IfcPropertySetDefinition::Class() { return Type::IfcPropertySetDefinition; }
IfcPropertySetDefinition::IfcPropertySetDefinition(IfcAbstractEntity* e) : IfcPropertyDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySetDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySetTemplate
bool IfcPropertySetTemplate::hasTemplateType() const { return !data_->getArgument(4)->isNull(); }
IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum IfcPropertySetTemplate::TemplateType() const { return IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); }
void IfcPropertySetTemplate::setTemplateType(IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcPropertySetTemplateTypeEnum::ToString(v)); }
bool IfcPropertySetTemplate::hasApplicableEntity() const { return !data_->getArgument(5)->isNull(); }
std::string IfcPropertySetTemplate::ApplicableEntity() const { return *data_->getArgument(5); }
void IfcPropertySetTemplate::setApplicableEntity(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcTemplatedEntityList< IfcPropertyTemplate >::ptr IfcPropertySetTemplate::HasPropertyTemplates() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcPropertyTemplate>(); }
void IfcPropertySetTemplate::setHasPropertyTemplates(IfcTemplatedEntityList< IfcPropertyTemplate >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }

IfcRelDefinesByTemplate::list::ptr IfcPropertySetTemplate::Defines() const { return data_->getInverse(Type::IfcRelDefinesByTemplate, 5)->as<IfcRelDefinesByTemplate>(); }

const IfcParse::entity& IfcPropertySetTemplate::declaration() const { return *IfcPropertySetTemplate_type; }
Type::Enum IfcPropertySetTemplate::Class() { return Type::IfcPropertySetTemplate; }
IfcPropertySetTemplate::IfcPropertySetTemplate(IfcAbstractEntity* e) : IfcPropertyTemplateDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySetTemplate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySetTemplate::IfcPropertySetTemplate(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum > v5_TemplateType, boost::optional< std::string > v6_ApplicableEntity, IfcTemplatedEntityList< IfcPropertyTemplate >::ptr v7_HasPropertyTemplates) : IfcPropertyTemplateDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_TemplateType) { e->setArgument(4,*v5_TemplateType,IfcPropertySetTemplateTypeEnum::ToString(*v5_TemplateType)); } else { e->setArgument(4); } if (v6_ApplicableEntity) { e->setArgument(5,(*v6_ApplicableEntity)); } else { e->setArgument(5); } e->setArgument(6,(v7_HasPropertyTemplates)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertySingleValue
bool IfcPropertySingleValue::hasNominalValue() const { return !data_->getArgument(2)->isNull(); }
IfcValue* IfcPropertySingleValue::NominalValue() const { return (IfcValue*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcPropertySingleValue::setNominalValue(IfcValue* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertySingleValue::hasUnit() const { return !data_->getArgument(3)->isNull(); }
IfcUnit* IfcPropertySingleValue::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcPropertySingleValue::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcPropertySingleValue::declaration() const { return *IfcPropertySingleValue_type; }
Type::Enum IfcPropertySingleValue::Class() { return Type::IfcPropertySingleValue; }
IfcPropertySingleValue::IfcPropertySingleValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertySingleValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boost::optional< std::string > v2_Description, IfcValue* v3_NominalValue, IfcUnit* v4_Unit) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_NominalValue)); e->setArgument(3,(v4_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyTableValue
bool IfcPropertyTableValue::hasDefiningValues() const { return !data_->getArgument(2)->isNull(); }
IfcEntityList::ptr IfcPropertyTableValue::DefiningValues() const { return *data_->getArgument(2); }
void IfcPropertyTableValue::setDefiningValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcPropertyTableValue::hasDefinedValues() const { return !data_->getArgument(3)->isNull(); }
IfcEntityList::ptr IfcPropertyTableValue::DefinedValues() const { return *data_->getArgument(3); }
void IfcPropertyTableValue::setDefinedValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcPropertyTableValue::hasExpression() const { return !data_->getArgument(4)->isNull(); }
std::string IfcPropertyTableValue::Expression() const { return *data_->getArgument(4); }
void IfcPropertyTableValue::setExpression(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcPropertyTableValue::hasDefiningUnit() const { return !data_->getArgument(5)->isNull(); }
IfcUnit* IfcPropertyTableValue::DefiningUnit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcPropertyTableValue::setDefiningUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcPropertyTableValue::hasDefinedUnit() const { return !data_->getArgument(6)->isNull(); }
IfcUnit* IfcPropertyTableValue::DefinedUnit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcPropertyTableValue::setDefinedUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcPropertyTableValue::hasCurveInterpolation() const { return !data_->getArgument(7)->isNull(); }
IfcCurveInterpolationEnum::IfcCurveInterpolationEnum IfcPropertyTableValue::CurveInterpolation() const { return IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); }
void IfcPropertyTableValue::setCurveInterpolation(IfcCurveInterpolationEnum::IfcCurveInterpolationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcCurveInterpolationEnum::ToString(v)); }


const IfcParse::entity& IfcPropertyTableValue::declaration() const { return *IfcPropertyTableValue_type; }
Type::Enum IfcPropertyTableValue::Class() { return Type::IfcPropertyTableValue; }
IfcPropertyTableValue::IfcPropertyTableValue(IfcAbstractEntity* e) : IfcSimpleProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyTableValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyTableValue::IfcPropertyTableValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< IfcEntityList::ptr > v3_DefiningValues, boost::optional< IfcEntityList::ptr > v4_DefinedValues, boost::optional< std::string > v5_Expression, IfcUnit* v6_DefiningUnit, IfcUnit* v7_DefinedUnit, boost::optional< IfcCurveInterpolationEnum::IfcCurveInterpolationEnum > v8_CurveInterpolation) : IfcSimpleProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_DefiningValues) { e->setArgument(2,(*v3_DefiningValues)); } else { e->setArgument(2); } if (v4_DefinedValues) { e->setArgument(3,(*v4_DefinedValues)); } else { e->setArgument(3); } if (v5_Expression) { e->setArgument(4,(*v5_Expression)); } else { e->setArgument(4); } e->setArgument(5,(v6_DefiningUnit)); e->setArgument(6,(v7_DefinedUnit)); if (v8_CurveInterpolation) { e->setArgument(7,*v8_CurveInterpolation,IfcCurveInterpolationEnum::ToString(*v8_CurveInterpolation)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyTemplate

IfcComplexPropertyTemplate::list::ptr IfcPropertyTemplate::PartOfComplexTemplate() const { return data_->getInverse(Type::IfcComplexPropertyTemplate, 6)->as<IfcComplexPropertyTemplate>(); }
IfcPropertySetTemplate::list::ptr IfcPropertyTemplate::PartOfPsetTemplate() const { return data_->getInverse(Type::IfcPropertySetTemplate, 6)->as<IfcPropertySetTemplate>(); }

const IfcParse::entity& IfcPropertyTemplate::declaration() const { return *IfcPropertyTemplate_type; }
Type::Enum IfcPropertyTemplate::Class() { return Type::IfcPropertyTemplate; }
IfcPropertyTemplate::IfcPropertyTemplate(IfcAbstractEntity* e) : IfcPropertyTemplateDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyTemplate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyTemplate::IfcPropertyTemplate(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyTemplateDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPropertyTemplateDefinition


const IfcParse::entity& IfcPropertyTemplateDefinition::declaration() const { return *IfcPropertyTemplateDefinition_type; }
Type::Enum IfcPropertyTemplateDefinition::Class() { return Type::IfcPropertyTemplateDefinition; }
IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(IfcAbstractEntity* e) : IfcPropertyDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPropertyTemplateDefinition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProtectiveDevice
bool IfcProtectiveDevice::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum IfcProtectiveDevice::PredefinedType() const { return IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcProtectiveDevice::setPredefinedType(IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcProtectiveDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProtectiveDevice::declaration() const { return *IfcProtectiveDevice_type; }
Type::Enum IfcProtectiveDevice::Class() { return Type::IfcProtectiveDevice; }
IfcProtectiveDevice::IfcProtectiveDevice(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProtectiveDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcProtectiveDeviceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProtectiveDeviceTrippingUnit
bool IfcProtectiveDeviceTrippingUnit::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum IfcProtectiveDeviceTrippingUnit::PredefinedType() const { return IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); }
void IfcProtectiveDeviceTrippingUnit::setPredefinedType(IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProtectiveDeviceTrippingUnit::declaration() const { return *IfcProtectiveDeviceTrippingUnit_type; }
Type::Enum IfcProtectiveDeviceTrippingUnit::Class() { return Type::IfcProtectiveDeviceTrippingUnit; }
IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProtectiveDeviceTrippingUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProtectiveDeviceTrippingUnitType
IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum IfcProtectiveDeviceTrippingUnitType::PredefinedType() const { return IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(9)); }
void IfcProtectiveDeviceTrippingUnitType::setPredefinedType(IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProtectiveDeviceTrippingUnitType::declaration() const { return *IfcProtectiveDeviceTrippingUnitType_type; }
Type::Enum IfcProtectiveDeviceTrippingUnitType::Class() { return Type::IfcProtectiveDeviceTrippingUnitType; }
IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProtectiveDeviceTrippingUnitType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProtectiveDeviceType
IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum IfcProtectiveDeviceType::PredefinedType() const { return IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcProtectiveDeviceType::setPredefinedType(IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcProtectiveDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcProtectiveDeviceType::declaration() const { return *IfcProtectiveDeviceType_type; }
Type::Enum IfcProtectiveDeviceType::Class() { return Type::IfcProtectiveDeviceType; }
IfcProtectiveDeviceType::IfcProtectiveDeviceType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProtectiveDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcProtectiveDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcProxy
IfcObjectTypeEnum::IfcObjectTypeEnum IfcProxy::ProxyType() const { return IfcObjectTypeEnum::FromString(*data_->getArgument(7)); }
void IfcProxy::setProxyType(IfcObjectTypeEnum::IfcObjectTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcObjectTypeEnum::ToString(v)); }
bool IfcProxy::hasTag() const { return !data_->getArgument(8)->isNull(); }
std::string IfcProxy::Tag() const { return *data_->getArgument(8); }
void IfcProxy::setTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcProxy::declaration() const { return *IfcProxy_type; }
Type::Enum IfcProxy::Class() { return Type::IfcProxy; }
IfcProxy::IfcProxy(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcProxy)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcProxy::IfcProxy(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcObjectTypeEnum::IfcObjectTypeEnum v8_ProxyType, boost::optional< std::string > v9_Tag) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_ProxyType,IfcObjectTypeEnum::ToString(v8_ProxyType)); if (v9_Tag) { e->setArgument(8,(*v9_Tag)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPump
bool IfcPump::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcPumpTypeEnum::IfcPumpTypeEnum IfcPump::PredefinedType() const { return IfcPumpTypeEnum::FromString(*data_->getArgument(8)); }
void IfcPump::setPredefinedType(IfcPumpTypeEnum::IfcPumpTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcPumpTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPump::declaration() const { return *IfcPump_type; }
Type::Enum IfcPump::Class() { return Type::IfcPump; }
IfcPump::IfcPump(IfcAbstractEntity* e) : IfcFlowMovingDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPump)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPump::IfcPump(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcPumpTypeEnum::IfcPumpTypeEnum > v9_PredefinedType) : IfcFlowMovingDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcPumpTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcPumpType
IfcPumpTypeEnum::IfcPumpTypeEnum IfcPumpType::PredefinedType() const { return IfcPumpTypeEnum::FromString(*data_->getArgument(9)); }
void IfcPumpType::setPredefinedType(IfcPumpTypeEnum::IfcPumpTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcPumpTypeEnum::ToString(v)); }


const IfcParse::entity& IfcPumpType::declaration() const { return *IfcPumpType_type; }
Type::Enum IfcPumpType::Class() { return Type::IfcPumpType; }
IfcPumpType::IfcPumpType(IfcAbstractEntity* e) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcPumpType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcPumpType::IfcPumpType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcPumpTypeEnum::IfcPumpTypeEnum v10_PredefinedType) : IfcFlowMovingDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcPumpTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityArea
double IfcQuantityArea::AreaValue() const { return *data_->getArgument(3); }
void IfcQuantityArea::setAreaValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcQuantityArea::hasFormula() const { return !data_->getArgument(4)->isNull(); }
std::string IfcQuantityArea::Formula() const { return *data_->getArgument(4); }
void IfcQuantityArea::setFormula(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcQuantityArea::declaration() const { return *IfcQuantityArea_type; }
Type::Enum IfcQuantityArea::Class() { return Type::IfcQuantityArea; }
IfcQuantityArea::IfcQuantityArea(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityArea)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_AreaValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_AreaValue)); if (v5_Formula) { e->setArgument(4,(*v5_Formula)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityCount
double IfcQuantityCount::CountValue() const { return *data_->getArgument(3); }
void IfcQuantityCount::setCountValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcQuantityCount::hasFormula() const { return !data_->getArgument(4)->isNull(); }
std::string IfcQuantityCount::Formula() const { return *data_->getArgument(4); }
void IfcQuantityCount::setFormula(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcQuantityCount::declaration() const { return *IfcQuantityCount_type; }
Type::Enum IfcQuantityCount::Class() { return Type::IfcQuantityCount; }
IfcQuantityCount::IfcQuantityCount(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityCount)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_CountValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_CountValue)); if (v5_Formula) { e->setArgument(4,(*v5_Formula)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityLength
double IfcQuantityLength::LengthValue() const { return *data_->getArgument(3); }
void IfcQuantityLength::setLengthValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcQuantityLength::hasFormula() const { return !data_->getArgument(4)->isNull(); }
std::string IfcQuantityLength::Formula() const { return *data_->getArgument(4); }
void IfcQuantityLength::setFormula(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcQuantityLength::declaration() const { return *IfcQuantityLength_type; }
Type::Enum IfcQuantityLength::Class() { return Type::IfcQuantityLength; }
IfcQuantityLength::IfcQuantityLength(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityLength)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityLength::IfcQuantityLength(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_LengthValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_LengthValue)); if (v5_Formula) { e->setArgument(4,(*v5_Formula)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantitySet


const IfcParse::entity& IfcQuantitySet::declaration() const { return *IfcQuantitySet_type; }
Type::Enum IfcQuantitySet::Class() { return Type::IfcQuantitySet; }
IfcQuantitySet::IfcQuantitySet(IfcAbstractEntity* e) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantitySet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityTime
double IfcQuantityTime::TimeValue() const { return *data_->getArgument(3); }
void IfcQuantityTime::setTimeValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcQuantityTime::hasFormula() const { return !data_->getArgument(4)->isNull(); }
std::string IfcQuantityTime::Formula() const { return *data_->getArgument(4); }
void IfcQuantityTime::setFormula(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcQuantityTime::declaration() const { return *IfcQuantityTime_type; }
Type::Enum IfcQuantityTime::Class() { return Type::IfcQuantityTime; }
IfcQuantityTime::IfcQuantityTime(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_TimeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_TimeValue)); if (v5_Formula) { e->setArgument(4,(*v5_Formula)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityVolume
double IfcQuantityVolume::VolumeValue() const { return *data_->getArgument(3); }
void IfcQuantityVolume::setVolumeValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcQuantityVolume::hasFormula() const { return !data_->getArgument(4)->isNull(); }
std::string IfcQuantityVolume::Formula() const { return *data_->getArgument(4); }
void IfcQuantityVolume::setFormula(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcQuantityVolume::declaration() const { return *IfcQuantityVolume_type; }
Type::Enum IfcQuantityVolume::Class() { return Type::IfcQuantityVolume; }
IfcQuantityVolume::IfcQuantityVolume(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityVolume)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_VolumeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_VolumeValue)); if (v5_Formula) { e->setArgument(4,(*v5_Formula)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcQuantityWeight
double IfcQuantityWeight::WeightValue() const { return *data_->getArgument(3); }
void IfcQuantityWeight::setWeightValue(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcQuantityWeight::hasFormula() const { return !data_->getArgument(4)->isNull(); }
std::string IfcQuantityWeight::Formula() const { return *data_->getArgument(4); }
void IfcQuantityWeight::setFormula(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcQuantityWeight::declaration() const { return *IfcQuantityWeight_type; }
Type::Enum IfcQuantityWeight::Class() { return Type::IfcQuantityWeight; }
IfcQuantityWeight::IfcQuantityWeight(IfcAbstractEntity* e) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcQuantityWeight)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optional< std::string > v2_Description, IfcNamedUnit* v3_Unit, double v4_WeightValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_Unit)); e->setArgument(3,(v4_WeightValue)); if (v5_Formula) { e->setArgument(4,(*v5_Formula)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRailing
bool IfcRailing::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcRailingTypeEnum::IfcRailingTypeEnum IfcRailing::PredefinedType() const { return IfcRailingTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRailing::setPredefinedType(IfcRailingTypeEnum::IfcRailingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRailingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRailing::declaration() const { return *IfcRailing_type; }
Type::Enum IfcRailing::Class() { return Type::IfcRailing; }
IfcRailing::IfcRailing(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRailing)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRailing::IfcRailing(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcRailingTypeEnum::IfcRailingTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcRailingTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRailingType
IfcRailingTypeEnum::IfcRailingTypeEnum IfcRailingType::PredefinedType() const { return IfcRailingTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRailingType::setPredefinedType(IfcRailingTypeEnum::IfcRailingTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcRailingTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRailingType::declaration() const { return *IfcRailingType_type; }
Type::Enum IfcRailingType::Class() { return Type::IfcRailingType; }
IfcRailingType::IfcRailingType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRailingType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRailingType::IfcRailingType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcRailingTypeEnum::IfcRailingTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcRailingTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRamp
bool IfcRamp::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcRampTypeEnum::IfcRampTypeEnum IfcRamp::PredefinedType() const { return IfcRampTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRamp::setPredefinedType(IfcRampTypeEnum::IfcRampTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRampTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRamp::declaration() const { return *IfcRamp_type; }
Type::Enum IfcRamp::Class() { return Type::IfcRamp; }
IfcRamp::IfcRamp(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRamp)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRamp::IfcRamp(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcRampTypeEnum::IfcRampTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcRampTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRampFlight
bool IfcRampFlight::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcRampFlightTypeEnum::IfcRampFlightTypeEnum IfcRampFlight::PredefinedType() const { return IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRampFlight::setPredefinedType(IfcRampFlightTypeEnum::IfcRampFlightTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRampFlightTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRampFlight::declaration() const { return *IfcRampFlight_type; }
Type::Enum IfcRampFlight::Class() { return Type::IfcRampFlight; }
IfcRampFlight::IfcRampFlight(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRampFlight)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRampFlight::IfcRampFlight(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcRampFlightTypeEnum::IfcRampFlightTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcRampFlightTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRampFlightType
IfcRampFlightTypeEnum::IfcRampFlightTypeEnum IfcRampFlightType::PredefinedType() const { return IfcRampFlightTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRampFlightType::setPredefinedType(IfcRampFlightTypeEnum::IfcRampFlightTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcRampFlightTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRampFlightType::declaration() const { return *IfcRampFlightType_type; }
Type::Enum IfcRampFlightType::Class() { return Type::IfcRampFlightType; }
IfcRampFlightType::IfcRampFlightType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRampFlightType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRampFlightType::IfcRampFlightType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcRampFlightTypeEnum::IfcRampFlightTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcRampFlightTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRampType
IfcRampTypeEnum::IfcRampTypeEnum IfcRampType::PredefinedType() const { return IfcRampTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRampType::setPredefinedType(IfcRampTypeEnum::IfcRampTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcRampTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRampType::declaration() const { return *IfcRampType_type; }
Type::Enum IfcRampType::Class() { return Type::IfcRampType; }
IfcRampType::IfcRampType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRampType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRampType::IfcRampType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcRampTypeEnum::IfcRampTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcRampTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRationalBSplineCurveWithKnots
std::vector< double > /*[2:?]*/ IfcRationalBSplineCurveWithKnots::WeightsData() const { return *data_->getArgument(8); }
void IfcRationalBSplineCurveWithKnots::setWeightsData(std::vector< double > /*[2:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcRationalBSplineCurveWithKnots::declaration() const { return *IfcRationalBSplineCurveWithKnots_type; }
Type::Enum IfcRationalBSplineCurveWithKnots::Class() { return Type::IfcRationalBSplineCurveWithKnots; }
IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(IfcAbstractEntity* e) : IfcBSplineCurveWithKnots((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRationalBSplineCurveWithKnots)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(int v1_Degree, IfcTemplatedEntityList< IfcCartesianPoint >::ptr v2_ControlPointsList, IfcBSplineCurveForm::IfcBSplineCurveForm v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, IfcKnotType::IfcKnotType v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData) : IfcBSplineCurveWithKnots((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Degree)); e->setArgument(1,(v2_ControlPointsList)->generalize()); e->setArgument(2,v3_CurveForm,IfcBSplineCurveForm::ToString(v3_CurveForm)); e->setArgument(3,(v4_ClosedCurve)); e->setArgument(4,(v5_SelfIntersect)); e->setArgument(5,(v6_KnotMultiplicities)); e->setArgument(6,(v7_Knots)); e->setArgument(7,v8_KnotSpec,IfcKnotType::ToString(v8_KnotSpec)); e->setArgument(8,(v9_WeightsData)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRationalBSplineSurfaceWithKnots
std::vector< std::vector< double > > IfcRationalBSplineSurfaceWithKnots::WeightsData() const { return *data_->getArgument(12); }
void IfcRationalBSplineSurfaceWithKnots::setWeightsData(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcRationalBSplineSurfaceWithKnots::declaration() const { return *IfcRationalBSplineSurfaceWithKnots_type; }
Type::Enum IfcRationalBSplineSurfaceWithKnots::Class() { return Type::IfcRationalBSplineSurfaceWithKnots; }
IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(IfcAbstractEntity* e) : IfcBSplineSurfaceWithKnots((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRationalBSplineSurfaceWithKnots)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, IfcTemplatedEntityListList< IfcCartesianPoint >::ptr v3_ControlPointsList, IfcBSplineSurfaceForm::IfcBSplineSurfaceForm v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect, std::vector< int > /*[2:?]*/ v8_UMultiplicities, std::vector< int > /*[2:?]*/ v9_VMultiplicities, std::vector< double > /*[2:?]*/ v10_UKnots, std::vector< double > /*[2:?]*/ v11_VKnots, IfcKnotType::IfcKnotType v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData) : IfcBSplineSurfaceWithKnots((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_UDegree)); e->setArgument(1,(v2_VDegree)); e->setArgument(2,(v3_ControlPointsList)->generalize()); e->setArgument(3,v4_SurfaceForm,IfcBSplineSurfaceForm::ToString(v4_SurfaceForm)); e->setArgument(4,(v5_UClosed)); e->setArgument(5,(v6_VClosed)); e->setArgument(6,(v7_SelfIntersect)); e->setArgument(7,(v8_UMultiplicities)); e->setArgument(8,(v9_VMultiplicities)); e->setArgument(9,(v10_UKnots)); e->setArgument(10,(v11_VKnots)); e->setArgument(11,v12_KnotSpec,IfcKnotType::ToString(v12_KnotSpec)); e->setArgument(12,(v13_WeightsData)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangleHollowProfileDef
double IfcRectangleHollowProfileDef::WallThickness() const { return *data_->getArgument(5); }
void IfcRectangleHollowProfileDef::setWallThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRectangleHollowProfileDef::hasInnerFilletRadius() const { return !data_->getArgument(6)->isNull(); }
double IfcRectangleHollowProfileDef::InnerFilletRadius() const { return *data_->getArgument(6); }
void IfcRectangleHollowProfileDef::setInnerFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRectangleHollowProfileDef::hasOuterFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcRectangleHollowProfileDef::OuterFilletRadius() const { return *data_->getArgument(7); }
void IfcRectangleHollowProfileDef::setOuterFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRectangleHollowProfileDef::declaration() const { return *IfcRectangleHollowProfileDef_type; }
Type::Enum IfcRectangleHollowProfileDef::Class() { return Type::IfcRectangleHollowProfileDef; }
IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcAbstractEntity* e) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangleHollowProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_XDim)); e->setArgument(4,(v5_YDim)); e->setArgument(5,(v6_WallThickness)); if (v7_InnerFilletRadius) { e->setArgument(6,(*v7_InnerFilletRadius)); } else { e->setArgument(6); } if (v8_OuterFilletRadius) { e->setArgument(7,(*v8_OuterFilletRadius)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangleProfileDef
double IfcRectangleProfileDef::XDim() const { return *data_->getArgument(3); }
void IfcRectangleProfileDef::setXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcRectangleProfileDef::YDim() const { return *data_->getArgument(4); }
void IfcRectangleProfileDef::setYDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcRectangleProfileDef::declaration() const { return *IfcRectangleProfileDef_type; }
Type::Enum IfcRectangleProfileDef::Class() { return Type::IfcRectangleProfileDef; }
IfcRectangleProfileDef::IfcRectangleProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangleProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangleProfileDef::IfcRectangleProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_XDim)); e->setArgument(4,(v5_YDim)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangularPyramid
double IfcRectangularPyramid::XLength() const { return *data_->getArgument(1); }
void IfcRectangularPyramid::setXLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRectangularPyramid::YLength() const { return *data_->getArgument(2); }
void IfcRectangularPyramid::setYLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcRectangularPyramid::Height() const { return *data_->getArgument(3); }
void IfcRectangularPyramid::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcRectangularPyramid::declaration() const { return *IfcRectangularPyramid_type; }
Type::Enum IfcRectangularPyramid::Class() { return Type::IfcRectangularPyramid; }
IfcRectangularPyramid::IfcRectangularPyramid(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangularPyramid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangularPyramid::IfcRectangularPyramid(IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_XLength)); e->setArgument(2,(v3_YLength)); e->setArgument(3,(v4_Height)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRectangularTrimmedSurface
IfcSurface* IfcRectangularTrimmedSurface::BasisSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcRectangularTrimmedSurface::setBasisSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcRectangularTrimmedSurface::U1() const { return *data_->getArgument(1); }
void IfcRectangularTrimmedSurface::setU1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRectangularTrimmedSurface::V1() const { return *data_->getArgument(2); }
void IfcRectangularTrimmedSurface::setV1(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcRectangularTrimmedSurface::U2() const { return *data_->getArgument(3); }
void IfcRectangularTrimmedSurface::setU2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcRectangularTrimmedSurface::V2() const { return *data_->getArgument(4); }
void IfcRectangularTrimmedSurface::setV2(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcRectangularTrimmedSurface::Usense() const { return *data_->getArgument(5); }
void IfcRectangularTrimmedSurface::setUsense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRectangularTrimmedSurface::Vsense() const { return *data_->getArgument(6); }
void IfcRectangularTrimmedSurface::setVsense(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRectangularTrimmedSurface::declaration() const { return *IfcRectangularTrimmedSurface_type; }
Type::Enum IfcRectangularTrimmedSurface::Class() { return Type::IfcRectangularTrimmedSurface; }
IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcAbstractEntity* e) : IfcBoundedSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRectangularTrimmedSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense) : IfcBoundedSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisSurface)); e->setArgument(1,(v2_U1)); e->setArgument(2,(v3_V1)); e->setArgument(3,(v4_U2)); e->setArgument(4,(v5_V2)); e->setArgument(5,(v6_Usense)); e->setArgument(6,(v7_Vsense)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRecurrencePattern
IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum IfcRecurrencePattern::RecurrenceType() const { return IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); }
void IfcRecurrencePattern::setRecurrenceType(IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcRecurrenceTypeEnum::ToString(v)); }
bool IfcRecurrencePattern::hasDayComponent() const { return !data_->getArgument(1)->isNull(); }
std::vector< int > /*[1:?]*/ IfcRecurrencePattern::DayComponent() const { return *data_->getArgument(1); }
void IfcRecurrencePattern::setDayComponent(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcRecurrencePattern::hasWeekdayComponent() const { return !data_->getArgument(2)->isNull(); }
std::vector< int > /*[1:?]*/ IfcRecurrencePattern::WeekdayComponent() const { return *data_->getArgument(2); }
void IfcRecurrencePattern::setWeekdayComponent(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcRecurrencePattern::hasMonthComponent() const { return !data_->getArgument(3)->isNull(); }
std::vector< int > /*[1:?]*/ IfcRecurrencePattern::MonthComponent() const { return *data_->getArgument(3); }
void IfcRecurrencePattern::setMonthComponent(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcRecurrencePattern::hasPosition() const { return !data_->getArgument(4)->isNull(); }
int IfcRecurrencePattern::Position() const { return *data_->getArgument(4); }
void IfcRecurrencePattern::setPosition(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcRecurrencePattern::hasInterval() const { return !data_->getArgument(5)->isNull(); }
int IfcRecurrencePattern::Interval() const { return *data_->getArgument(5); }
void IfcRecurrencePattern::setInterval(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRecurrencePattern::hasOccurrences() const { return !data_->getArgument(6)->isNull(); }
int IfcRecurrencePattern::Occurrences() const { return *data_->getArgument(6); }
void IfcRecurrencePattern::setOccurrences(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRecurrencePattern::hasTimePeriods() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcTimePeriod >::ptr IfcRecurrencePattern::TimePeriods() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcTimePeriod>(); }
void IfcRecurrencePattern::setTimePeriods(IfcTemplatedEntityList< IfcTimePeriod >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }


const IfcParse::entity& IfcRecurrencePattern::declaration() const { return *IfcRecurrencePattern_type; }
Type::Enum IfcRecurrencePattern::Class() { return Type::IfcRecurrencePattern; }
IfcRecurrencePattern::IfcRecurrencePattern(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRecurrencePattern)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRecurrencePattern::IfcRecurrencePattern(IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum v1_RecurrenceType, boost::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, boost::optional< int > v5_Position, boost::optional< int > v6_Interval, boost::optional< int > v7_Occurrences, boost::optional< IfcTemplatedEntityList< IfcTimePeriod >::ptr > v8_TimePeriods) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_RecurrenceType,IfcRecurrenceTypeEnum::ToString(v1_RecurrenceType)); if (v2_DayComponent) { e->setArgument(1,(*v2_DayComponent)); } else { e->setArgument(1); } if (v3_WeekdayComponent) { e->setArgument(2,(*v3_WeekdayComponent)); } else { e->setArgument(2); } if (v4_MonthComponent) { e->setArgument(3,(*v4_MonthComponent)); } else { e->setArgument(3); } if (v5_Position) { e->setArgument(4,(*v5_Position)); } else { e->setArgument(4); } if (v6_Interval) { e->setArgument(5,(*v6_Interval)); } else { e->setArgument(5); } if (v7_Occurrences) { e->setArgument(6,(*v7_Occurrences)); } else { e->setArgument(6); } if (v8_TimePeriods) { e->setArgument(7,(*v8_TimePeriods)->generalize()); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReference
bool IfcReference::hasTypeIdentifier() const { return !data_->getArgument(0)->isNull(); }
std::string IfcReference::TypeIdentifier() const { return *data_->getArgument(0); }
void IfcReference::setTypeIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcReference::hasAttributeIdentifier() const { return !data_->getArgument(1)->isNull(); }
std::string IfcReference::AttributeIdentifier() const { return *data_->getArgument(1); }
void IfcReference::setAttributeIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcReference::hasInstanceName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcReference::InstanceName() const { return *data_->getArgument(2); }
void IfcReference::setInstanceName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcReference::hasListPositions() const { return !data_->getArgument(3)->isNull(); }
std::vector< int > /*[1:?]*/ IfcReference::ListPositions() const { return *data_->getArgument(3); }
void IfcReference::setListPositions(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcReference::hasInnerReference() const { return !data_->getArgument(4)->isNull(); }
IfcReference* IfcReference::InnerReference() const { return (IfcReference*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcReference::setInnerReference(IfcReference* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcReference::declaration() const { return *IfcReference_type; }
Type::Enum IfcReference::Class() { return Type::IfcReference; }
IfcReference::IfcReference(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcReference)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReference::IfcReference(boost::optional< std::string > v1_TypeIdentifier, boost::optional< std::string > v2_AttributeIdentifier, boost::optional< std::string > v3_InstanceName, boost::optional< std::vector< int > /*[1:?]*/ > v4_ListPositions, IfcReference* v5_InnerReference) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_TypeIdentifier) { e->setArgument(0,(*v1_TypeIdentifier)); } else { e->setArgument(0); } if (v2_AttributeIdentifier) { e->setArgument(1,(*v2_AttributeIdentifier)); } else { e->setArgument(1); } if (v3_InstanceName) { e->setArgument(2,(*v3_InstanceName)); } else { e->setArgument(2); } if (v4_ListPositions) { e->setArgument(3,(*v4_ListPositions)); } else { e->setArgument(3); } e->setArgument(4,(v5_InnerReference)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRegularTimeSeries
double IfcRegularTimeSeries::TimeStep() const { return *data_->getArgument(8); }
void IfcRegularTimeSeries::setTimeStep(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcTemplatedEntityList< IfcTimeSeriesValue >::ptr IfcRegularTimeSeries::Values() const { IfcEntityList::ptr es = *data_->getArgument(9); return es->as<IfcTimeSeriesValue>(); }
void IfcRegularTimeSeries::setValues(IfcTemplatedEntityList< IfcTimeSeriesValue >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v->generalize()); }


const IfcParse::entity& IfcRegularTimeSeries::declaration() const { return *IfcRegularTimeSeries_type; }
Type::Enum IfcRegularTimeSeries::Class() { return Type::IfcRegularTimeSeries; }
IfcRegularTimeSeries::IfcRegularTimeSeries(IfcAbstractEntity* e) : IfcTimeSeries((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRegularTimeSeries)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v5_TimeSeriesDataType, IfcDataOriginEnum::IfcDataOriginEnum v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, IfcUnit* v8_Unit, double v9_TimeStep, IfcTemplatedEntityList< IfcTimeSeriesValue >::ptr v10_Values) : IfcTimeSeries((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_StartTime)); e->setArgument(3,(v4_EndTime)); e->setArgument(4,v5_TimeSeriesDataType,IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType)); e->setArgument(5,v6_DataOrigin,IfcDataOriginEnum::ToString(v6_DataOrigin)); if (v7_UserDefinedDataOrigin) { e->setArgument(6,(*v7_UserDefinedDataOrigin)); } else { e->setArgument(6); } e->setArgument(7,(v8_Unit)); e->setArgument(8,(v9_TimeStep)); e->setArgument(9,(v10_Values)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcementBarProperties
double IfcReinforcementBarProperties::TotalCrossSectionArea() const { return *data_->getArgument(0); }
void IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcReinforcementBarProperties::SteelGrade() const { return *data_->getArgument(1); }
void IfcReinforcementBarProperties::setSteelGrade(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcReinforcementBarProperties::hasBarSurface() const { return !data_->getArgument(2)->isNull(); }
IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum IfcReinforcementBarProperties::BarSurface() const { return IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); }
void IfcReinforcementBarProperties::setBarSurface(IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcReinforcingBarSurfaceEnum::ToString(v)); }
bool IfcReinforcementBarProperties::hasEffectiveDepth() const { return !data_->getArgument(3)->isNull(); }
double IfcReinforcementBarProperties::EffectiveDepth() const { return *data_->getArgument(3); }
void IfcReinforcementBarProperties::setEffectiveDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcReinforcementBarProperties::hasNominalBarDiameter() const { return !data_->getArgument(4)->isNull(); }
double IfcReinforcementBarProperties::NominalBarDiameter() const { return *data_->getArgument(4); }
void IfcReinforcementBarProperties::setNominalBarDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcReinforcementBarProperties::hasBarCount() const { return !data_->getArgument(5)->isNull(); }
double IfcReinforcementBarProperties::BarCount() const { return *data_->getArgument(5); }
void IfcReinforcementBarProperties::setBarCount(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcReinforcementBarProperties::declaration() const { return *IfcReinforcementBarProperties_type; }
Type::Enum IfcReinforcementBarProperties::Class() { return Type::IfcReinforcementBarProperties; }
IfcReinforcementBarProperties::IfcReinforcementBarProperties(IfcAbstractEntity* e) : IfcPreDefinedProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcementBarProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< double > v6_BarCount) : IfcPreDefinedProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TotalCrossSectionArea)); e->setArgument(1,(v2_SteelGrade)); if (v3_BarSurface) { e->setArgument(2,*v3_BarSurface,IfcReinforcingBarSurfaceEnum::ToString(*v3_BarSurface)); } else { e->setArgument(2); } if (v4_EffectiveDepth) { e->setArgument(3,(*v4_EffectiveDepth)); } else { e->setArgument(3); } if (v5_NominalBarDiameter) { e->setArgument(4,(*v5_NominalBarDiameter)); } else { e->setArgument(4); } if (v6_BarCount) { e->setArgument(5,(*v6_BarCount)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcementDefinitionProperties
bool IfcReinforcementDefinitionProperties::hasDefinitionType() const { return !data_->getArgument(4)->isNull(); }
std::string IfcReinforcementDefinitionProperties::DefinitionType() const { return *data_->getArgument(4); }
void IfcReinforcementDefinitionProperties::setDefinitionType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcSectionReinforcementProperties >::ptr IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcSectionReinforcementProperties>(); }
void IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(IfcTemplatedEntityList< IfcSectionReinforcementProperties >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcReinforcementDefinitionProperties::declaration() const { return *IfcReinforcementDefinitionProperties_type; }
Type::Enum IfcReinforcementDefinitionProperties::Class() { return Type::IfcReinforcementDefinitionProperties; }
IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(IfcAbstractEntity* e) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcementDefinitionProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, IfcTemplatedEntityList< IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_DefinitionType) { e->setArgument(4,(*v5_DefinitionType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ReinforcementSectionDefinitions)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingBar
bool IfcReinforcingBar::hasNominalDiameter() const { return !data_->getArgument(9)->isNull(); }
double IfcReinforcingBar::NominalDiameter() const { return *data_->getArgument(9); }
void IfcReinforcingBar::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcReinforcingBar::hasCrossSectionArea() const { return !data_->getArgument(10)->isNull(); }
double IfcReinforcingBar::CrossSectionArea() const { return *data_->getArgument(10); }
void IfcReinforcingBar::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcReinforcingBar::hasBarLength() const { return !data_->getArgument(11)->isNull(); }
double IfcReinforcingBar::BarLength() const { return *data_->getArgument(11); }
void IfcReinforcingBar::setBarLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcReinforcingBar::hasPredefinedType() const { return !data_->getArgument(12)->isNull(); }
IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum IfcReinforcingBar::PredefinedType() const { return IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); }
void IfcReinforcingBar::setPredefinedType(IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v,IfcReinforcingBarTypeEnum::ToString(v)); }
bool IfcReinforcingBar::hasBarSurface() const { return !data_->getArgument(13)->isNull(); }
IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum IfcReinforcingBar::BarSurface() const { return IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void IfcReinforcingBar::setBarSurface(IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcReinforcingBarSurfaceEnum::ToString(v)); }


const IfcParse::entity& IfcReinforcingBar::declaration() const { return *IfcReinforcingBar_type; }
Type::Enum IfcReinforcingBar::Class() { return Type::IfcReinforcingBar; }
IfcReinforcingBar::IfcReinforcingBar(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingBar)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_NominalDiameter, boost::optional< double > v11_CrossSectionArea, boost::optional< double > v12_BarLength, boost::optional< IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum > v13_PredefinedType, boost::optional< IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum > v14_BarSurface) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } if (v10_NominalDiameter) { e->setArgument(9,(*v10_NominalDiameter)); } else { e->setArgument(9); } if (v11_CrossSectionArea) { e->setArgument(10,(*v11_CrossSectionArea)); } else { e->setArgument(10); } if (v12_BarLength) { e->setArgument(11,(*v12_BarLength)); } else { e->setArgument(11); } if (v13_PredefinedType) { e->setArgument(12,*v13_PredefinedType,IfcReinforcingBarTypeEnum::ToString(*v13_PredefinedType)); } else { e->setArgument(12); } if (v14_BarSurface) { e->setArgument(13,*v14_BarSurface,IfcReinforcingBarSurfaceEnum::ToString(*v14_BarSurface)); } else { e->setArgument(13); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingBarType
IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum IfcReinforcingBarType::PredefinedType() const { return IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); }
void IfcReinforcingBarType::setPredefinedType(IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcReinforcingBarTypeEnum::ToString(v)); }
bool IfcReinforcingBarType::hasNominalDiameter() const { return !data_->getArgument(10)->isNull(); }
double IfcReinforcingBarType::NominalDiameter() const { return *data_->getArgument(10); }
void IfcReinforcingBarType::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcReinforcingBarType::hasCrossSectionArea() const { return !data_->getArgument(11)->isNull(); }
double IfcReinforcingBarType::CrossSectionArea() const { return *data_->getArgument(11); }
void IfcReinforcingBarType::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcReinforcingBarType::hasBarLength() const { return !data_->getArgument(12)->isNull(); }
double IfcReinforcingBarType::BarLength() const { return *data_->getArgument(12); }
void IfcReinforcingBarType::setBarLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcReinforcingBarType::hasBarSurface() const { return !data_->getArgument(13)->isNull(); }
IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum IfcReinforcingBarType::BarSurface() const { return IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void IfcReinforcingBarType::setBarSurface(IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcReinforcingBarSurfaceEnum::ToString(v)); }
bool IfcReinforcingBarType::hasBendingShapeCode() const { return !data_->getArgument(14)->isNull(); }
std::string IfcReinforcingBarType::BendingShapeCode() const { return *data_->getArgument(14); }
void IfcReinforcingBarType::setBendingShapeCode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcReinforcingBarType::hasBendingParameters() const { return !data_->getArgument(15)->isNull(); }
IfcEntityList::ptr IfcReinforcingBarType::BendingParameters() const { return *data_->getArgument(15); }
void IfcReinforcingBarType::setBendingParameters(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }


const IfcParse::entity& IfcReinforcingBarType::declaration() const { return *IfcReinforcingBarType_type; }
Type::Enum IfcReinforcingBarType::Class() { return Type::IfcReinforcingBarType; }
IfcReinforcingBarType::IfcReinforcingBarType(IfcAbstractEntity* e) : IfcReinforcingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingBarType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_BarLength, boost::optional< IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum > v14_BarSurface, boost::optional< std::string > v15_BendingShapeCode, boost::optional< IfcEntityList::ptr > v16_BendingParameters) : IfcReinforcingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcReinforcingBarTypeEnum::ToString(v10_PredefinedType)); if (v11_NominalDiameter) { e->setArgument(10,(*v11_NominalDiameter)); } else { e->setArgument(10); } if (v12_CrossSectionArea) { e->setArgument(11,(*v12_CrossSectionArea)); } else { e->setArgument(11); } if (v13_BarLength) { e->setArgument(12,(*v13_BarLength)); } else { e->setArgument(12); } if (v14_BarSurface) { e->setArgument(13,*v14_BarSurface,IfcReinforcingBarSurfaceEnum::ToString(*v14_BarSurface)); } else { e->setArgument(13); } if (v15_BendingShapeCode) { e->setArgument(14,(*v15_BendingShapeCode)); } else { e->setArgument(14); } if (v16_BendingParameters) { e->setArgument(15,(*v16_BendingParameters)); } else { e->setArgument(15); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingElement
bool IfcReinforcingElement::hasSteelGrade() const { return !data_->getArgument(8)->isNull(); }
std::string IfcReinforcingElement::SteelGrade() const { return *data_->getArgument(8); }
void IfcReinforcingElement::setSteelGrade(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcReinforcingElement::declaration() const { return *IfcReinforcingElement_type; }
Type::Enum IfcReinforcingElement::Class() { return Type::IfcReinforcingElement; }
IfcReinforcingElement::IfcReinforcingElement(IfcAbstractEntity* e) : IfcElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade) : IfcElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingElementType


const IfcParse::entity& IfcReinforcingElementType::declaration() const { return *IfcReinforcingElementType_type; }
Type::Enum IfcReinforcingElementType::Class() { return Type::IfcReinforcingElementType; }
IfcReinforcingElementType::IfcReinforcingElementType(IfcAbstractEntity* e) : IfcElementComponentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementComponentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingMesh
bool IfcReinforcingMesh::hasMeshLength() const { return !data_->getArgument(9)->isNull(); }
double IfcReinforcingMesh::MeshLength() const { return *data_->getArgument(9); }
void IfcReinforcingMesh::setMeshLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcReinforcingMesh::hasMeshWidth() const { return !data_->getArgument(10)->isNull(); }
double IfcReinforcingMesh::MeshWidth() const { return *data_->getArgument(10); }
void IfcReinforcingMesh::setMeshWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcReinforcingMesh::hasLongitudinalBarNominalDiameter() const { return !data_->getArgument(11)->isNull(); }
double IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { return *data_->getArgument(11); }
void IfcReinforcingMesh::setLongitudinalBarNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcReinforcingMesh::hasTransverseBarNominalDiameter() const { return !data_->getArgument(12)->isNull(); }
double IfcReinforcingMesh::TransverseBarNominalDiameter() const { return *data_->getArgument(12); }
void IfcReinforcingMesh::setTransverseBarNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcReinforcingMesh::hasLongitudinalBarCrossSectionArea() const { return !data_->getArgument(13)->isNull(); }
double IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { return *data_->getArgument(13); }
void IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcReinforcingMesh::hasTransverseBarCrossSectionArea() const { return !data_->getArgument(14)->isNull(); }
double IfcReinforcingMesh::TransverseBarCrossSectionArea() const { return *data_->getArgument(14); }
void IfcReinforcingMesh::setTransverseBarCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcReinforcingMesh::hasLongitudinalBarSpacing() const { return !data_->getArgument(15)->isNull(); }
double IfcReinforcingMesh::LongitudinalBarSpacing() const { return *data_->getArgument(15); }
void IfcReinforcingMesh::setLongitudinalBarSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcReinforcingMesh::hasTransverseBarSpacing() const { return !data_->getArgument(16)->isNull(); }
double IfcReinforcingMesh::TransverseBarSpacing() const { return *data_->getArgument(16); }
void IfcReinforcingMesh::setTransverseBarSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcReinforcingMesh::hasPredefinedType() const { return !data_->getArgument(17)->isNull(); }
IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum IfcReinforcingMesh::PredefinedType() const { return IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); }
void IfcReinforcingMesh::setPredefinedType(IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v,IfcReinforcingMeshTypeEnum::ToString(v)); }


const IfcParse::entity& IfcReinforcingMesh::declaration() const { return *IfcReinforcingMesh_type; }
Type::Enum IfcReinforcingMesh::Class() { return Type::IfcReinforcingMesh; }
IfcReinforcingMesh::IfcReinforcingMesh(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingMesh)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< double > v10_MeshLength, boost::optional< double > v11_MeshWidth, boost::optional< double > v12_LongitudinalBarNominalDiameter, boost::optional< double > v13_TransverseBarNominalDiameter, boost::optional< double > v14_LongitudinalBarCrossSectionArea, boost::optional< double > v15_TransverseBarCrossSectionArea, boost::optional< double > v16_LongitudinalBarSpacing, boost::optional< double > v17_TransverseBarSpacing, boost::optional< IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum > v18_PredefinedType) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } if (v10_MeshLength) { e->setArgument(9,(*v10_MeshLength)); } else { e->setArgument(9); } if (v11_MeshWidth) { e->setArgument(10,(*v11_MeshWidth)); } else { e->setArgument(10); } if (v12_LongitudinalBarNominalDiameter) { e->setArgument(11,(*v12_LongitudinalBarNominalDiameter)); } else { e->setArgument(11); } if (v13_TransverseBarNominalDiameter) { e->setArgument(12,(*v13_TransverseBarNominalDiameter)); } else { e->setArgument(12); } if (v14_LongitudinalBarCrossSectionArea) { e->setArgument(13,(*v14_LongitudinalBarCrossSectionArea)); } else { e->setArgument(13); } if (v15_TransverseBarCrossSectionArea) { e->setArgument(14,(*v15_TransverseBarCrossSectionArea)); } else { e->setArgument(14); } if (v16_LongitudinalBarSpacing) { e->setArgument(15,(*v16_LongitudinalBarSpacing)); } else { e->setArgument(15); } if (v17_TransverseBarSpacing) { e->setArgument(16,(*v17_TransverseBarSpacing)); } else { e->setArgument(16); } if (v18_PredefinedType) { e->setArgument(17,*v18_PredefinedType,IfcReinforcingMeshTypeEnum::ToString(*v18_PredefinedType)); } else { e->setArgument(17); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReinforcingMeshType
IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum IfcReinforcingMeshType::PredefinedType() const { return IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); }
void IfcReinforcingMeshType::setPredefinedType(IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcReinforcingMeshTypeEnum::ToString(v)); }
bool IfcReinforcingMeshType::hasMeshLength() const { return !data_->getArgument(10)->isNull(); }
double IfcReinforcingMeshType::MeshLength() const { return *data_->getArgument(10); }
void IfcReinforcingMeshType::setMeshLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcReinforcingMeshType::hasMeshWidth() const { return !data_->getArgument(11)->isNull(); }
double IfcReinforcingMeshType::MeshWidth() const { return *data_->getArgument(11); }
void IfcReinforcingMeshType::setMeshWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcReinforcingMeshType::hasLongitudinalBarNominalDiameter() const { return !data_->getArgument(12)->isNull(); }
double IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { return *data_->getArgument(12); }
void IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcReinforcingMeshType::hasTransverseBarNominalDiameter() const { return !data_->getArgument(13)->isNull(); }
double IfcReinforcingMeshType::TransverseBarNominalDiameter() const { return *data_->getArgument(13); }
void IfcReinforcingMeshType::setTransverseBarNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcReinforcingMeshType::hasLongitudinalBarCrossSectionArea() const { return !data_->getArgument(14)->isNull(); }
double IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { return *data_->getArgument(14); }
void IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcReinforcingMeshType::hasTransverseBarCrossSectionArea() const { return !data_->getArgument(15)->isNull(); }
double IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { return *data_->getArgument(15); }
void IfcReinforcingMeshType::setTransverseBarCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcReinforcingMeshType::hasLongitudinalBarSpacing() const { return !data_->getArgument(16)->isNull(); }
double IfcReinforcingMeshType::LongitudinalBarSpacing() const { return *data_->getArgument(16); }
void IfcReinforcingMeshType::setLongitudinalBarSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcReinforcingMeshType::hasTransverseBarSpacing() const { return !data_->getArgument(17)->isNull(); }
double IfcReinforcingMeshType::TransverseBarSpacing() const { return *data_->getArgument(17); }
void IfcReinforcingMeshType::setTransverseBarSpacing(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v); }
bool IfcReinforcingMeshType::hasBendingShapeCode() const { return !data_->getArgument(18)->isNull(); }
std::string IfcReinforcingMeshType::BendingShapeCode() const { return *data_->getArgument(18); }
void IfcReinforcingMeshType::setBendingShapeCode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(18,v); }
bool IfcReinforcingMeshType::hasBendingParameters() const { return !data_->getArgument(19)->isNull(); }
IfcEntityList::ptr IfcReinforcingMeshType::BendingParameters() const { return *data_->getArgument(19); }
void IfcReinforcingMeshType::setBendingParameters(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(19,v); }


const IfcParse::entity& IfcReinforcingMeshType::declaration() const { return *IfcReinforcingMeshType_type; }
Type::Enum IfcReinforcingMeshType::Class() { return Type::IfcReinforcingMeshType; }
IfcReinforcingMeshType::IfcReinforcingMeshType(IfcAbstractEntity* e) : IfcReinforcingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReinforcingMeshType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReinforcingMeshType::IfcReinforcingMeshType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum v10_PredefinedType, boost::optional< double > v11_MeshLength, boost::optional< double > v12_MeshWidth, boost::optional< double > v13_LongitudinalBarNominalDiameter, boost::optional< double > v14_TransverseBarNominalDiameter, boost::optional< double > v15_LongitudinalBarCrossSectionArea, boost::optional< double > v16_TransverseBarCrossSectionArea, boost::optional< double > v17_LongitudinalBarSpacing, boost::optional< double > v18_TransverseBarSpacing, boost::optional< std::string > v19_BendingShapeCode, boost::optional< IfcEntityList::ptr > v20_BendingParameters) : IfcReinforcingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcReinforcingMeshTypeEnum::ToString(v10_PredefinedType)); if (v11_MeshLength) { e->setArgument(10,(*v11_MeshLength)); } else { e->setArgument(10); } if (v12_MeshWidth) { e->setArgument(11,(*v12_MeshWidth)); } else { e->setArgument(11); } if (v13_LongitudinalBarNominalDiameter) { e->setArgument(12,(*v13_LongitudinalBarNominalDiameter)); } else { e->setArgument(12); } if (v14_TransverseBarNominalDiameter) { e->setArgument(13,(*v14_TransverseBarNominalDiameter)); } else { e->setArgument(13); } if (v15_LongitudinalBarCrossSectionArea) { e->setArgument(14,(*v15_LongitudinalBarCrossSectionArea)); } else { e->setArgument(14); } if (v16_TransverseBarCrossSectionArea) { e->setArgument(15,(*v16_TransverseBarCrossSectionArea)); } else { e->setArgument(15); } if (v17_LongitudinalBarSpacing) { e->setArgument(16,(*v17_LongitudinalBarSpacing)); } else { e->setArgument(16); } if (v18_TransverseBarSpacing) { e->setArgument(17,(*v18_TransverseBarSpacing)); } else { e->setArgument(17); } if (v19_BendingShapeCode) { e->setArgument(18,(*v19_BendingShapeCode)); } else { e->setArgument(18); } if (v20_BendingParameters) { e->setArgument(19,(*v20_BendingParameters)); } else { e->setArgument(19); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAggregates
IfcObjectDefinition* IfcRelAggregates::RelatingObject() const { return (IfcObjectDefinition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelAggregates::setRelatingObject(IfcObjectDefinition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcObjectDefinition >::ptr IfcRelAggregates::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcObjectDefinition>(); }
void IfcRelAggregates::setRelatedObjects(IfcTemplatedEntityList< IfcObjectDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelAggregates::declaration() const { return *IfcRelAggregates_type; }
Type::Enum IfcRelAggregates::Class() { return Type::IfcRelAggregates; }
IfcRelAggregates::IfcRelAggregates(IfcAbstractEntity* e) : IfcRelDecomposes((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAggregates)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingObject)); e->setArgument(5,(v6_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssigns
IfcTemplatedEntityList< IfcObjectDefinition >::ptr IfcRelAssigns::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcObjectDefinition>(); }
void IfcRelAssigns::setRelatedObjects(IfcTemplatedEntityList< IfcObjectDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
bool IfcRelAssigns::hasRelatedObjectsType() const { return !data_->getArgument(5)->isNull(); }
IfcObjectTypeEnum::IfcObjectTypeEnum IfcRelAssigns::RelatedObjectsType() const { return IfcObjectTypeEnum::FromString(*data_->getArgument(5)); }
void IfcRelAssigns::setRelatedObjectsType(IfcObjectTypeEnum::IfcObjectTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcObjectTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRelAssigns::declaration() const { return *IfcRelAssigns_type; }
Type::Enum IfcRelAssigns::Class() { return Type::IfcRelAssigns; }
IfcRelAssigns::IfcRelAssigns(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssigns)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssigns::IfcRelAssigns(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToActor
IfcActor* IfcRelAssignsToActor::RelatingActor() const { return (IfcActor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToActor::setRelatingActor(IfcActor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelAssignsToActor::hasActingRole() const { return !data_->getArgument(7)->isNull(); }
IfcActorRole* IfcRelAssignsToActor::ActingRole() const { return (IfcActorRole*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelAssignsToActor::setActingRole(IfcActorRole* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssignsToActor::declaration() const { return *IfcRelAssignsToActor_type; }
Type::Enum IfcRelAssignsToActor::Class() { return Type::IfcRelAssignsToActor; }
IfcRelAssignsToActor::IfcRelAssignsToActor(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToActor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToActor::IfcRelAssignsToActor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcActor* v7_RelatingActor, IfcActorRole* v8_ActingRole) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingActor)); e->setArgument(7,(v8_ActingRole)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToControl
IfcControl* IfcRelAssignsToControl::RelatingControl() const { return (IfcControl*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToControl::setRelatingControl(IfcControl* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToControl::declaration() const { return *IfcRelAssignsToControl_type; }
Type::Enum IfcRelAssignsToControl::Class() { return Type::IfcRelAssignsToControl; }
IfcRelAssignsToControl::IfcRelAssignsToControl(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToControl::IfcRelAssignsToControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcControl* v7_RelatingControl) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingControl)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToGroup
IfcGroup* IfcRelAssignsToGroup::RelatingGroup() const { return (IfcGroup*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToGroup::setRelatingGroup(IfcGroup* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToGroup::declaration() const { return *IfcRelAssignsToGroup_type; }
Type::Enum IfcRelAssignsToGroup::Class() { return Type::IfcRelAssignsToGroup; }
IfcRelAssignsToGroup::IfcRelAssignsToGroup(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToGroup::IfcRelAssignsToGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcGroup* v7_RelatingGroup) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingGroup)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToGroupByFactor
double IfcRelAssignsToGroupByFactor::Factor() const { return *data_->getArgument(7); }
void IfcRelAssignsToGroupByFactor::setFactor(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssignsToGroupByFactor::declaration() const { return *IfcRelAssignsToGroupByFactor_type; }
Type::Enum IfcRelAssignsToGroupByFactor::Class() { return Type::IfcRelAssignsToGroupByFactor; }
IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(IfcAbstractEntity* e) : IfcRelAssignsToGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToGroupByFactor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcGroup* v7_RelatingGroup, double v8_Factor) : IfcRelAssignsToGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingGroup)); e->setArgument(7,(v8_Factor)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToProcess
IfcProcessSelect* IfcRelAssignsToProcess::RelatingProcess() const { return (IfcProcessSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToProcess::setRelatingProcess(IfcProcessSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelAssignsToProcess::hasQuantityInProcess() const { return !data_->getArgument(7)->isNull(); }
IfcMeasureWithUnit* IfcRelAssignsToProcess::QuantityInProcess() const { return (IfcMeasureWithUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelAssignsToProcess::setQuantityInProcess(IfcMeasureWithUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcRelAssignsToProcess::declaration() const { return *IfcRelAssignsToProcess_type; }
Type::Enum IfcRelAssignsToProcess::Class() { return Type::IfcRelAssignsToProcess; }
IfcRelAssignsToProcess::IfcRelAssignsToProcess(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToProcess)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToProcess::IfcRelAssignsToProcess(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcProcessSelect* v7_RelatingProcess, IfcMeasureWithUnit* v8_QuantityInProcess) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingProcess)); e->setArgument(7,(v8_QuantityInProcess)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToProduct
IfcProductSelect* IfcRelAssignsToProduct::RelatingProduct() const { return (IfcProductSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToProduct::setRelatingProduct(IfcProductSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToProduct::declaration() const { return *IfcRelAssignsToProduct_type; }
Type::Enum IfcRelAssignsToProduct::Class() { return Type::IfcRelAssignsToProduct; }
IfcRelAssignsToProduct::IfcRelAssignsToProduct(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToProduct)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToProduct::IfcRelAssignsToProduct(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcProductSelect* v7_RelatingProduct) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingProduct)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssignsToResource
IfcResourceSelect* IfcRelAssignsToResource::RelatingResource() const { return (IfcResourceSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssignsToResource::setRelatingResource(IfcResourceSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssignsToResource::declaration() const { return *IfcRelAssignsToResource_type; }
Type::Enum IfcRelAssignsToResource::Class() { return Type::IfcRelAssignsToResource; }
IfcRelAssignsToResource::IfcRelAssignsToResource(IfcAbstractEntity* e) : IfcRelAssigns((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssignsToResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssignsToResource::IfcRelAssignsToResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< IfcObjectTypeEnum::IfcObjectTypeEnum > v6_RelatedObjectsType, IfcResourceSelect* v7_RelatingResource) : IfcRelAssigns((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); if (v6_RelatedObjectsType) { e->setArgument(5,*v6_RelatedObjectsType,IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingResource)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociates
IfcEntityList::ptr IfcRelAssociates::RelatedObjects() const { return *data_->getArgument(4); }
void IfcRelAssociates::setRelatedObjects(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcRelAssociates::declaration() const { return *IfcRelAssociates_type; }
Type::Enum IfcRelAssociates::Class() { return Type::IfcRelAssociates; }
IfcRelAssociates::IfcRelAssociates(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociates)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociates::IfcRelAssociates(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesApproval
IfcApproval* IfcRelAssociatesApproval::RelatingApproval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesApproval::setRelatingApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesApproval::declaration() const { return *IfcRelAssociatesApproval_type; }
Type::Enum IfcRelAssociatesApproval::Class() { return Type::IfcRelAssociatesApproval; }
IfcRelAssociatesApproval::IfcRelAssociatesApproval(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesApproval)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesApproval::IfcRelAssociatesApproval(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, IfcApproval* v6_RelatingApproval) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); e->setArgument(5,(v6_RelatingApproval)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesClassification
IfcClassificationSelect* IfcRelAssociatesClassification::RelatingClassification() const { return (IfcClassificationSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesClassification::setRelatingClassification(IfcClassificationSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesClassification::declaration() const { return *IfcRelAssociatesClassification_type; }
Type::Enum IfcRelAssociatesClassification::Class() { return Type::IfcRelAssociatesClassification; }
IfcRelAssociatesClassification::IfcRelAssociatesClassification(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesClassification)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, IfcClassificationSelect* v6_RelatingClassification) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); e->setArgument(5,(v6_RelatingClassification)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesConstraint
bool IfcRelAssociatesConstraint::hasIntent() const { return !data_->getArgument(5)->isNull(); }
std::string IfcRelAssociatesConstraint::Intent() const { return *data_->getArgument(5); }
void IfcRelAssociatesConstraint::setIntent(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcConstraint* IfcRelAssociatesConstraint::RelatingConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelAssociatesConstraint::setRelatingConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelAssociatesConstraint::declaration() const { return *IfcRelAssociatesConstraint_type; }
Type::Enum IfcRelAssociatesConstraint::Class() { return Type::IfcRelAssociatesConstraint; }
IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesConstraint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, boost::optional< std::string > v6_Intent, IfcConstraint* v7_RelatingConstraint) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); if (v6_Intent) { e->setArgument(5,(*v6_Intent)); } else { e->setArgument(5); } e->setArgument(6,(v7_RelatingConstraint)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesDocument
IfcDocumentSelect* IfcRelAssociatesDocument::RelatingDocument() const { return (IfcDocumentSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesDocument::setRelatingDocument(IfcDocumentSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesDocument::declaration() const { return *IfcRelAssociatesDocument_type; }
Type::Enum IfcRelAssociatesDocument::Class() { return Type::IfcRelAssociatesDocument; }
IfcRelAssociatesDocument::IfcRelAssociatesDocument(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesDocument)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesDocument::IfcRelAssociatesDocument(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, IfcDocumentSelect* v6_RelatingDocument) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); e->setArgument(5,(v6_RelatingDocument)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesLibrary
IfcLibrarySelect* IfcRelAssociatesLibrary::RelatingLibrary() const { return (IfcLibrarySelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesLibrary::setRelatingLibrary(IfcLibrarySelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesLibrary::declaration() const { return *IfcRelAssociatesLibrary_type; }
Type::Enum IfcRelAssociatesLibrary::Class() { return Type::IfcRelAssociatesLibrary; }
IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesLibrary)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, IfcLibrarySelect* v6_RelatingLibrary) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); e->setArgument(5,(v6_RelatingLibrary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelAssociatesMaterial
IfcMaterialSelect* IfcRelAssociatesMaterial::RelatingMaterial() const { return (IfcMaterialSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelAssociatesMaterial::setRelatingMaterial(IfcMaterialSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelAssociatesMaterial::declaration() const { return *IfcRelAssociatesMaterial_type; }
Type::Enum IfcRelAssociatesMaterial::Class() { return Type::IfcRelAssociatesMaterial; }
IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(IfcAbstractEntity* e) : IfcRelAssociates((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelAssociatesMaterial)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcEntityList::ptr v5_RelatedObjects, IfcMaterialSelect* v6_RelatingMaterial) : IfcRelAssociates((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)); e->setArgument(5,(v6_RelatingMaterial)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnects


const IfcParse::entity& IfcRelConnects::declaration() const { return *IfcRelConnects_type; }
Type::Enum IfcRelConnects::Class() { return Type::IfcRelConnects; }
IfcRelConnects::IfcRelConnects(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnects)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnects::IfcRelConnects(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsElements
bool IfcRelConnectsElements::hasConnectionGeometry() const { return !data_->getArgument(4)->isNull(); }
IfcConnectionGeometry* IfcRelConnectsElements::ConnectionGeometry() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsElements::setConnectionGeometry(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelConnectsElements::RelatingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsElements::setRelatingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
IfcElement* IfcRelConnectsElements::RelatedElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelConnectsElements::setRelatedElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelConnectsElements::declaration() const { return *IfcRelConnectsElements_type; }
Type::Enum IfcRelConnectsElements::Class() { return Type::IfcRelConnectsElements; }
IfcRelConnectsElements::IfcRelConnectsElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsElements::IfcRelConnectsElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcConnectionGeometry* v5_ConnectionGeometry, IfcElement* v6_RelatingElement, IfcElement* v7_RelatedElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ConnectionGeometry)); e->setArgument(5,(v6_RelatingElement)); e->setArgument(6,(v7_RelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsPathElements
std::vector< int > /*[0:?]*/ IfcRelConnectsPathElements::RelatingPriorities() const { return *data_->getArgument(7); }
void IfcRelConnectsPathElements::setRelatingPriorities(std::vector< int > /*[0:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
std::vector< int > /*[0:?]*/ IfcRelConnectsPathElements::RelatedPriorities() const { return *data_->getArgument(8); }
void IfcRelConnectsPathElements::setRelatedPriorities(std::vector< int > /*[0:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
IfcConnectionTypeEnum::IfcConnectionTypeEnum IfcRelConnectsPathElements::RelatedConnectionType() const { return IfcConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRelConnectsPathElements::setRelatedConnectionType(IfcConnectionTypeEnum::IfcConnectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcConnectionTypeEnum::ToString(v)); }
IfcConnectionTypeEnum::IfcConnectionTypeEnum IfcRelConnectsPathElements::RelatingConnectionType() const { return IfcConnectionTypeEnum::FromString(*data_->getArgument(10)); }
void IfcRelConnectsPathElements::setRelatingConnectionType(IfcConnectionTypeEnum::IfcConnectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcConnectionTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRelConnectsPathElements::declaration() const { return *IfcRelConnectsPathElements_type; }
Type::Enum IfcRelConnectsPathElements::Class() { return Type::IfcRelConnectsPathElements; }
IfcRelConnectsPathElements::IfcRelConnectsPathElements(IfcAbstractEntity* e) : IfcRelConnectsElements((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsPathElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsPathElements::IfcRelConnectsPathElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcConnectionGeometry* v5_ConnectionGeometry, IfcElement* v6_RelatingElement, IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, IfcConnectionTypeEnum::IfcConnectionTypeEnum v10_RelatedConnectionType, IfcConnectionTypeEnum::IfcConnectionTypeEnum v11_RelatingConnectionType) : IfcRelConnectsElements((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ConnectionGeometry)); e->setArgument(5,(v6_RelatingElement)); e->setArgument(6,(v7_RelatedElement)); e->setArgument(7,(v8_RelatingPriorities)); e->setArgument(8,(v9_RelatedPriorities)); e->setArgument(9,v10_RelatedConnectionType,IfcConnectionTypeEnum::ToString(v10_RelatedConnectionType)); e->setArgument(10,v11_RelatingConnectionType,IfcConnectionTypeEnum::ToString(v11_RelatingConnectionType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsPortToElement
IfcPort* IfcRelConnectsPortToElement::RelatingPort() const { return (IfcPort*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsPortToElement::setRelatingPort(IfcPort* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcDistributionElement* IfcRelConnectsPortToElement::RelatedElement() const { return (IfcDistributionElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsPortToElement::setRelatedElement(IfcDistributionElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelConnectsPortToElement::declaration() const { return *IfcRelConnectsPortToElement_type; }
Type::Enum IfcRelConnectsPortToElement::Class() { return Type::IfcRelConnectsPortToElement; }
IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsPortToElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPort* v5_RelatingPort, IfcDistributionElement* v6_RelatedElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingPort)); e->setArgument(5,(v6_RelatedElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsPorts
IfcPort* IfcRelConnectsPorts::RelatingPort() const { return (IfcPort*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsPorts::setRelatingPort(IfcPort* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcPort* IfcRelConnectsPorts::RelatedPort() const { return (IfcPort*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsPorts::setRelatedPort(IfcPort* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelConnectsPorts::hasRealizingElement() const { return !data_->getArgument(6)->isNull(); }
IfcElement* IfcRelConnectsPorts::RealizingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelConnectsPorts::setRealizingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcRelConnectsPorts::declaration() const { return *IfcRelConnectsPorts_type; }
Type::Enum IfcRelConnectsPorts::Class() { return Type::IfcRelConnectsPorts; }
IfcRelConnectsPorts::IfcRelConnectsPorts(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsPorts)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsPorts::IfcRelConnectsPorts(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcPort* v5_RelatingPort, IfcPort* v6_RelatedPort, IfcElement* v7_RealizingElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingPort)); e->setArgument(5,(v6_RelatedPort)); e->setArgument(6,(v7_RealizingElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsStructuralActivity
IfcStructuralActivityAssignmentSelect* IfcRelConnectsStructuralActivity::RelatingElement() const { return (IfcStructuralActivityAssignmentSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsStructuralActivity::setRelatingElement(IfcStructuralActivityAssignmentSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcStructuralActivity* IfcRelConnectsStructuralActivity::RelatedStructuralActivity() const { return (IfcStructuralActivity*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsStructuralActivity::setRelatedStructuralActivity(IfcStructuralActivity* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelConnectsStructuralActivity::declaration() const { return *IfcRelConnectsStructuralActivity_type; }
Type::Enum IfcRelConnectsStructuralActivity::Class() { return Type::IfcRelConnectsStructuralActivity; }
IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsStructuralActivity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcStructuralActivityAssignmentSelect* v5_RelatingElement, IfcStructuralActivity* v6_RelatedStructuralActivity) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingElement)); e->setArgument(5,(v6_RelatedStructuralActivity)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsStructuralMember
IfcStructuralMember* IfcRelConnectsStructuralMember::RelatingStructuralMember() const { return (IfcStructuralMember*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelConnectsStructuralMember::setRelatingStructuralMember(IfcStructuralMember* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcStructuralConnection* IfcRelConnectsStructuralMember::RelatedStructuralConnection() const { return (IfcStructuralConnection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelConnectsStructuralMember::setRelatedStructuralConnection(IfcStructuralConnection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelConnectsStructuralMember::hasAppliedCondition() const { return !data_->getArgument(6)->isNull(); }
IfcBoundaryCondition* IfcRelConnectsStructuralMember::AppliedCondition() const { return (IfcBoundaryCondition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelConnectsStructuralMember::setAppliedCondition(IfcBoundaryCondition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelConnectsStructuralMember::hasAdditionalConditions() const { return !data_->getArgument(7)->isNull(); }
IfcStructuralConnectionCondition* IfcRelConnectsStructuralMember::AdditionalConditions() const { return (IfcStructuralConnectionCondition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcRelConnectsStructuralMember::setAdditionalConditions(IfcStructuralConnectionCondition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcRelConnectsStructuralMember::hasSupportedLength() const { return !data_->getArgument(8)->isNull(); }
double IfcRelConnectsStructuralMember::SupportedLength() const { return *data_->getArgument(8); }
void IfcRelConnectsStructuralMember::setSupportedLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcRelConnectsStructuralMember::hasConditionCoordinateSystem() const { return !data_->getArgument(9)->isNull(); }
IfcAxis2Placement3D* IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcRelConnectsStructuralMember::setConditionCoordinateSystem(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcRelConnectsStructuralMember::declaration() const { return *IfcRelConnectsStructuralMember_type; }
Type::Enum IfcRelConnectsStructuralMember::Class() { return Type::IfcRelConnectsStructuralMember; }
IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsStructuralMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcStructuralMember* v5_RelatingStructuralMember, IfcStructuralConnection* v6_RelatedStructuralConnection, IfcBoundaryCondition* v7_AppliedCondition, IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, IfcAxis2Placement3D* v10_ConditionCoordinateSystem) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingStructuralMember)); e->setArgument(5,(v6_RelatedStructuralConnection)); e->setArgument(6,(v7_AppliedCondition)); e->setArgument(7,(v8_AdditionalConditions)); if (v9_SupportedLength) { e->setArgument(8,(*v9_SupportedLength)); } else { e->setArgument(8); } e->setArgument(9,(v10_ConditionCoordinateSystem)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsWithEccentricity
IfcConnectionGeometry* IfcRelConnectsWithEccentricity::ConnectionConstraint() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcRelConnectsWithEccentricity::setConnectionConstraint(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcRelConnectsWithEccentricity::declaration() const { return *IfcRelConnectsWithEccentricity_type; }
Type::Enum IfcRelConnectsWithEccentricity::Class() { return Type::IfcRelConnectsWithEccentricity; }
IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(IfcAbstractEntity* e) : IfcRelConnectsStructuralMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsWithEccentricity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcStructuralMember* v5_RelatingStructuralMember, IfcStructuralConnection* v6_RelatedStructuralConnection, IfcBoundaryCondition* v7_AppliedCondition, IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, IfcAxis2Placement3D* v10_ConditionCoordinateSystem, IfcConnectionGeometry* v11_ConnectionConstraint) : IfcRelConnectsStructuralMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingStructuralMember)); e->setArgument(5,(v6_RelatedStructuralConnection)); e->setArgument(6,(v7_AppliedCondition)); e->setArgument(7,(v8_AdditionalConditions)); if (v9_SupportedLength) { e->setArgument(8,(*v9_SupportedLength)); } else { e->setArgument(8); } e->setArgument(9,(v10_ConditionCoordinateSystem)); e->setArgument(10,(v11_ConnectionConstraint)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelConnectsWithRealizingElements
IfcTemplatedEntityList< IfcElement >::ptr IfcRelConnectsWithRealizingElements::RealizingElements() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcElement>(); }
void IfcRelConnectsWithRealizingElements::setRealizingElements(IfcTemplatedEntityList< IfcElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcRelConnectsWithRealizingElements::hasConnectionType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcRelConnectsWithRealizingElements::ConnectionType() const { return *data_->getArgument(8); }
void IfcRelConnectsWithRealizingElements::setConnectionType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcRelConnectsWithRealizingElements::declaration() const { return *IfcRelConnectsWithRealizingElements_type; }
Type::Enum IfcRelConnectsWithRealizingElements::Class() { return Type::IfcRelConnectsWithRealizingElements; }
IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(IfcAbstractEntity* e) : IfcRelConnectsElements((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelConnectsWithRealizingElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcConnectionGeometry* v5_ConnectionGeometry, IfcElement* v6_RelatingElement, IfcElement* v7_RelatedElement, IfcTemplatedEntityList< IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType) : IfcRelConnectsElements((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_ConnectionGeometry)); e->setArgument(5,(v6_RelatingElement)); e->setArgument(6,(v7_RelatedElement)); e->setArgument(7,(v8_RealizingElements)->generalize()); if (v9_ConnectionType) { e->setArgument(8,(*v9_ConnectionType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelContainedInSpatialStructure
IfcTemplatedEntityList< IfcProduct >::ptr IfcRelContainedInSpatialStructure::RelatedElements() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcProduct>(); }
void IfcRelContainedInSpatialStructure::setRelatedElements(IfcTemplatedEntityList< IfcProduct >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcSpatialElement* IfcRelContainedInSpatialStructure::RelatingStructure() const { return (IfcSpatialElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelContainedInSpatialStructure::setRelatingStructure(IfcSpatialElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelContainedInSpatialStructure::declaration() const { return *IfcRelContainedInSpatialStructure_type; }
Type::Enum IfcRelContainedInSpatialStructure::Class() { return Type::IfcRelContainedInSpatialStructure; }
IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelContainedInSpatialStructure)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcProduct >::ptr v5_RelatedElements, IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedElements)->generalize()); e->setArgument(5,(v6_RelatingStructure)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelCoversBldgElements
IfcElement* IfcRelCoversBldgElements::RelatingBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelCoversBldgElements::setRelatingBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcCovering >::ptr IfcRelCoversBldgElements::RelatedCoverings() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcCovering>(); }
void IfcRelCoversBldgElements::setRelatedCoverings(IfcTemplatedEntityList< IfcCovering >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelCoversBldgElements::declaration() const { return *IfcRelCoversBldgElements_type; }
Type::Enum IfcRelCoversBldgElements::Class() { return Type::IfcRelCoversBldgElements; }
IfcRelCoversBldgElements::IfcRelCoversBldgElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelCoversBldgElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelCoversBldgElements::IfcRelCoversBldgElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingBuildingElement, IfcTemplatedEntityList< IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingBuildingElement)); e->setArgument(5,(v6_RelatedCoverings)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelCoversSpaces
IfcSpace* IfcRelCoversSpaces::RelatingSpace() const { return (IfcSpace*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelCoversSpaces::setRelatingSpace(IfcSpace* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcCovering >::ptr IfcRelCoversSpaces::RelatedCoverings() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcCovering>(); }
void IfcRelCoversSpaces::setRelatedCoverings(IfcTemplatedEntityList< IfcCovering >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelCoversSpaces::declaration() const { return *IfcRelCoversSpaces_type; }
Type::Enum IfcRelCoversSpaces::Class() { return Type::IfcRelCoversSpaces; }
IfcRelCoversSpaces::IfcRelCoversSpaces(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelCoversSpaces)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelCoversSpaces::IfcRelCoversSpaces(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSpace* v5_RelatingSpace, IfcTemplatedEntityList< IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSpace)); e->setArgument(5,(v6_RelatedCoverings)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDeclares
IfcContext* IfcRelDeclares::RelatingContext() const { return (IfcContext*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelDeclares::setRelatingContext(IfcContext* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcEntityList::ptr IfcRelDeclares::RelatedDefinitions() const { return *data_->getArgument(5); }
void IfcRelDeclares::setRelatedDefinitions(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDeclares::declaration() const { return *IfcRelDeclares_type; }
Type::Enum IfcRelDeclares::Class() { return Type::IfcRelDeclares; }
IfcRelDeclares::IfcRelDeclares(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDeclares)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDeclares::IfcRelDeclares(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcContext* v5_RelatingContext, IfcEntityList::ptr v6_RelatedDefinitions) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingContext)); e->setArgument(5,(v6_RelatedDefinitions)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDecomposes


const IfcParse::entity& IfcRelDecomposes::declaration() const { return *IfcRelDecomposes_type; }
Type::Enum IfcRelDecomposes::Class() { return Type::IfcRelDecomposes; }
IfcRelDecomposes::IfcRelDecomposes(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDecomposes)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDecomposes::IfcRelDecomposes(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefines


const IfcParse::entity& IfcRelDefines::declaration() const { return *IfcRelDefines_type; }
Type::Enum IfcRelDefines::Class() { return Type::IfcRelDefines; }
IfcRelDefines::IfcRelDefines(IfcAbstractEntity* e) : IfcRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefines)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefines::IfcRelDefines(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefinesByObject
IfcTemplatedEntityList< IfcObject >::ptr IfcRelDefinesByObject::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcObject>(); }
void IfcRelDefinesByObject::setRelatedObjects(IfcTemplatedEntityList< IfcObject >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcObject* IfcRelDefinesByObject::RelatingObject() const { return (IfcObject*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelDefinesByObject::setRelatingObject(IfcObject* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDefinesByObject::declaration() const { return *IfcRelDefinesByObject_type; }
Type::Enum IfcRelDefinesByObject::Class() { return Type::IfcRelDefinesByObject; }
IfcRelDefinesByObject::IfcRelDefinesByObject(IfcAbstractEntity* e) : IfcRelDefines((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefinesByObject)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefinesByObject::IfcRelDefinesByObject(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObject >::ptr v5_RelatedObjects, IfcObject* v6_RelatingObject) : IfcRelDefines((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingObject)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefinesByProperties
IfcTemplatedEntityList< IfcObjectDefinition >::ptr IfcRelDefinesByProperties::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcObjectDefinition>(); }
void IfcRelDefinesByProperties::setRelatedObjects(IfcTemplatedEntityList< IfcObjectDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcPropertySetDefinitionSelect* IfcRelDefinesByProperties::RelatingPropertyDefinition() const { return (IfcPropertySetDefinitionSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelDefinesByProperties::setRelatingPropertyDefinition(IfcPropertySetDefinitionSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDefinesByProperties::declaration() const { return *IfcRelDefinesByProperties_type; }
Type::Enum IfcRelDefinesByProperties::Class() { return Type::IfcRelDefinesByProperties; }
IfcRelDefinesByProperties::IfcRelDefinesByProperties(IfcAbstractEntity* e) : IfcRelDefines((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefinesByProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefinesByProperties::IfcRelDefinesByProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v5_RelatedObjects, IfcPropertySetDefinitionSelect* v6_RelatingPropertyDefinition) : IfcRelDefines((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingPropertyDefinition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefinesByTemplate
IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr IfcRelDefinesByTemplate::RelatedPropertySets() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcPropertySetDefinition>(); }
void IfcRelDefinesByTemplate::setRelatedPropertySets(IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcPropertySetTemplate* IfcRelDefinesByTemplate::RelatingTemplate() const { return (IfcPropertySetTemplate*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelDefinesByTemplate::setRelatingTemplate(IfcPropertySetTemplate* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDefinesByTemplate::declaration() const { return *IfcRelDefinesByTemplate_type; }
Type::Enum IfcRelDefinesByTemplate::Class() { return Type::IfcRelDefinesByTemplate; }
IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(IfcAbstractEntity* e) : IfcRelDefines((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefinesByTemplate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr v5_RelatedPropertySets, IfcPropertySetTemplate* v6_RelatingTemplate) : IfcRelDefines((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedPropertySets)->generalize()); e->setArgument(5,(v6_RelatingTemplate)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelDefinesByType
IfcTemplatedEntityList< IfcObject >::ptr IfcRelDefinesByType::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcObject>(); }
void IfcRelDefinesByType::setRelatedObjects(IfcTemplatedEntityList< IfcObject >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcTypeObject* IfcRelDefinesByType::RelatingType() const { return (IfcTypeObject*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelDefinesByType::setRelatingType(IfcTypeObject* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelDefinesByType::declaration() const { return *IfcRelDefinesByType_type; }
Type::Enum IfcRelDefinesByType::Class() { return Type::IfcRelDefinesByType; }
IfcRelDefinesByType::IfcRelDefinesByType(IfcAbstractEntity* e) : IfcRelDefines((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelDefinesByType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelDefinesByType::IfcRelDefinesByType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcObject >::ptr v5_RelatedObjects, IfcTypeObject* v6_RelatingType) : IfcRelDefines((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedObjects)->generalize()); e->setArgument(5,(v6_RelatingType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelFillsElement
IfcOpeningElement* IfcRelFillsElement::RelatingOpeningElement() const { return (IfcOpeningElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelFillsElement::setRelatingOpeningElement(IfcOpeningElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelFillsElement::RelatedBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelFillsElement::setRelatedBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelFillsElement::declaration() const { return *IfcRelFillsElement_type; }
Type::Enum IfcRelFillsElement::Class() { return Type::IfcRelFillsElement; }
IfcRelFillsElement::IfcRelFillsElement(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelFillsElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelFillsElement::IfcRelFillsElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcOpeningElement* v5_RelatingOpeningElement, IfcElement* v6_RelatedBuildingElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingOpeningElement)); e->setArgument(5,(v6_RelatedBuildingElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelFlowControlElements
IfcTemplatedEntityList< IfcDistributionControlElement >::ptr IfcRelFlowControlElements::RelatedControlElements() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcDistributionControlElement>(); }
void IfcRelFlowControlElements::setRelatedControlElements(IfcTemplatedEntityList< IfcDistributionControlElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcDistributionFlowElement* IfcRelFlowControlElements::RelatingFlowElement() const { return (IfcDistributionFlowElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelFlowControlElements::setRelatingFlowElement(IfcDistributionFlowElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelFlowControlElements::declaration() const { return *IfcRelFlowControlElements_type; }
Type::Enum IfcRelFlowControlElements::Class() { return Type::IfcRelFlowControlElements; }
IfcRelFlowControlElements::IfcRelFlowControlElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelFlowControlElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcDistributionControlElement >::ptr v5_RelatedControlElements, IfcDistributionFlowElement* v6_RelatingFlowElement) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedControlElements)->generalize()); e->setArgument(5,(v6_RelatingFlowElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelInterferesElements
IfcElement* IfcRelInterferesElements::RelatingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelInterferesElements::setRelatingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelInterferesElements::RelatedElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelInterferesElements::setRelatedElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelInterferesElements::hasInterferenceGeometry() const { return !data_->getArgument(6)->isNull(); }
IfcConnectionGeometry* IfcRelInterferesElements::InterferenceGeometry() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelInterferesElements::setInterferenceGeometry(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelInterferesElements::hasInterferenceType() const { return !data_->getArgument(7)->isNull(); }
std::string IfcRelInterferesElements::InterferenceType() const { return *data_->getArgument(7); }
void IfcRelInterferesElements::setInterferenceType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
boost::logic::tribool IfcRelInterferesElements::ImpliedOrder() const { return *data_->getArgument(8); }
void IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcRelInterferesElements::declaration() const { return *IfcRelInterferesElements_type; }
Type::Enum IfcRelInterferesElements::Class() { return Type::IfcRelInterferesElements; }
IfcRelInterferesElements::IfcRelInterferesElements(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelInterferesElements)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelInterferesElements::IfcRelInterferesElements(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingElement, IfcElement* v6_RelatedElement, IfcConnectionGeometry* v7_InterferenceGeometry, boost::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingElement)); e->setArgument(5,(v6_RelatedElement)); e->setArgument(6,(v7_InterferenceGeometry)); if (v8_InterferenceType) { e->setArgument(7,(*v8_InterferenceType)); } else { e->setArgument(7); } e->setArgument(8,(v9_ImpliedOrder)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelNests
IfcObjectDefinition* IfcRelNests::RelatingObject() const { return (IfcObjectDefinition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelNests::setRelatingObject(IfcObjectDefinition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcObjectDefinition >::ptr IfcRelNests::RelatedObjects() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcObjectDefinition>(); }
void IfcRelNests::setRelatedObjects(IfcTemplatedEntityList< IfcObjectDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelNests::declaration() const { return *IfcRelNests_type; }
Type::Enum IfcRelNests::Class() { return Type::IfcRelNests; }
IfcRelNests::IfcRelNests(IfcAbstractEntity* e) : IfcRelDecomposes((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelNests)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelNests::IfcRelNests(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcObjectDefinition* v5_RelatingObject, IfcTemplatedEntityList< IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingObject)); e->setArgument(5,(v6_RelatedObjects)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelProjectsElement
IfcElement* IfcRelProjectsElement::RelatingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelProjectsElement::setRelatingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcFeatureElementAddition* IfcRelProjectsElement::RelatedFeatureElement() const { return (IfcFeatureElementAddition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelProjectsElement::setRelatedFeatureElement(IfcFeatureElementAddition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelProjectsElement::declaration() const { return *IfcRelProjectsElement_type; }
Type::Enum IfcRelProjectsElement::Class() { return Type::IfcRelProjectsElement; }
IfcRelProjectsElement::IfcRelProjectsElement(IfcAbstractEntity* e) : IfcRelDecomposes((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelProjectsElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelProjectsElement::IfcRelProjectsElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingElement, IfcFeatureElementAddition* v6_RelatedFeatureElement) : IfcRelDecomposes((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingElement)); e->setArgument(5,(v6_RelatedFeatureElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelReferencedInSpatialStructure
IfcTemplatedEntityList< IfcProduct >::ptr IfcRelReferencedInSpatialStructure::RelatedElements() const { IfcEntityList::ptr es = *data_->getArgument(4); return es->as<IfcProduct>(); }
void IfcRelReferencedInSpatialStructure::setRelatedElements(IfcTemplatedEntityList< IfcProduct >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v->generalize()); }
IfcSpatialElement* IfcRelReferencedInSpatialStructure::RelatingStructure() const { return (IfcSpatialElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelReferencedInSpatialStructure::setRelatingStructure(IfcSpatialElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelReferencedInSpatialStructure::declaration() const { return *IfcRelReferencedInSpatialStructure_type; }
Type::Enum IfcRelReferencedInSpatialStructure::Class() { return Type::IfcRelReferencedInSpatialStructure; }
IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelReferencedInSpatialStructure)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcTemplatedEntityList< IfcProduct >::ptr v5_RelatedElements, IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatedElements)->generalize()); e->setArgument(5,(v6_RelatingStructure)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSequence
IfcProcess* IfcRelSequence::RelatingProcess() const { return (IfcProcess*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelSequence::setRelatingProcess(IfcProcess* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcProcess* IfcRelSequence::RelatedProcess() const { return (IfcProcess*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelSequence::setRelatedProcess(IfcProcess* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelSequence::hasTimeLag() const { return !data_->getArgument(6)->isNull(); }
IfcLagTime* IfcRelSequence::TimeLag() const { return (IfcLagTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelSequence::setTimeLag(IfcLagTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcRelSequence::hasSequenceType() const { return !data_->getArgument(7)->isNull(); }
IfcSequenceEnum::IfcSequenceEnum IfcRelSequence::SequenceType() const { return IfcSequenceEnum::FromString(*data_->getArgument(7)); }
void IfcRelSequence::setSequenceType(IfcSequenceEnum::IfcSequenceEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcSequenceEnum::ToString(v)); }
bool IfcRelSequence::hasUserDefinedSequenceType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcRelSequence::UserDefinedSequenceType() const { return *data_->getArgument(8); }
void IfcRelSequence::setUserDefinedSequenceType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcRelSequence::declaration() const { return *IfcRelSequence_type; }
Type::Enum IfcRelSequence::Class() { return Type::IfcRelSequence; }
IfcRelSequence::IfcRelSequence(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSequence)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSequence::IfcRelSequence(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcProcess* v5_RelatingProcess, IfcProcess* v6_RelatedProcess, IfcLagTime* v7_TimeLag, boost::optional< IfcSequenceEnum::IfcSequenceEnum > v8_SequenceType, boost::optional< std::string > v9_UserDefinedSequenceType) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingProcess)); e->setArgument(5,(v6_RelatedProcess)); e->setArgument(6,(v7_TimeLag)); if (v8_SequenceType) { e->setArgument(7,*v8_SequenceType,IfcSequenceEnum::ToString(*v8_SequenceType)); } else { e->setArgument(7); } if (v9_UserDefinedSequenceType) { e->setArgument(8,(*v9_UserDefinedSequenceType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelServicesBuildings
IfcSystem* IfcRelServicesBuildings::RelatingSystem() const { return (IfcSystem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelServicesBuildings::setRelatingSystem(IfcSystem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcSpatialElement >::ptr IfcRelServicesBuildings::RelatedBuildings() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcSpatialElement>(); }
void IfcRelServicesBuildings::setRelatedBuildings(IfcTemplatedEntityList< IfcSpatialElement >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcRelServicesBuildings::declaration() const { return *IfcRelServicesBuildings_type; }
Type::Enum IfcRelServicesBuildings::Class() { return Type::IfcRelServicesBuildings; }
IfcRelServicesBuildings::IfcRelServicesBuildings(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelServicesBuildings)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelServicesBuildings::IfcRelServicesBuildings(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSystem* v5_RelatingSystem, IfcTemplatedEntityList< IfcSpatialElement >::ptr v6_RelatedBuildings) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSystem)); e->setArgument(5,(v6_RelatedBuildings)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSpaceBoundary
IfcSpaceBoundarySelect* IfcRelSpaceBoundary::RelatingSpace() const { return (IfcSpaceBoundarySelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelSpaceBoundary::setRelatingSpace(IfcSpaceBoundarySelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcElement* IfcRelSpaceBoundary::RelatedBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelSpaceBoundary::setRelatedBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcRelSpaceBoundary::hasConnectionGeometry() const { return !data_->getArgument(6)->isNull(); }
IfcConnectionGeometry* IfcRelSpaceBoundary::ConnectionGeometry() const { return (IfcConnectionGeometry*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcRelSpaceBoundary::setConnectionGeometry(IfcConnectionGeometry* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum IfcRelSpaceBoundary::PhysicalOrVirtualBoundary() const { return IfcPhysicalOrVirtualEnum::FromString(*data_->getArgument(7)); }
void IfcRelSpaceBoundary::setPhysicalOrVirtualBoundary(IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcPhysicalOrVirtualEnum::ToString(v)); }
IfcInternalOrExternalEnum::IfcInternalOrExternalEnum IfcRelSpaceBoundary::InternalOrExternalBoundary() const { return IfcInternalOrExternalEnum::FromString(*data_->getArgument(8)); }
void IfcRelSpaceBoundary::setInternalOrExternalBoundary(IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcInternalOrExternalEnum::ToString(v)); }


const IfcParse::entity& IfcRelSpaceBoundary::declaration() const { return *IfcRelSpaceBoundary_type; }
Type::Enum IfcRelSpaceBoundary::Class() { return Type::IfcRelSpaceBoundary; }
IfcRelSpaceBoundary::IfcRelSpaceBoundary(IfcAbstractEntity* e) : IfcRelConnects((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSpaceBoundary)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSpaceBoundary::IfcRelSpaceBoundary(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSpaceBoundarySelect* v5_RelatingSpace, IfcElement* v6_RelatedBuildingElement, IfcConnectionGeometry* v7_ConnectionGeometry, IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum v8_PhysicalOrVirtualBoundary, IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v9_InternalOrExternalBoundary) : IfcRelConnects((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSpace)); e->setArgument(5,(v6_RelatedBuildingElement)); e->setArgument(6,(v7_ConnectionGeometry)); e->setArgument(7,v8_PhysicalOrVirtualBoundary,IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary)); e->setArgument(8,v9_InternalOrExternalBoundary,IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSpaceBoundary1stLevel
bool IfcRelSpaceBoundary1stLevel::hasParentBoundary() const { return !data_->getArgument(9)->isNull(); }
IfcRelSpaceBoundary1stLevel* IfcRelSpaceBoundary1stLevel::ParentBoundary() const { return (IfcRelSpaceBoundary1stLevel*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcRelSpaceBoundary1stLevel::setParentBoundary(IfcRelSpaceBoundary1stLevel* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }

IfcRelSpaceBoundary1stLevel::list::ptr IfcRelSpaceBoundary1stLevel::InnerBoundaries() const { return data_->getInverse(Type::IfcRelSpaceBoundary1stLevel, 9)->as<IfcRelSpaceBoundary1stLevel>(); }

const IfcParse::entity& IfcRelSpaceBoundary1stLevel::declaration() const { return *IfcRelSpaceBoundary1stLevel_type; }
Type::Enum IfcRelSpaceBoundary1stLevel::Class() { return Type::IfcRelSpaceBoundary1stLevel; }
IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(IfcAbstractEntity* e) : IfcRelSpaceBoundary((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSpaceBoundary1stLevel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSpaceBoundarySelect* v5_RelatingSpace, IfcElement* v6_RelatedBuildingElement, IfcConnectionGeometry* v7_ConnectionGeometry, IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum v8_PhysicalOrVirtualBoundary, IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v9_InternalOrExternalBoundary, IfcRelSpaceBoundary1stLevel* v10_ParentBoundary) : IfcRelSpaceBoundary((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSpace)); e->setArgument(5,(v6_RelatedBuildingElement)); e->setArgument(6,(v7_ConnectionGeometry)); e->setArgument(7,v8_PhysicalOrVirtualBoundary,IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary)); e->setArgument(8,v9_InternalOrExternalBoundary,IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary)); e->setArgument(9,(v10_ParentBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelSpaceBoundary2ndLevel
bool IfcRelSpaceBoundary2ndLevel::hasCorrespondingBoundary() const { return !data_->getArgument(10)->isNull(); }
IfcRelSpaceBoundary2ndLevel* IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary() const { return (IfcRelSpaceBoundary2ndLevel*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(10))); }
void IfcRelSpaceBoundary2ndLevel::setCorrespondingBoundary(IfcRelSpaceBoundary2ndLevel* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }

IfcRelSpaceBoundary2ndLevel::list::ptr IfcRelSpaceBoundary2ndLevel::Corresponds() const { return data_->getInverse(Type::IfcRelSpaceBoundary2ndLevel, 10)->as<IfcRelSpaceBoundary2ndLevel>(); }

const IfcParse::entity& IfcRelSpaceBoundary2ndLevel::declaration() const { return *IfcRelSpaceBoundary2ndLevel_type; }
Type::Enum IfcRelSpaceBoundary2ndLevel::Class() { return Type::IfcRelSpaceBoundary2ndLevel; }
IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(IfcAbstractEntity* e) : IfcRelSpaceBoundary1stLevel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelSpaceBoundary2ndLevel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcSpaceBoundarySelect* v5_RelatingSpace, IfcElement* v6_RelatedBuildingElement, IfcConnectionGeometry* v7_ConnectionGeometry, IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum v8_PhysicalOrVirtualBoundary, IfcInternalOrExternalEnum::IfcInternalOrExternalEnum v9_InternalOrExternalBoundary, IfcRelSpaceBoundary1stLevel* v10_ParentBoundary, IfcRelSpaceBoundary2ndLevel* v11_CorrespondingBoundary) : IfcRelSpaceBoundary1stLevel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingSpace)); e->setArgument(5,(v6_RelatedBuildingElement)); e->setArgument(6,(v7_ConnectionGeometry)); e->setArgument(7,v8_PhysicalOrVirtualBoundary,IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary)); e->setArgument(8,v9_InternalOrExternalBoundary,IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary)); e->setArgument(9,(v10_ParentBoundary)); e->setArgument(10,(v11_CorrespondingBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelVoidsElement
IfcElement* IfcRelVoidsElement::RelatingBuildingElement() const { return (IfcElement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRelVoidsElement::setRelatingBuildingElement(IfcElement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcFeatureElementSubtraction* IfcRelVoidsElement::RelatedOpeningElement() const { return (IfcFeatureElementSubtraction*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcRelVoidsElement::setRelatedOpeningElement(IfcFeatureElementSubtraction* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRelVoidsElement::declaration() const { return *IfcRelVoidsElement_type; }
Type::Enum IfcRelVoidsElement::Class() { return Type::IfcRelVoidsElement; }
IfcRelVoidsElement::IfcRelVoidsElement(IfcAbstractEntity* e) : IfcRelDecomposes((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelVoidsElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelVoidsElement::IfcRelVoidsElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcElement* v5_RelatingBuildingElement, IfcFeatureElementSubtraction* v6_RelatedOpeningElement) : IfcRelDecomposes((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,(v5_RelatingBuildingElement)); e->setArgument(5,(v6_RelatedOpeningElement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRelationship


const IfcParse::entity& IfcRelationship::declaration() const { return *IfcRelationship_type; }
Type::Enum IfcRelationship::Class() { return Type::IfcRelationship; }
IfcRelationship::IfcRelationship(IfcAbstractEntity* e) : IfcRoot((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRelationship::IfcRelationship(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcReparametrisedCompositeCurveSegment
double IfcReparametrisedCompositeCurveSegment::ParamLength() const { return *data_->getArgument(3); }
void IfcReparametrisedCompositeCurveSegment::setParamLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcReparametrisedCompositeCurveSegment::declaration() const { return *IfcReparametrisedCompositeCurveSegment_type; }
Type::Enum IfcReparametrisedCompositeCurveSegment::Class() { return Type::IfcReparametrisedCompositeCurveSegment; }
IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(IfcAbstractEntity* e) : IfcCompositeCurveSegment((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcReparametrisedCompositeCurveSegment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(IfcTransitionCode::IfcTransitionCode v1_Transition, bool v2_SameSense, IfcCurve* v3_ParentCurve, double v4_ParamLength) : IfcCompositeCurveSegment((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_Transition,IfcTransitionCode::ToString(v1_Transition)); e->setArgument(1,(v2_SameSense)); e->setArgument(2,(v3_ParentCurve)); e->setArgument(3,(v4_ParamLength)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentation
IfcRepresentationContext* IfcRepresentation::ContextOfItems() const { return (IfcRepresentationContext*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcRepresentation::setContextOfItems(IfcRepresentationContext* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcRepresentation::hasRepresentationIdentifier() const { return !data_->getArgument(1)->isNull(); }
std::string IfcRepresentation::RepresentationIdentifier() const { return *data_->getArgument(1); }
void IfcRepresentation::setRepresentationIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcRepresentation::hasRepresentationType() const { return !data_->getArgument(2)->isNull(); }
std::string IfcRepresentation::RepresentationType() const { return *data_->getArgument(2); }
void IfcRepresentation::setRepresentationType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTemplatedEntityList< IfcRepresentationItem >::ptr IfcRepresentation::Items() const { IfcEntityList::ptr es = *data_->getArgument(3); return es->as<IfcRepresentationItem>(); }
void IfcRepresentation::setItems(IfcTemplatedEntityList< IfcRepresentationItem >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v->generalize()); }

IfcRepresentationMap::list::ptr IfcRepresentation::RepresentationMap() const { return data_->getInverse(Type::IfcRepresentationMap, 1)->as<IfcRepresentationMap>(); }
IfcPresentationLayerAssignment::list::ptr IfcRepresentation::LayerAssignments() const { return data_->getInverse(Type::IfcPresentationLayerAssignment, 2)->as<IfcPresentationLayerAssignment>(); }
IfcProductRepresentation::list::ptr IfcRepresentation::OfProductRepresentation() const { return data_->getInverse(Type::IfcProductRepresentation, 2)->as<IfcProductRepresentation>(); }

const IfcParse::entity& IfcRepresentation::declaration() const { return *IfcRepresentation_type; }
Type::Enum IfcRepresentation::Class() { return Type::IfcRepresentation; }
IfcRepresentation::IfcRepresentation(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentation::IfcRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentationContext
bool IfcRepresentationContext::hasContextIdentifier() const { return !data_->getArgument(0)->isNull(); }
std::string IfcRepresentationContext::ContextIdentifier() const { return *data_->getArgument(0); }
void IfcRepresentationContext::setContextIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcRepresentationContext::hasContextType() const { return !data_->getArgument(1)->isNull(); }
std::string IfcRepresentationContext::ContextType() const { return *data_->getArgument(1); }
void IfcRepresentationContext::setContextType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcRepresentation::list::ptr IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(Type::IfcRepresentation, 0)->as<IfcRepresentation>(); }

const IfcParse::entity& IfcRepresentationContext::declaration() const { return *IfcRepresentationContext_type; }
Type::Enum IfcRepresentationContext::Class() { return Type::IfcRepresentationContext; }
IfcRepresentationContext::IfcRepresentationContext(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentationContext)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentationContext::IfcRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_ContextIdentifier) { e->setArgument(0,(*v1_ContextIdentifier)); } else { e->setArgument(0); } if (v2_ContextType) { e->setArgument(1,(*v2_ContextType)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentationItem

IfcPresentationLayerAssignment::list::ptr IfcRepresentationItem::LayerAssignment() const { return data_->getInverse(Type::IfcPresentationLayerAssignment, 2)->as<IfcPresentationLayerAssignment>(); }
IfcStyledItem::list::ptr IfcRepresentationItem::StyledByItem() const { return data_->getInverse(Type::IfcStyledItem, 0)->as<IfcStyledItem>(); }

const IfcParse::entity& IfcRepresentationItem::declaration() const { return *IfcRepresentationItem_type; }
Type::Enum IfcRepresentationItem::Class() { return Type::IfcRepresentationItem; }
IfcRepresentationItem::IfcRepresentationItem(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentationItem::IfcRepresentationItem() : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRepresentationMap
IfcAxis2Placement* IfcRepresentationMap::MappingOrigin() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcRepresentationMap::setMappingOrigin(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcRepresentation* IfcRepresentationMap::MappedRepresentation() const { return (IfcRepresentation*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcRepresentationMap::setMappedRepresentation(IfcRepresentation* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }

IfcShapeAspect::list::ptr IfcRepresentationMap::HasShapeAspects() const { return data_->getInverse(Type::IfcShapeAspect, 4)->as<IfcShapeAspect>(); }
IfcMappedItem::list::ptr IfcRepresentationMap::MapUsage() const { return data_->getInverse(Type::IfcMappedItem, 0)->as<IfcMappedItem>(); }

const IfcParse::entity& IfcRepresentationMap::declaration() const { return *IfcRepresentationMap_type; }
Type::Enum IfcRepresentationMap::Class() { return Type::IfcRepresentationMap; }
IfcRepresentationMap::IfcRepresentationMap(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRepresentationMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRepresentationMap::IfcRepresentationMap(IfcAxis2Placement* v1_MappingOrigin, IfcRepresentation* v2_MappedRepresentation) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_MappingOrigin)); e->setArgument(1,(v2_MappedRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcResource
bool IfcResource::hasIdentification() const { return !data_->getArgument(5)->isNull(); }
std::string IfcResource::Identification() const { return *data_->getArgument(5); }
void IfcResource::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcResource::hasLongDescription() const { return !data_->getArgument(6)->isNull(); }
std::string IfcResource::LongDescription() const { return *data_->getArgument(6); }
void IfcResource::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }

IfcRelAssignsToResource::list::ptr IfcResource::ResourceOf() const { return data_->getInverse(Type::IfcRelAssignsToResource, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& IfcResource::declaration() const { return *IfcResource_type; }
Type::Enum IfcResource::Class() { return Type::IfcResource; }
IfcResource::IfcResource(IfcAbstractEntity* e) : IfcObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcResource::IfcResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription) : IfcObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcResourceApprovalRelationship
IfcEntityList::ptr IfcResourceApprovalRelationship::RelatedResourceObjects() const { return *data_->getArgument(2); }
void IfcResourceApprovalRelationship::setRelatedResourceObjects(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcApproval* IfcResourceApprovalRelationship::RelatingApproval() const { return (IfcApproval*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcResourceApprovalRelationship::setRelatingApproval(IfcApproval* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcResourceApprovalRelationship::declaration() const { return *IfcResourceApprovalRelationship_type; }
Type::Enum IfcResourceApprovalRelationship::Class() { return Type::IfcResourceApprovalRelationship; }
IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcResourceApprovalRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcEntityList::ptr v3_RelatedResourceObjects, IfcApproval* v4_RelatingApproval) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatedResourceObjects)); e->setArgument(3,(v4_RelatingApproval)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcResourceConstraintRelationship
IfcConstraint* IfcResourceConstraintRelationship::RelatingConstraint() const { return (IfcConstraint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcResourceConstraintRelationship::setRelatingConstraint(IfcConstraint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcEntityList::ptr IfcResourceConstraintRelationship::RelatedResourceObjects() const { return *data_->getArgument(3); }
void IfcResourceConstraintRelationship::setRelatedResourceObjects(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcResourceConstraintRelationship::declaration() const { return *IfcResourceConstraintRelationship_type; }
Type::Enum IfcResourceConstraintRelationship::Class() { return Type::IfcResourceConstraintRelationship; }
IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(IfcAbstractEntity* e) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcResourceConstraintRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, IfcConstraint* v3_RelatingConstraint, IfcEntityList::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_RelatingConstraint)); e->setArgument(3,(v4_RelatedResourceObjects)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcResourceLevelRelationship
bool IfcResourceLevelRelationship::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcResourceLevelRelationship::Name() const { return *data_->getArgument(0); }
void IfcResourceLevelRelationship::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcResourceLevelRelationship::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcResourceLevelRelationship::Description() const { return *data_->getArgument(1); }
void IfcResourceLevelRelationship::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcResourceLevelRelationship::declaration() const { return *IfcResourceLevelRelationship_type; }
Type::Enum IfcResourceLevelRelationship::Class() { return Type::IfcResourceLevelRelationship; }
IfcResourceLevelRelationship::IfcResourceLevelRelationship(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcResourceLevelRelationship)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcResourceTime
bool IfcResourceTime::hasScheduleWork() const { return !data_->getArgument(3)->isNull(); }
std::string IfcResourceTime::ScheduleWork() const { return *data_->getArgument(3); }
void IfcResourceTime::setScheduleWork(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcResourceTime::hasScheduleUsage() const { return !data_->getArgument(4)->isNull(); }
double IfcResourceTime::ScheduleUsage() const { return *data_->getArgument(4); }
void IfcResourceTime::setScheduleUsage(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcResourceTime::hasScheduleStart() const { return !data_->getArgument(5)->isNull(); }
std::string IfcResourceTime::ScheduleStart() const { return *data_->getArgument(5); }
void IfcResourceTime::setScheduleStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcResourceTime::hasScheduleFinish() const { return !data_->getArgument(6)->isNull(); }
std::string IfcResourceTime::ScheduleFinish() const { return *data_->getArgument(6); }
void IfcResourceTime::setScheduleFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcResourceTime::hasScheduleContour() const { return !data_->getArgument(7)->isNull(); }
std::string IfcResourceTime::ScheduleContour() const { return *data_->getArgument(7); }
void IfcResourceTime::setScheduleContour(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcResourceTime::hasLevelingDelay() const { return !data_->getArgument(8)->isNull(); }
std::string IfcResourceTime::LevelingDelay() const { return *data_->getArgument(8); }
void IfcResourceTime::setLevelingDelay(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcResourceTime::hasIsOverAllocated() const { return !data_->getArgument(9)->isNull(); }
bool IfcResourceTime::IsOverAllocated() const { return *data_->getArgument(9); }
void IfcResourceTime::setIsOverAllocated(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcResourceTime::hasStatusTime() const { return !data_->getArgument(10)->isNull(); }
std::string IfcResourceTime::StatusTime() const { return *data_->getArgument(10); }
void IfcResourceTime::setStatusTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcResourceTime::hasActualWork() const { return !data_->getArgument(11)->isNull(); }
std::string IfcResourceTime::ActualWork() const { return *data_->getArgument(11); }
void IfcResourceTime::setActualWork(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcResourceTime::hasActualUsage() const { return !data_->getArgument(12)->isNull(); }
double IfcResourceTime::ActualUsage() const { return *data_->getArgument(12); }
void IfcResourceTime::setActualUsage(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcResourceTime::hasActualStart() const { return !data_->getArgument(13)->isNull(); }
std::string IfcResourceTime::ActualStart() const { return *data_->getArgument(13); }
void IfcResourceTime::setActualStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcResourceTime::hasActualFinish() const { return !data_->getArgument(14)->isNull(); }
std::string IfcResourceTime::ActualFinish() const { return *data_->getArgument(14); }
void IfcResourceTime::setActualFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcResourceTime::hasRemainingWork() const { return !data_->getArgument(15)->isNull(); }
std::string IfcResourceTime::RemainingWork() const { return *data_->getArgument(15); }
void IfcResourceTime::setRemainingWork(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcResourceTime::hasRemainingUsage() const { return !data_->getArgument(16)->isNull(); }
double IfcResourceTime::RemainingUsage() const { return *data_->getArgument(16); }
void IfcResourceTime::setRemainingUsage(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcResourceTime::hasCompletion() const { return !data_->getArgument(17)->isNull(); }
double IfcResourceTime::Completion() const { return *data_->getArgument(17); }
void IfcResourceTime::setCompletion(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v); }


const IfcParse::entity& IfcResourceTime::declaration() const { return *IfcResourceTime_type; }
Type::Enum IfcResourceTime::Class() { return Type::IfcResourceTime; }
IfcResourceTime::IfcResourceTime(IfcAbstractEntity* e) : IfcSchedulingTime((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcResourceTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcResourceTime::IfcResourceTime(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ScheduleWork, boost::optional< double > v5_ScheduleUsage, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_ScheduleContour, boost::optional< std::string > v9_LevelingDelay, boost::optional< bool > v10_IsOverAllocated, boost::optional< std::string > v11_StatusTime, boost::optional< std::string > v12_ActualWork, boost::optional< double > v13_ActualUsage, boost::optional< std::string > v14_ActualStart, boost::optional< std::string > v15_ActualFinish, boost::optional< std::string > v16_RemainingWork, boost::optional< double > v17_RemainingUsage, boost::optional< double > v18_Completion) : IfcSchedulingTime((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } if (v4_ScheduleWork) { e->setArgument(3,(*v4_ScheduleWork)); } else { e->setArgument(3); } if (v5_ScheduleUsage) { e->setArgument(4,(*v5_ScheduleUsage)); } else { e->setArgument(4); } if (v6_ScheduleStart) { e->setArgument(5,(*v6_ScheduleStart)); } else { e->setArgument(5); } if (v7_ScheduleFinish) { e->setArgument(6,(*v7_ScheduleFinish)); } else { e->setArgument(6); } if (v8_ScheduleContour) { e->setArgument(7,(*v8_ScheduleContour)); } else { e->setArgument(7); } if (v9_LevelingDelay) { e->setArgument(8,(*v9_LevelingDelay)); } else { e->setArgument(8); } if (v10_IsOverAllocated) { e->setArgument(9,(*v10_IsOverAllocated)); } else { e->setArgument(9); } if (v11_StatusTime) { e->setArgument(10,(*v11_StatusTime)); } else { e->setArgument(10); } if (v12_ActualWork) { e->setArgument(11,(*v12_ActualWork)); } else { e->setArgument(11); } if (v13_ActualUsage) { e->setArgument(12,(*v13_ActualUsage)); } else { e->setArgument(12); } if (v14_ActualStart) { e->setArgument(13,(*v14_ActualStart)); } else { e->setArgument(13); } if (v15_ActualFinish) { e->setArgument(14,(*v15_ActualFinish)); } else { e->setArgument(14); } if (v16_RemainingWork) { e->setArgument(15,(*v16_RemainingWork)); } else { e->setArgument(15); } if (v17_RemainingUsage) { e->setArgument(16,(*v17_RemainingUsage)); } else { e->setArgument(16); } if (v18_Completion) { e->setArgument(17,(*v18_Completion)); } else { e->setArgument(17); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRevolvedAreaSolid
IfcAxis1Placement* IfcRevolvedAreaSolid::Axis() const { return (IfcAxis1Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcRevolvedAreaSolid::setAxis(IfcAxis1Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcRevolvedAreaSolid::Angle() const { return *data_->getArgument(3); }
void IfcRevolvedAreaSolid::setAngle(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcRevolvedAreaSolid::declaration() const { return *IfcRevolvedAreaSolid_type; }
Type::Enum IfcRevolvedAreaSolid::Class() { return Type::IfcRevolvedAreaSolid; }
IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRevolvedAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcAxis1Placement* v3_Axis, double v4_Angle) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_Axis)); e->setArgument(3,(v4_Angle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRevolvedAreaSolidTapered
IfcProfileDef* IfcRevolvedAreaSolidTapered::EndSweptArea() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcRevolvedAreaSolidTapered::setEndSweptArea(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcRevolvedAreaSolidTapered::declaration() const { return *IfcRevolvedAreaSolidTapered_type; }
Type::Enum IfcRevolvedAreaSolidTapered::Class() { return Type::IfcRevolvedAreaSolidTapered; }
IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(IfcAbstractEntity* e) : IfcRevolvedAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRevolvedAreaSolidTapered)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcAxis1Placement* v3_Axis, double v4_Angle, IfcProfileDef* v5_EndSweptArea) : IfcRevolvedAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_Axis)); e->setArgument(3,(v4_Angle)); e->setArgument(4,(v5_EndSweptArea)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRightCircularCone
double IfcRightCircularCone::Height() const { return *data_->getArgument(1); }
void IfcRightCircularCone::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRightCircularCone::BottomRadius() const { return *data_->getArgument(2); }
void IfcRightCircularCone::setBottomRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcRightCircularCone::declaration() const { return *IfcRightCircularCone_type; }
Type::Enum IfcRightCircularCone::Class() { return Type::IfcRightCircularCone; }
IfcRightCircularCone::IfcRightCircularCone(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRightCircularCone)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRightCircularCone::IfcRightCircularCone(IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Height)); e->setArgument(2,(v3_BottomRadius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRightCircularCylinder
double IfcRightCircularCylinder::Height() const { return *data_->getArgument(1); }
void IfcRightCircularCylinder::setHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcRightCircularCylinder::Radius() const { return *data_->getArgument(2); }
void IfcRightCircularCylinder::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcRightCircularCylinder::declaration() const { return *IfcRightCircularCylinder_type; }
Type::Enum IfcRightCircularCylinder::Class() { return Type::IfcRightCircularCylinder; }
IfcRightCircularCylinder::IfcRightCircularCylinder(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRightCircularCylinder)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRightCircularCylinder::IfcRightCircularCylinder(IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Height)); e->setArgument(2,(v3_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoof
bool IfcRoof::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcRoofTypeEnum::IfcRoofTypeEnum IfcRoof::PredefinedType() const { return IfcRoofTypeEnum::FromString(*data_->getArgument(8)); }
void IfcRoof::setPredefinedType(IfcRoofTypeEnum::IfcRoofTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcRoofTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRoof::declaration() const { return *IfcRoof_type; }
Type::Enum IfcRoof::Class() { return Type::IfcRoof; }
IfcRoof::IfcRoof(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRoof)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoof::IfcRoof(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcRoofTypeEnum::IfcRoofTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcRoofTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoofType
IfcRoofTypeEnum::IfcRoofTypeEnum IfcRoofType::PredefinedType() const { return IfcRoofTypeEnum::FromString(*data_->getArgument(9)); }
void IfcRoofType::setPredefinedType(IfcRoofTypeEnum::IfcRoofTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcRoofTypeEnum::ToString(v)); }


const IfcParse::entity& IfcRoofType::declaration() const { return *IfcRoofType_type; }
Type::Enum IfcRoofType::Class() { return Type::IfcRoofType; }
IfcRoofType::IfcRoofType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRoofType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoofType::IfcRoofType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcRoofTypeEnum::IfcRoofTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcRoofTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoot
std::string IfcRoot::GlobalId() const { return *data_->getArgument(0); }
void IfcRoot::setGlobalId(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcRoot::hasOwnerHistory() const { return !data_->getArgument(1)->isNull(); }
IfcOwnerHistory* IfcRoot::OwnerHistory() const { return (IfcOwnerHistory*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcRoot::setOwnerHistory(IfcOwnerHistory* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcRoot::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcRoot::Name() const { return *data_->getArgument(2); }
void IfcRoot::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcRoot::hasDescription() const { return !data_->getArgument(3)->isNull(); }
std::string IfcRoot::Description() const { return *data_->getArgument(3); }
void IfcRoot::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcRoot::declaration() const { return *IfcRoot_type; }
Type::Enum IfcRoot::Class() { return Type::IfcRoot; }
IfcRoot::IfcRoot(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcRoot)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoot::IfcRoot(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcRoundedRectangleProfileDef
double IfcRoundedRectangleProfileDef::RoundingRadius() const { return *data_->getArgument(5); }
void IfcRoundedRectangleProfileDef::setRoundingRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcRoundedRectangleProfileDef::declaration() const { return *IfcRoundedRectangleProfileDef_type; }
Type::Enum IfcRoundedRectangleProfileDef::Class() { return Type::IfcRoundedRectangleProfileDef; }
IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcAbstractEntity* e) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcRoundedRectangleProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius) : IfcRectangleProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_XDim)); e->setArgument(4,(v5_YDim)); e->setArgument(5,(v6_RoundingRadius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSIUnit
bool IfcSIUnit::hasPrefix() const { return !data_->getArgument(2)->isNull(); }
IfcSIPrefix::IfcSIPrefix IfcSIUnit::Prefix() const { return IfcSIPrefix::FromString(*data_->getArgument(2)); }
void IfcSIUnit::setPrefix(IfcSIPrefix::IfcSIPrefix v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcSIPrefix::ToString(v)); }
IfcSIUnitName::IfcSIUnitName IfcSIUnit::Name() const { return IfcSIUnitName::FromString(*data_->getArgument(3)); }
void IfcSIUnit::setName(IfcSIUnitName::IfcSIUnitName v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcSIUnitName::ToString(v)); }


const IfcParse::entity& IfcSIUnit::declaration() const { return *IfcSIUnit_type; }
Type::Enum IfcSIUnit::Class() { return Type::IfcSIUnit; }
IfcSIUnit::IfcSIUnit(IfcAbstractEntity* e) : IfcNamedUnit((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSIUnit)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSIUnit::IfcSIUnit(IfcUnitEnum::IfcUnitEnum v2_UnitType, boost::optional< IfcSIPrefix::IfcSIPrefix > v3_Prefix, IfcSIUnitName::IfcSIUnitName v4_Name) : IfcNamedUnit((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgumentDerived(0); e->setArgument(1,v2_UnitType,IfcUnitEnum::ToString(v2_UnitType)); if (v3_Prefix) { e->setArgument(2,*v3_Prefix,IfcSIPrefix::ToString(*v3_Prefix)); } else { e->setArgument(2); } e->setArgument(3,v4_Name,IfcSIUnitName::ToString(v4_Name)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSanitaryTerminal
bool IfcSanitaryTerminal::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum IfcSanitaryTerminal::PredefinedType() const { return IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSanitaryTerminal::setPredefinedType(IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSanitaryTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSanitaryTerminal::declaration() const { return *IfcSanitaryTerminal_type; }
Type::Enum IfcSanitaryTerminal::Class() { return Type::IfcSanitaryTerminal; }
IfcSanitaryTerminal::IfcSanitaryTerminal(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSanitaryTerminal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSanitaryTerminal::IfcSanitaryTerminal(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSanitaryTerminalTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSanitaryTerminalType
IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum IfcSanitaryTerminalType::PredefinedType() const { return IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSanitaryTerminalType::setPredefinedType(IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSanitaryTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSanitaryTerminalType::declaration() const { return *IfcSanitaryTerminalType_type; }
Type::Enum IfcSanitaryTerminalType::Class() { return Type::IfcSanitaryTerminalType; }
IfcSanitaryTerminalType::IfcSanitaryTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSanitaryTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSanitaryTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSchedulingTime
bool IfcSchedulingTime::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcSchedulingTime::Name() const { return *data_->getArgument(0); }
void IfcSchedulingTime::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSchedulingTime::hasDataOrigin() const { return !data_->getArgument(1)->isNull(); }
IfcDataOriginEnum::IfcDataOriginEnum IfcSchedulingTime::DataOrigin() const { return IfcDataOriginEnum::FromString(*data_->getArgument(1)); }
void IfcSchedulingTime::setDataOrigin(IfcDataOriginEnum::IfcDataOriginEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcDataOriginEnum::ToString(v)); }
bool IfcSchedulingTime::hasUserDefinedDataOrigin() const { return !data_->getArgument(2)->isNull(); }
std::string IfcSchedulingTime::UserDefinedDataOrigin() const { return *data_->getArgument(2); }
void IfcSchedulingTime::setUserDefinedDataOrigin(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSchedulingTime::declaration() const { return *IfcSchedulingTime_type; }
Type::Enum IfcSchedulingTime::Class() { return Type::IfcSchedulingTime; }
IfcSchedulingTime::IfcSchedulingTime(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcSchedulingTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSchedulingTime::IfcSchedulingTime(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSeamCurve


const IfcParse::entity& IfcSeamCurve::declaration() const { return *IfcSeamCurve_type; }
Type::Enum IfcSeamCurve::Class() { return Type::IfcSeamCurve; }
IfcSeamCurve::IfcSeamCurve(IfcAbstractEntity* e) : IfcSurfaceCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSeamCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSeamCurve::IfcSeamCurve(IfcCurve* v1_Curve3D, IfcTemplatedEntityList< IfcPcurve >::ptr v2_AssociatedGeometry, IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation v3_MasterRepresentation) : IfcSurfaceCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Curve3D)); e->setArgument(1,(v2_AssociatedGeometry)->generalize()); e->setArgument(2,v3_MasterRepresentation,IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSectionProperties
IfcSectionTypeEnum::IfcSectionTypeEnum IfcSectionProperties::SectionType() const { return IfcSectionTypeEnum::FromString(*data_->getArgument(0)); }
void IfcSectionProperties::setSectionType(IfcSectionTypeEnum::IfcSectionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v,IfcSectionTypeEnum::ToString(v)); }
IfcProfileDef* IfcSectionProperties::StartProfile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSectionProperties::setStartProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSectionProperties::hasEndProfile() const { return !data_->getArgument(2)->isNull(); }
IfcProfileDef* IfcSectionProperties::EndProfile() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSectionProperties::setEndProfile(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSectionProperties::declaration() const { return *IfcSectionProperties_type; }
Type::Enum IfcSectionProperties::Class() { return Type::IfcSectionProperties; }
IfcSectionProperties::IfcSectionProperties(IfcAbstractEntity* e) : IfcPreDefinedProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSectionProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSectionProperties::IfcSectionProperties(IfcSectionTypeEnum::IfcSectionTypeEnum v1_SectionType, IfcProfileDef* v2_StartProfile, IfcProfileDef* v3_EndProfile) : IfcPreDefinedProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_SectionType,IfcSectionTypeEnum::ToString(v1_SectionType)); e->setArgument(1,(v2_StartProfile)); e->setArgument(2,(v3_EndProfile)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSectionReinforcementProperties
double IfcSectionReinforcementProperties::LongitudinalStartPosition() const { return *data_->getArgument(0); }
void IfcSectionReinforcementProperties::setLongitudinalStartPosition(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcSectionReinforcementProperties::LongitudinalEndPosition() const { return *data_->getArgument(1); }
void IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSectionReinforcementProperties::hasTransversePosition() const { return !data_->getArgument(2)->isNull(); }
double IfcSectionReinforcementProperties::TransversePosition() const { return *data_->getArgument(2); }
void IfcSectionReinforcementProperties::setTransversePosition(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum IfcSectionReinforcementProperties::ReinforcementRole() const { return IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); }
void IfcSectionReinforcementProperties::setReinforcementRole(IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcReinforcingBarRoleEnum::ToString(v)); }
IfcSectionProperties* IfcSectionReinforcementProperties::SectionDefinition() const { return (IfcSectionProperties*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcSectionReinforcementProperties::setSectionDefinition(IfcSectionProperties* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcTemplatedEntityList< IfcReinforcementBarProperties >::ptr IfcSectionReinforcementProperties::CrossSectionReinforcementDefinitions() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcReinforcementBarProperties>(); }
void IfcSectionReinforcementProperties::setCrossSectionReinforcementDefinitions(IfcTemplatedEntityList< IfcReinforcementBarProperties >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }


const IfcParse::entity& IfcSectionReinforcementProperties::declaration() const { return *IfcSectionReinforcementProperties_type; }
Type::Enum IfcSectionReinforcementProperties::Class() { return Type::IfcSectionReinforcementProperties; }
IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(IfcAbstractEntity* e) : IfcPreDefinedProperties((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSectionReinforcementProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum v4_ReinforcementRole, IfcSectionProperties* v5_SectionDefinition, IfcTemplatedEntityList< IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions) : IfcPreDefinedProperties((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LongitudinalStartPosition)); e->setArgument(1,(v2_LongitudinalEndPosition)); if (v3_TransversePosition) { e->setArgument(2,(*v3_TransversePosition)); } else { e->setArgument(2); } e->setArgument(3,v4_ReinforcementRole,IfcReinforcingBarRoleEnum::ToString(v4_ReinforcementRole)); e->setArgument(4,(v5_SectionDefinition)); e->setArgument(5,(v6_CrossSectionReinforcementDefinitions)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSectionedSpine
IfcCompositeCurve* IfcSectionedSpine::SpineCurve() const { return (IfcCompositeCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSectionedSpine::setSpineCurve(IfcCompositeCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcProfileDef >::ptr IfcSectionedSpine::CrossSections() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcProfileDef>(); }
void IfcSectionedSpine::setCrossSections(IfcTemplatedEntityList< IfcProfileDef >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
IfcTemplatedEntityList< IfcAxis2Placement3D >::ptr IfcSectionedSpine::CrossSectionPositions() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcAxis2Placement3D>(); }
void IfcSectionedSpine::setCrossSectionPositions(IfcTemplatedEntityList< IfcAxis2Placement3D >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcSectionedSpine::declaration() const { return *IfcSectionedSpine_type; }
Type::Enum IfcSectionedSpine::Class() { return Type::IfcSectionedSpine; }
IfcSectionedSpine::IfcSectionedSpine(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSectionedSpine)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSectionedSpine::IfcSectionedSpine(IfcCompositeCurve* v1_SpineCurve, IfcTemplatedEntityList< IfcProfileDef >::ptr v2_CrossSections, IfcTemplatedEntityList< IfcAxis2Placement3D >::ptr v3_CrossSectionPositions) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SpineCurve)); e->setArgument(1,(v2_CrossSections)->generalize()); e->setArgument(2,(v3_CrossSectionPositions)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSensor
bool IfcSensor::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSensorTypeEnum::IfcSensorTypeEnum IfcSensor::PredefinedType() const { return IfcSensorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSensor::setPredefinedType(IfcSensorTypeEnum::IfcSensorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSensorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSensor::declaration() const { return *IfcSensor_type; }
Type::Enum IfcSensor::Class() { return Type::IfcSensor; }
IfcSensor::IfcSensor(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSensor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSensor::IfcSensor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSensorTypeEnum::IfcSensorTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSensorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSensorType
IfcSensorTypeEnum::IfcSensorTypeEnum IfcSensorType::PredefinedType() const { return IfcSensorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSensorType::setPredefinedType(IfcSensorTypeEnum::IfcSensorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSensorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSensorType::declaration() const { return *IfcSensorType_type; }
Type::Enum IfcSensorType::Class() { return Type::IfcSensorType; }
IfcSensorType::IfcSensorType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSensorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSensorType::IfcSensorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSensorTypeEnum::IfcSensorTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSensorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShadingDevice
bool IfcShadingDevice::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum IfcShadingDevice::PredefinedType() const { return IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcShadingDevice::setPredefinedType(IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcShadingDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcShadingDevice::declaration() const { return *IfcShadingDevice_type; }
Type::Enum IfcShadingDevice::Class() { return Type::IfcShadingDevice; }
IfcShadingDevice::IfcShadingDevice(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShadingDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShadingDevice::IfcShadingDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcShadingDeviceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShadingDeviceType
IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum IfcShadingDeviceType::PredefinedType() const { return IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcShadingDeviceType::setPredefinedType(IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcShadingDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcShadingDeviceType::declaration() const { return *IfcShadingDeviceType_type; }
Type::Enum IfcShadingDeviceType::Class() { return Type::IfcShadingDeviceType; }
IfcShadingDeviceType::IfcShadingDeviceType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShadingDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcShadingDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShapeAspect
IfcTemplatedEntityList< IfcShapeModel >::ptr IfcShapeAspect::ShapeRepresentations() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcShapeModel>(); }
void IfcShapeAspect::setShapeRepresentations(IfcTemplatedEntityList< IfcShapeModel >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
bool IfcShapeAspect::hasName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcShapeAspect::Name() const { return *data_->getArgument(1); }
void IfcShapeAspect::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcShapeAspect::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcShapeAspect::Description() const { return *data_->getArgument(2); }
void IfcShapeAspect::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
boost::logic::tribool IfcShapeAspect::ProductDefinitional() const { return *data_->getArgument(3); }
void IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcShapeAspect::hasPartOfProductDefinitionShape() const { return !data_->getArgument(4)->isNull(); }
IfcProductRepresentationSelect* IfcShapeAspect::PartOfProductDefinitionShape() const { return (IfcProductRepresentationSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcShapeAspect::setPartOfProductDefinitionShape(IfcProductRepresentationSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcShapeAspect::declaration() const { return *IfcShapeAspect_type; }
Type::Enum IfcShapeAspect::Class() { return Type::IfcShapeAspect; }
IfcShapeAspect::IfcShapeAspect(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcShapeAspect)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShapeAspect::IfcShapeAspect(IfcTemplatedEntityList< IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, IfcProductRepresentationSelect* v5_PartOfProductDefinitionShape) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ShapeRepresentations)->generalize()); if (v2_Name) { e->setArgument(1,(*v2_Name)); } else { e->setArgument(1); } if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } e->setArgument(3,(v4_ProductDefinitional)); e->setArgument(4,(v5_PartOfProductDefinitionShape)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShapeModel

IfcShapeAspect::list::ptr IfcShapeModel::OfShapeAspect() const { return data_->getInverse(Type::IfcShapeAspect, 0)->as<IfcShapeAspect>(); }

const IfcParse::entity& IfcShapeModel::declaration() const { return *IfcShapeModel_type; }
Type::Enum IfcShapeModel::Class() { return Type::IfcShapeModel; }
IfcShapeModel::IfcShapeModel(IfcAbstractEntity* e) : IfcRepresentation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShapeModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShapeModel::IfcShapeModel(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShapeRepresentation


const IfcParse::entity& IfcShapeRepresentation::declaration() const { return *IfcShapeRepresentation_type; }
Type::Enum IfcShapeRepresentation::Class() { return Type::IfcShapeRepresentation; }
IfcShapeRepresentation::IfcShapeRepresentation(IfcAbstractEntity* e) : IfcShapeModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShapeRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShapeRepresentation::IfcShapeRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcShellBasedSurfaceModel
IfcEntityList::ptr IfcShellBasedSurfaceModel::SbsmBoundary() const { return *data_->getArgument(0); }
void IfcShellBasedSurfaceModel::setSbsmBoundary(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcShellBasedSurfaceModel::declaration() const { return *IfcShellBasedSurfaceModel_type; }
Type::Enum IfcShellBasedSurfaceModel::Class() { return Type::IfcShellBasedSurfaceModel; }
IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcShellBasedSurfaceModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcEntityList::ptr v1_SbsmBoundary) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SbsmBoundary)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSimpleProperty


const IfcParse::entity& IfcSimpleProperty::declaration() const { return *IfcSimpleProperty_type; }
Type::Enum IfcSimpleProperty::Class() { return Type::IfcSimpleProperty; }
IfcSimpleProperty::IfcSimpleProperty(IfcAbstractEntity* e) : IfcProperty((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSimpleProperty)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcProperty((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSimplePropertyTemplate
bool IfcSimplePropertyTemplate::hasTemplateType() const { return !data_->getArgument(4)->isNull(); }
IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum IfcSimplePropertyTemplate::TemplateType() const { return IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); }
void IfcSimplePropertyTemplate::setTemplateType(IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcSimplePropertyTemplateTypeEnum::ToString(v)); }
bool IfcSimplePropertyTemplate::hasPrimaryMeasureType() const { return !data_->getArgument(5)->isNull(); }
std::string IfcSimplePropertyTemplate::PrimaryMeasureType() const { return *data_->getArgument(5); }
void IfcSimplePropertyTemplate::setPrimaryMeasureType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcSimplePropertyTemplate::hasSecondaryMeasureType() const { return !data_->getArgument(6)->isNull(); }
std::string IfcSimplePropertyTemplate::SecondaryMeasureType() const { return *data_->getArgument(6); }
void IfcSimplePropertyTemplate::setSecondaryMeasureType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcSimplePropertyTemplate::hasEnumerators() const { return !data_->getArgument(7)->isNull(); }
IfcPropertyEnumeration* IfcSimplePropertyTemplate::Enumerators() const { return (IfcPropertyEnumeration*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcSimplePropertyTemplate::setEnumerators(IfcPropertyEnumeration* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcSimplePropertyTemplate::hasPrimaryUnit() const { return !data_->getArgument(8)->isNull(); }
IfcUnit* IfcSimplePropertyTemplate::PrimaryUnit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcSimplePropertyTemplate::setPrimaryUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcSimplePropertyTemplate::hasSecondaryUnit() const { return !data_->getArgument(9)->isNull(); }
IfcUnit* IfcSimplePropertyTemplate::SecondaryUnit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcSimplePropertyTemplate::setSecondaryUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcSimplePropertyTemplate::hasExpression() const { return !data_->getArgument(10)->isNull(); }
std::string IfcSimplePropertyTemplate::Expression() const { return *data_->getArgument(10); }
void IfcSimplePropertyTemplate::setExpression(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcSimplePropertyTemplate::hasAccessState() const { return !data_->getArgument(11)->isNull(); }
IfcStateEnum::IfcStateEnum IfcSimplePropertyTemplate::AccessState() const { return IfcStateEnum::FromString(*data_->getArgument(11)); }
void IfcSimplePropertyTemplate::setAccessState(IfcStateEnum::IfcStateEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcStateEnum::ToString(v)); }


const IfcParse::entity& IfcSimplePropertyTemplate::declaration() const { return *IfcSimplePropertyTemplate_type; }
Type::Enum IfcSimplePropertyTemplate::Class() { return Type::IfcSimplePropertyTemplate; }
IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(IfcAbstractEntity* e) : IfcPropertyTemplate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSimplePropertyTemplate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum > v5_TemplateType, boost::optional< std::string > v6_PrimaryMeasureType, boost::optional< std::string > v7_SecondaryMeasureType, IfcPropertyEnumeration* v8_Enumerators, IfcUnit* v9_PrimaryUnit, IfcUnit* v10_SecondaryUnit, boost::optional< std::string > v11_Expression, boost::optional< IfcStateEnum::IfcStateEnum > v12_AccessState) : IfcPropertyTemplate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_TemplateType) { e->setArgument(4,*v5_TemplateType,IfcSimplePropertyTemplateTypeEnum::ToString(*v5_TemplateType)); } else { e->setArgument(4); } if (v6_PrimaryMeasureType) { e->setArgument(5,(*v6_PrimaryMeasureType)); } else { e->setArgument(5); } if (v7_SecondaryMeasureType) { e->setArgument(6,(*v7_SecondaryMeasureType)); } else { e->setArgument(6); } e->setArgument(7,(v8_Enumerators)); e->setArgument(8,(v9_PrimaryUnit)); e->setArgument(9,(v10_SecondaryUnit)); if (v11_Expression) { e->setArgument(10,(*v11_Expression)); } else { e->setArgument(10); } if (v12_AccessState) { e->setArgument(11,*v12_AccessState,IfcStateEnum::ToString(*v12_AccessState)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSite
bool IfcSite::hasRefLatitude() const { return !data_->getArgument(9)->isNull(); }
std::vector< int > /*[3:4]*/ IfcSite::RefLatitude() const { return *data_->getArgument(9); }
void IfcSite::setRefLatitude(std::vector< int > /*[3:4]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcSite::hasRefLongitude() const { return !data_->getArgument(10)->isNull(); }
std::vector< int > /*[3:4]*/ IfcSite::RefLongitude() const { return *data_->getArgument(10); }
void IfcSite::setRefLongitude(std::vector< int > /*[3:4]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcSite::hasRefElevation() const { return !data_->getArgument(11)->isNull(); }
double IfcSite::RefElevation() const { return *data_->getArgument(11); }
void IfcSite::setRefElevation(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcSite::hasLandTitleNumber() const { return !data_->getArgument(12)->isNull(); }
std::string IfcSite::LandTitleNumber() const { return *data_->getArgument(12); }
void IfcSite::setLandTitleNumber(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcSite::hasSiteAddress() const { return !data_->getArgument(13)->isNull(); }
IfcPostalAddress* IfcSite::SiteAddress() const { return (IfcPostalAddress*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(13))); }
void IfcSite::setSiteAddress(IfcPostalAddress* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }


const IfcParse::entity& IfcSite::declaration() const { return *IfcSite_type; }
Type::Enum IfcSite::Class() { return Type::IfcSite; }
IfcSite::IfcSite(IfcAbstractEntity* e) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSite)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSite::IfcSite(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcElementCompositionEnum::IfcElementCompositionEnum > v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, IfcPostalAddress* v14_SiteAddress) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_CompositionType) { e->setArgument(8,*v9_CompositionType,IfcElementCompositionEnum::ToString(*v9_CompositionType)); } else { e->setArgument(8); } if (v10_RefLatitude) { e->setArgument(9,(*v10_RefLatitude)); } else { e->setArgument(9); } if (v11_RefLongitude) { e->setArgument(10,(*v11_RefLongitude)); } else { e->setArgument(10); } if (v12_RefElevation) { e->setArgument(11,(*v12_RefElevation)); } else { e->setArgument(11); } if (v13_LandTitleNumber) { e->setArgument(12,(*v13_LandTitleNumber)); } else { e->setArgument(12); } e->setArgument(13,(v14_SiteAddress)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlab
bool IfcSlab::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSlabTypeEnum::IfcSlabTypeEnum IfcSlab::PredefinedType() const { return IfcSlabTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSlab::setPredefinedType(IfcSlabTypeEnum::IfcSlabTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSlabTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSlab::declaration() const { return *IfcSlab_type; }
Type::Enum IfcSlab::Class() { return Type::IfcSlab; }
IfcSlab::IfcSlab(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlab)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlab::IfcSlab(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSlabTypeEnum::IfcSlabTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSlabTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlabElementedCase


const IfcParse::entity& IfcSlabElementedCase::declaration() const { return *IfcSlabElementedCase_type; }
Type::Enum IfcSlabElementedCase::Class() { return Type::IfcSlabElementedCase; }
IfcSlabElementedCase::IfcSlabElementedCase(IfcAbstractEntity* e) : IfcSlab((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlabElementedCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlabElementedCase::IfcSlabElementedCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSlabTypeEnum::IfcSlabTypeEnum > v9_PredefinedType) : IfcSlab((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSlabTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlabStandardCase


const IfcParse::entity& IfcSlabStandardCase::declaration() const { return *IfcSlabStandardCase_type; }
Type::Enum IfcSlabStandardCase::Class() { return Type::IfcSlabStandardCase; }
IfcSlabStandardCase::IfcSlabStandardCase(IfcAbstractEntity* e) : IfcSlab((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlabStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlabStandardCase::IfcSlabStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSlabTypeEnum::IfcSlabTypeEnum > v9_PredefinedType) : IfcSlab((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSlabTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlabType
IfcSlabTypeEnum::IfcSlabTypeEnum IfcSlabType::PredefinedType() const { return IfcSlabTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSlabType::setPredefinedType(IfcSlabTypeEnum::IfcSlabTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSlabTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSlabType::declaration() const { return *IfcSlabType_type; }
Type::Enum IfcSlabType::Class() { return Type::IfcSlabType; }
IfcSlabType::IfcSlabType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlabType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlabType::IfcSlabType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSlabTypeEnum::IfcSlabTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSlabTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSlippageConnectionCondition
bool IfcSlippageConnectionCondition::hasSlippageX() const { return !data_->getArgument(1)->isNull(); }
double IfcSlippageConnectionCondition::SlippageX() const { return *data_->getArgument(1); }
void IfcSlippageConnectionCondition::setSlippageX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSlippageConnectionCondition::hasSlippageY() const { return !data_->getArgument(2)->isNull(); }
double IfcSlippageConnectionCondition::SlippageY() const { return *data_->getArgument(2); }
void IfcSlippageConnectionCondition::setSlippageY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSlippageConnectionCondition::hasSlippageZ() const { return !data_->getArgument(3)->isNull(); }
double IfcSlippageConnectionCondition::SlippageZ() const { return *data_->getArgument(3); }
void IfcSlippageConnectionCondition::setSlippageZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSlippageConnectionCondition::declaration() const { return *IfcSlippageConnectionCondition_type; }
Type::Enum IfcSlippageConnectionCondition::Class() { return Type::IfcSlippageConnectionCondition; }
IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(IfcAbstractEntity* e) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSlippageConnectionCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_SlippageX, boost::optional< double > v3_SlippageY, boost::optional< double > v4_SlippageZ) : IfcStructuralConnectionCondition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_SlippageX) { e->setArgument(1,(*v2_SlippageX)); } else { e->setArgument(1); } if (v3_SlippageY) { e->setArgument(2,(*v3_SlippageY)); } else { e->setArgument(2); } if (v4_SlippageZ) { e->setArgument(3,(*v4_SlippageZ)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSolarDevice
bool IfcSolarDevice::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum IfcSolarDevice::PredefinedType() const { return IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSolarDevice::setPredefinedType(IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSolarDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSolarDevice::declaration() const { return *IfcSolarDevice_type; }
Type::Enum IfcSolarDevice::Class() { return Type::IfcSolarDevice; }
IfcSolarDevice::IfcSolarDevice(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSolarDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSolarDevice::IfcSolarDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSolarDeviceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSolarDeviceType
IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum IfcSolarDeviceType::PredefinedType() const { return IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSolarDeviceType::setPredefinedType(IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSolarDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSolarDeviceType::declaration() const { return *IfcSolarDeviceType_type; }
Type::Enum IfcSolarDeviceType::Class() { return Type::IfcSolarDeviceType; }
IfcSolarDeviceType::IfcSolarDeviceType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSolarDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSolarDeviceType::IfcSolarDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSolarDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSolidModel


const IfcParse::entity& IfcSolidModel::declaration() const { return *IfcSolidModel_type; }
Type::Enum IfcSolidModel::Class() { return Type::IfcSolidModel; }
IfcSolidModel::IfcSolidModel(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSolidModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpace
bool IfcSpace::hasPredefinedType() const { return !data_->getArgument(9)->isNull(); }
IfcSpaceTypeEnum::IfcSpaceTypeEnum IfcSpace::PredefinedType() const { return IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSpace::setPredefinedType(IfcSpaceTypeEnum::IfcSpaceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSpaceTypeEnum::ToString(v)); }
bool IfcSpace::hasElevationWithFlooring() const { return !data_->getArgument(10)->isNull(); }
double IfcSpace::ElevationWithFlooring() const { return *data_->getArgument(10); }
void IfcSpace::setElevationWithFlooring(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }

IfcRelCoversSpaces::list::ptr IfcSpace::HasCoverings() const { return data_->getInverse(Type::IfcRelCoversSpaces, 4)->as<IfcRelCoversSpaces>(); }
IfcRelSpaceBoundary::list::ptr IfcSpace::BoundedBy() const { return data_->getInverse(Type::IfcRelSpaceBoundary, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& IfcSpace::declaration() const { return *IfcSpace_type; }
Type::Enum IfcSpace::Class() { return Type::IfcSpace; }
IfcSpace::IfcSpace(IfcAbstractEntity* e) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpace)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpace::IfcSpace(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcElementCompositionEnum::IfcElementCompositionEnum > v9_CompositionType, boost::optional< IfcSpaceTypeEnum::IfcSpaceTypeEnum > v10_PredefinedType, boost::optional< double > v11_ElevationWithFlooring) : IfcSpatialStructureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_CompositionType) { e->setArgument(8,*v9_CompositionType,IfcElementCompositionEnum::ToString(*v9_CompositionType)); } else { e->setArgument(8); } if (v10_PredefinedType) { e->setArgument(9,*v10_PredefinedType,IfcSpaceTypeEnum::ToString(*v10_PredefinedType)); } else { e->setArgument(9); } if (v11_ElevationWithFlooring) { e->setArgument(10,(*v11_ElevationWithFlooring)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceHeater
bool IfcSpaceHeater::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum IfcSpaceHeater::PredefinedType() const { return IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSpaceHeater::setPredefinedType(IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSpaceHeaterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSpaceHeater::declaration() const { return *IfcSpaceHeater_type; }
Type::Enum IfcSpaceHeater::Class() { return Type::IfcSpaceHeater; }
IfcSpaceHeater::IfcSpaceHeater(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceHeater)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceHeater::IfcSpaceHeater(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSpaceHeaterTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceHeaterType
IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum IfcSpaceHeaterType::PredefinedType() const { return IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSpaceHeaterType::setPredefinedType(IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSpaceHeaterTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSpaceHeaterType::declaration() const { return *IfcSpaceHeaterType_type; }
Type::Enum IfcSpaceHeaterType::Class() { return Type::IfcSpaceHeaterType; }
IfcSpaceHeaterType::IfcSpaceHeaterType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceHeaterType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSpaceHeaterTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpaceType
IfcSpaceTypeEnum::IfcSpaceTypeEnum IfcSpaceType::PredefinedType() const { return IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSpaceType::setPredefinedType(IfcSpaceTypeEnum::IfcSpaceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSpaceTypeEnum::ToString(v)); }
bool IfcSpaceType::hasLongName() const { return !data_->getArgument(10)->isNull(); }
std::string IfcSpaceType::LongName() const { return *data_->getArgument(10); }
void IfcSpaceType::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcSpaceType::declaration() const { return *IfcSpaceType_type; }
Type::Enum IfcSpaceType::Class() { return Type::IfcSpaceType; }
IfcSpaceType::IfcSpaceType(IfcAbstractEntity* e) : IfcSpatialStructureElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpaceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSpaceTypeEnum::IfcSpaceTypeEnum v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialStructureElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSpaceTypeEnum::ToString(v10_PredefinedType)); if (v11_LongName) { e->setArgument(10,(*v11_LongName)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialElement
bool IfcSpatialElement::hasLongName() const { return !data_->getArgument(7)->isNull(); }
std::string IfcSpatialElement::LongName() const { return *data_->getArgument(7); }
void IfcSpatialElement::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcRelContainedInSpatialStructure::list::ptr IfcSpatialElement::ContainsElements() const { return data_->getInverse(Type::IfcRelContainedInSpatialStructure, 5)->as<IfcRelContainedInSpatialStructure>(); }
IfcRelServicesBuildings::list::ptr IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(Type::IfcRelServicesBuildings, 5)->as<IfcRelServicesBuildings>(); }
IfcRelReferencedInSpatialStructure::list::ptr IfcSpatialElement::ReferencesElements() const { return data_->getInverse(Type::IfcRelReferencedInSpatialStructure, 5)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& IfcSpatialElement::declaration() const { return *IfcSpatialElement_type; }
Type::Enum IfcSpatialElement::Class() { return Type::IfcSpatialElement; }
IfcSpatialElement::IfcSpatialElement(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialElementType
bool IfcSpatialElementType::hasElementType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcSpatialElementType::ElementType() const { return *data_->getArgument(8); }
void IfcSpatialElementType::setElementType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcSpatialElementType::declaration() const { return *IfcSpatialElementType_type; }
Type::Enum IfcSpatialElementType::Class() { return Type::IfcSpatialElementType; }
IfcSpatialElementType::IfcSpatialElementType(IfcAbstractEntity* e) : IfcTypeProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialStructureElement
bool IfcSpatialStructureElement::hasCompositionType() const { return !data_->getArgument(8)->isNull(); }
IfcElementCompositionEnum::IfcElementCompositionEnum IfcSpatialStructureElement::CompositionType() const { return IfcElementCompositionEnum::FromString(*data_->getArgument(8)); }
void IfcSpatialStructureElement::setCompositionType(IfcElementCompositionEnum::IfcElementCompositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcElementCompositionEnum::ToString(v)); }


const IfcParse::entity& IfcSpatialStructureElement::declaration() const { return *IfcSpatialStructureElement_type; }
Type::Enum IfcSpatialStructureElement::Class() { return Type::IfcSpatialStructureElement; }
IfcSpatialStructureElement::IfcSpatialStructureElement(IfcAbstractEntity* e) : IfcSpatialElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialStructureElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialStructureElement::IfcSpatialStructureElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcElementCompositionEnum::IfcElementCompositionEnum > v9_CompositionType) : IfcSpatialElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_CompositionType) { e->setArgument(8,*v9_CompositionType,IfcElementCompositionEnum::ToString(*v9_CompositionType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialStructureElementType


const IfcParse::entity& IfcSpatialStructureElementType::declaration() const { return *IfcSpatialStructureElementType_type; }
Type::Enum IfcSpatialStructureElementType::Class() { return Type::IfcSpatialStructureElementType; }
IfcSpatialStructureElementType::IfcSpatialStructureElementType(IfcAbstractEntity* e) : IfcSpatialElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialStructureElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcSpatialElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialZone
bool IfcSpatialZone::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum IfcSpatialZone::PredefinedType() const { return IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSpatialZone::setPredefinedType(IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSpatialZoneTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSpatialZone::declaration() const { return *IfcSpatialZone_type; }
Type::Enum IfcSpatialZone::Class() { return Type::IfcSpatialZone; }
IfcSpatialZone::IfcSpatialZone(IfcAbstractEntity* e) : IfcSpatialElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialZone)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum > v9_PredefinedType) : IfcSpatialElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_LongName) { e->setArgument(7,(*v8_LongName)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSpatialZoneTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSpatialZoneType
IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum IfcSpatialZoneType::PredefinedType() const { return IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSpatialZoneType::setPredefinedType(IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSpatialZoneTypeEnum::ToString(v)); }
bool IfcSpatialZoneType::hasLongName() const { return !data_->getArgument(10)->isNull(); }
std::string IfcSpatialZoneType::LongName() const { return *data_->getArgument(10); }
void IfcSpatialZoneType::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcSpatialZoneType::declaration() const { return *IfcSpatialZoneType_type; }
Type::Enum IfcSpatialZoneType::Class() { return Type::IfcSpatialZoneType; }
IfcSpatialZoneType::IfcSpatialZoneType(IfcAbstractEntity* e) : IfcSpatialElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSpatialZoneType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSpatialZoneType::IfcSpatialZoneType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSpatialZoneTypeEnum::ToString(v10_PredefinedType)); if (v11_LongName) { e->setArgument(10,(*v11_LongName)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSphere
double IfcSphere::Radius() const { return *data_->getArgument(1); }
void IfcSphere::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSphere::declaration() const { return *IfcSphere_type; }
Type::Enum IfcSphere::Class() { return Type::IfcSphere; }
IfcSphere::IfcSphere(IfcAbstractEntity* e) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSphere)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSphere::IfcSphere(IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcCsgPrimitive3D((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSphericalSurface
double IfcSphericalSurface::Radius() const { return *data_->getArgument(1); }
void IfcSphericalSurface::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSphericalSurface::declaration() const { return *IfcSphericalSurface_type; }
Type::Enum IfcSphericalSurface::Class() { return Type::IfcSphericalSurface; }
IfcSphericalSurface::IfcSphericalSurface(IfcAbstractEntity* e) : IfcElementarySurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSphericalSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSphericalSurface::IfcSphericalSurface(IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_Radius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStackTerminal
bool IfcStackTerminal::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum IfcStackTerminal::PredefinedType() const { return IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void IfcStackTerminal::setPredefinedType(IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcStackTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStackTerminal::declaration() const { return *IfcStackTerminal_type; }
Type::Enum IfcStackTerminal::Class() { return Type::IfcStackTerminal; }
IfcStackTerminal::IfcStackTerminal(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStackTerminal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStackTerminal::IfcStackTerminal(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcStackTerminalTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStackTerminalType
IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum IfcStackTerminalType::PredefinedType() const { return IfcStackTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStackTerminalType::setPredefinedType(IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStackTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStackTerminalType::declaration() const { return *IfcStackTerminalType_type; }
Type::Enum IfcStackTerminalType::Class() { return Type::IfcStackTerminalType; }
IfcStackTerminalType::IfcStackTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStackTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcStackTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStair
bool IfcStair::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcStairTypeEnum::IfcStairTypeEnum IfcStair::PredefinedType() const { return IfcStairTypeEnum::FromString(*data_->getArgument(8)); }
void IfcStair::setPredefinedType(IfcStairTypeEnum::IfcStairTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcStairTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStair::declaration() const { return *IfcStair_type; }
Type::Enum IfcStair::Class() { return Type::IfcStair; }
IfcStair::IfcStair(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStair)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStair::IfcStair(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcStairTypeEnum::IfcStairTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcStairTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStairFlight
bool IfcStairFlight::hasNumberOfRisers() const { return !data_->getArgument(8)->isNull(); }
int IfcStairFlight::NumberOfRisers() const { return *data_->getArgument(8); }
void IfcStairFlight::setNumberOfRisers(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcStairFlight::hasNumberOfTreads() const { return !data_->getArgument(9)->isNull(); }
int IfcStairFlight::NumberOfTreads() const { return *data_->getArgument(9); }
void IfcStairFlight::setNumberOfTreads(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcStairFlight::hasRiserHeight() const { return !data_->getArgument(10)->isNull(); }
double IfcStairFlight::RiserHeight() const { return *data_->getArgument(10); }
void IfcStairFlight::setRiserHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcStairFlight::hasTreadLength() const { return !data_->getArgument(11)->isNull(); }
double IfcStairFlight::TreadLength() const { return *data_->getArgument(11); }
void IfcStairFlight::setTreadLength(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcStairFlight::hasPredefinedType() const { return !data_->getArgument(12)->isNull(); }
IfcStairFlightTypeEnum::IfcStairFlightTypeEnum IfcStairFlight::PredefinedType() const { return IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); }
void IfcStairFlight::setPredefinedType(IfcStairFlightTypeEnum::IfcStairFlightTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v,IfcStairFlightTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStairFlight::declaration() const { return *IfcStairFlight_type; }
Type::Enum IfcStairFlight::Class() { return Type::IfcStairFlight; }
IfcStairFlight::IfcStairFlight(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStairFlight)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStairFlight::IfcStairFlight(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< int > v9_NumberOfRisers, boost::optional< int > v10_NumberOfTreads, boost::optional< double > v11_RiserHeight, boost::optional< double > v12_TreadLength, boost::optional< IfcStairFlightTypeEnum::IfcStairFlightTypeEnum > v13_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_NumberOfRisers) { e->setArgument(8,(*v9_NumberOfRisers)); } else { e->setArgument(8); } if (v10_NumberOfTreads) { e->setArgument(9,(*v10_NumberOfTreads)); } else { e->setArgument(9); } if (v11_RiserHeight) { e->setArgument(10,(*v11_RiserHeight)); } else { e->setArgument(10); } if (v12_TreadLength) { e->setArgument(11,(*v12_TreadLength)); } else { e->setArgument(11); } if (v13_PredefinedType) { e->setArgument(12,*v13_PredefinedType,IfcStairFlightTypeEnum::ToString(*v13_PredefinedType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStairFlightType
IfcStairFlightTypeEnum::IfcStairFlightTypeEnum IfcStairFlightType::PredefinedType() const { return IfcStairFlightTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStairFlightType::setPredefinedType(IfcStairFlightTypeEnum::IfcStairFlightTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStairFlightTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStairFlightType::declaration() const { return *IfcStairFlightType_type; }
Type::Enum IfcStairFlightType::Class() { return Type::IfcStairFlightType; }
IfcStairFlightType::IfcStairFlightType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStairFlightType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStairFlightType::IfcStairFlightType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcStairFlightTypeEnum::IfcStairFlightTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcStairFlightTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStairType
IfcStairTypeEnum::IfcStairTypeEnum IfcStairType::PredefinedType() const { return IfcStairTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStairType::setPredefinedType(IfcStairTypeEnum::IfcStairTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStairTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStairType::declaration() const { return *IfcStairType_type; }
Type::Enum IfcStairType::Class() { return Type::IfcStairType; }
IfcStairType::IfcStairType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStairType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStairType::IfcStairType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcStairTypeEnum::IfcStairTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcStairTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralAction
bool IfcStructuralAction::hasDestabilizingLoad() const { return !data_->getArgument(9)->isNull(); }
bool IfcStructuralAction::DestabilizingLoad() const { return *data_->getArgument(9); }
void IfcStructuralAction::setDestabilizingLoad(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcStructuralAction::declaration() const { return *IfcStructuralAction_type; }
Type::Enum IfcStructuralAction::Class() { return Type::IfcStructuralAction; }
IfcStructuralAction::IfcStructuralAction(IfcAbstractEntity* e) : IfcStructuralActivity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralAction::IfcStructuralAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralActivity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); if (v10_DestabilizingLoad) { e->setArgument(9,(*v10_DestabilizingLoad)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralActivity
IfcStructuralLoad* IfcStructuralActivity::AppliedLoad() const { return (IfcStructuralLoad*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcStructuralActivity::setAppliedLoad(IfcStructuralLoad* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum IfcStructuralActivity::GlobalOrLocal() const { return IfcGlobalOrLocalEnum::FromString(*data_->getArgument(8)); }
void IfcStructuralActivity::setGlobalOrLocal(IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcGlobalOrLocalEnum::ToString(v)); }

IfcRelConnectsStructuralActivity::list::ptr IfcStructuralActivity::AssignedToStructuralItem() const { return data_->getInverse(Type::IfcRelConnectsStructuralActivity, 5)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& IfcStructuralActivity::declaration() const { return *IfcStructuralActivity_type; }
Type::Enum IfcStructuralActivity::Class() { return Type::IfcStructuralActivity; }
IfcStructuralActivity::IfcStructuralActivity(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralActivity)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralActivity::IfcStructuralActivity(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralAnalysisModel
IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum IfcStructuralAnalysisModel::PredefinedType() const { return IfcAnalysisModelTypeEnum::FromString(*data_->getArgument(5)); }
void IfcStructuralAnalysisModel::setPredefinedType(IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcAnalysisModelTypeEnum::ToString(v)); }
bool IfcStructuralAnalysisModel::hasOrientationOf2DPlane() const { return !data_->getArgument(6)->isNull(); }
IfcAxis2Placement3D* IfcStructuralAnalysisModel::OrientationOf2DPlane() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcStructuralAnalysisModel::setOrientationOf2DPlane(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcStructuralAnalysisModel::hasLoadedBy() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcStructuralLoadGroup >::ptr IfcStructuralAnalysisModel::LoadedBy() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcStructuralLoadGroup>(); }
void IfcStructuralAnalysisModel::setLoadedBy(IfcTemplatedEntityList< IfcStructuralLoadGroup >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcStructuralAnalysisModel::hasHasResults() const { return !data_->getArgument(8)->isNull(); }
IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr IfcStructuralAnalysisModel::HasResults() const { IfcEntityList::ptr es = *data_->getArgument(8); return es->as<IfcStructuralResultGroup>(); }
void IfcStructuralAnalysisModel::setHasResults(IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v->generalize()); }
bool IfcStructuralAnalysisModel::hasSharedPlacement() const { return !data_->getArgument(9)->isNull(); }
IfcObjectPlacement* IfcStructuralAnalysisModel::SharedPlacement() const { return (IfcObjectPlacement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(9))); }
void IfcStructuralAnalysisModel::setSharedPlacement(IfcObjectPlacement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcStructuralAnalysisModel::declaration() const { return *IfcStructuralAnalysisModel_type; }
Type::Enum IfcStructuralAnalysisModel::Class() { return Type::IfcStructuralAnalysisModel; }
IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(IfcAbstractEntity* e) : IfcSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralAnalysisModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum v6_PredefinedType, IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< IfcTemplatedEntityList< IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< IfcTemplatedEntityList< IfcStructuralResultGroup >::ptr > v9_HasResults, IfcObjectPlacement* v10_SharedPlacement) : IfcSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_PredefinedType,IfcAnalysisModelTypeEnum::ToString(v6_PredefinedType)); e->setArgument(6,(v7_OrientationOf2DPlane)); if (v8_LoadedBy) { e->setArgument(7,(*v8_LoadedBy)->generalize()); } else { e->setArgument(7); } if (v9_HasResults) { e->setArgument(8,(*v9_HasResults)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_SharedPlacement)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralConnection
bool IfcStructuralConnection::hasAppliedCondition() const { return !data_->getArgument(7)->isNull(); }
IfcBoundaryCondition* IfcStructuralConnection::AppliedCondition() const { return (IfcBoundaryCondition*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcStructuralConnection::setAppliedCondition(IfcBoundaryCondition* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcRelConnectsStructuralMember::list::ptr IfcStructuralConnection::ConnectsStructuralMembers() const { return data_->getInverse(Type::IfcRelConnectsStructuralMember, 5)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& IfcStructuralConnection::declaration() const { return *IfcStructuralConnection_type; }
Type::Enum IfcStructuralConnection::Class() { return Type::IfcStructuralConnection; }
IfcStructuralConnection::IfcStructuralConnection(IfcAbstractEntity* e) : IfcStructuralItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralConnectionCondition
bool IfcStructuralConnectionCondition::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcStructuralConnectionCondition::Name() const { return *data_->getArgument(0); }
void IfcStructuralConnectionCondition::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcStructuralConnectionCondition::declaration() const { return *IfcStructuralConnectionCondition_type; }
Type::Enum IfcStructuralConnectionCondition::Class() { return Type::IfcStructuralConnectionCondition; }
IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcStructuralConnectionCondition)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveAction
bool IfcStructuralCurveAction::hasProjectedOrTrue() const { return !data_->getArgument(10)->isNull(); }
IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum IfcStructuralCurveAction::ProjectedOrTrue() const { return IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); }
void IfcStructuralCurveAction::setProjectedOrTrue(IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcProjectedOrTrueLengthEnum::ToString(v)); }
IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum IfcStructuralCurveAction::PredefinedType() const { return IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); }
void IfcStructuralCurveAction::setPredefinedType(IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcStructuralCurveActivityTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralCurveAction::declaration() const { return *IfcStructuralCurveAction_type; }
Type::Enum IfcStructuralCurveAction::Class() { return Type::IfcStructuralCurveAction; }
IfcStructuralCurveAction::IfcStructuralCurveAction(IfcAbstractEntity* e) : IfcStructuralAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveAction::IfcStructuralCurveAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum > v11_ProjectedOrTrue, IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum v12_PredefinedType) : IfcStructuralAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); if (v10_DestabilizingLoad) { e->setArgument(9,(*v10_DestabilizingLoad)); } else { e->setArgument(9); } if (v11_ProjectedOrTrue) { e->setArgument(10,*v11_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue)); } else { e->setArgument(10); } e->setArgument(11,v12_PredefinedType,IfcStructuralCurveActivityTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveConnection
IfcDirection* IfcStructuralCurveConnection::Axis() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcStructuralCurveConnection::setAxis(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcStructuralCurveConnection::declaration() const { return *IfcStructuralCurveConnection_type; }
Type::Enum IfcStructuralCurveConnection::Class() { return Type::IfcStructuralCurveConnection; }
IfcStructuralCurveConnection::IfcStructuralCurveConnection(IfcAbstractEntity* e) : IfcStructuralConnection((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveConnection::IfcStructuralCurveConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition, IfcDirection* v9_Axis) : IfcStructuralConnection((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); e->setArgument(8,(v9_Axis)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveMember
IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum IfcStructuralCurveMember::PredefinedType() const { return IfcStructuralCurveMemberTypeEnum::FromString(*data_->getArgument(7)); }
void IfcStructuralCurveMember::setPredefinedType(IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcStructuralCurveMemberTypeEnum::ToString(v)); }
IfcDirection* IfcStructuralCurveMember::Axis() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcStructuralCurveMember::setAxis(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcStructuralCurveMember::declaration() const { return *IfcStructuralCurveMember_type; }
Type::Enum IfcStructuralCurveMember::Class() { return Type::IfcStructuralCurveMember; }
IfcStructuralCurveMember::IfcStructuralCurveMember(IfcAbstractEntity* e) : IfcStructuralMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveMember::IfcStructuralCurveMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum v8_PredefinedType, IfcDirection* v9_Axis) : IfcStructuralMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralCurveMemberTypeEnum::ToString(v8_PredefinedType)); e->setArgument(8,(v9_Axis)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveMemberVarying


const IfcParse::entity& IfcStructuralCurveMemberVarying::declaration() const { return *IfcStructuralCurveMemberVarying_type; }
Type::Enum IfcStructuralCurveMemberVarying::Class() { return Type::IfcStructuralCurveMemberVarying; }
IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(IfcAbstractEntity* e) : IfcStructuralCurveMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveMemberVarying)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum v8_PredefinedType, IfcDirection* v9_Axis) : IfcStructuralCurveMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralCurveMemberTypeEnum::ToString(v8_PredefinedType)); e->setArgument(8,(v9_Axis)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralCurveReaction
IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum IfcStructuralCurveReaction::PredefinedType() const { return IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStructuralCurveReaction::setPredefinedType(IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStructuralCurveActivityTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralCurveReaction::declaration() const { return *IfcStructuralCurveReaction_type; }
Type::Enum IfcStructuralCurveReaction::Class() { return Type::IfcStructuralCurveReaction; }
IfcStructuralCurveReaction::IfcStructuralCurveReaction(IfcAbstractEntity* e) : IfcStructuralReaction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralCurveReaction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralCurveReaction::IfcStructuralCurveReaction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum v10_PredefinedType) : IfcStructuralReaction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,v10_PredefinedType,IfcStructuralCurveActivityTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralItem

IfcRelConnectsStructuralActivity::list::ptr IfcStructuralItem::AssignedStructuralActivity() const { return data_->getInverse(Type::IfcRelConnectsStructuralActivity, 4)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& IfcStructuralItem::declaration() const { return *IfcStructuralItem_type; }
Type::Enum IfcStructuralItem::Class() { return Type::IfcStructuralItem; }
IfcStructuralItem::IfcStructuralItem(IfcAbstractEntity* e) : IfcProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralItem::IfcStructuralItem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLinearAction


const IfcParse::entity& IfcStructuralLinearAction::declaration() const { return *IfcStructuralLinearAction_type; }
Type::Enum IfcStructuralLinearAction::Class() { return Type::IfcStructuralLinearAction; }
IfcStructuralLinearAction::IfcStructuralLinearAction(IfcAbstractEntity* e) : IfcStructuralCurveAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLinearAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum > v11_ProjectedOrTrue, IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum v12_PredefinedType) : IfcStructuralCurveAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); if (v10_DestabilizingLoad) { e->setArgument(9,(*v10_DestabilizingLoad)); } else { e->setArgument(9); } if (v11_ProjectedOrTrue) { e->setArgument(10,*v11_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue)); } else { e->setArgument(10); } e->setArgument(11,v12_PredefinedType,IfcStructuralCurveActivityTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoad
bool IfcStructuralLoad::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcStructuralLoad::Name() const { return *data_->getArgument(0); }
void IfcStructuralLoad::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcStructuralLoad::declaration() const { return *IfcStructuralLoad_type; }
Type::Enum IfcStructuralLoad::Class() { return Type::IfcStructuralLoad; }
IfcStructuralLoad::IfcStructuralLoad(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcStructuralLoad)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadCase
bool IfcStructuralLoadCase::hasSelfWeightCoefficients() const { return !data_->getArgument(10)->isNull(); }
std::vector< double > /*[3:3]*/ IfcStructuralLoadCase::SelfWeightCoefficients() const { return *data_->getArgument(10); }
void IfcStructuralLoadCase::setSelfWeightCoefficients(std::vector< double > /*[3:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcStructuralLoadCase::declaration() const { return *IfcStructuralLoadCase_type; }
Type::Enum IfcStructuralLoadCase::Class() { return Type::IfcStructuralLoadCase; }
IfcStructuralLoadCase::IfcStructuralLoadCase(IfcAbstractEntity* e) : IfcStructuralLoadGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum v6_PredefinedType, IfcActionTypeEnum::IfcActionTypeEnum v7_ActionType, IfcActionSourceTypeEnum::IfcActionSourceTypeEnum v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose, boost::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients) : IfcStructuralLoadGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_PredefinedType,IfcLoadGroupTypeEnum::ToString(v6_PredefinedType)); e->setArgument(6,v7_ActionType,IfcActionTypeEnum::ToString(v7_ActionType)); e->setArgument(7,v8_ActionSource,IfcActionSourceTypeEnum::ToString(v8_ActionSource)); if (v9_Coefficient) { e->setArgument(8,(*v9_Coefficient)); } else { e->setArgument(8); } if (v10_Purpose) { e->setArgument(9,(*v10_Purpose)); } else { e->setArgument(9); } if (v11_SelfWeightCoefficients) { e->setArgument(10,(*v11_SelfWeightCoefficients)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadConfiguration
IfcTemplatedEntityList< IfcStructuralLoadOrResult >::ptr IfcStructuralLoadConfiguration::Values() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcStructuralLoadOrResult>(); }
void IfcStructuralLoadConfiguration::setValues(IfcTemplatedEntityList< IfcStructuralLoadOrResult >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcStructuralLoadConfiguration::hasLocations() const { return !data_->getArgument(2)->isNull(); }
std::vector< std::vector< double > > IfcStructuralLoadConfiguration::Locations() const { return *data_->getArgument(2); }
void IfcStructuralLoadConfiguration::setLocations(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcStructuralLoadConfiguration::declaration() const { return *IfcStructuralLoadConfiguration_type; }
Type::Enum IfcStructuralLoadConfiguration::Class() { return Type::IfcStructuralLoadConfiguration; }
IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(IfcAbstractEntity* e) : IfcStructuralLoad((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadConfiguration)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(boost::optional< std::string > v1_Name, IfcTemplatedEntityList< IfcStructuralLoadOrResult >::ptr v2_Values, boost::optional< std::vector< std::vector< double > > > v3_Locations) : IfcStructuralLoad((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_Values)->generalize()); if (v3_Locations) { e->setArgument(2,(*v3_Locations)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadGroup
IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum IfcStructuralLoadGroup::PredefinedType() const { return IfcLoadGroupTypeEnum::FromString(*data_->getArgument(5)); }
void IfcStructuralLoadGroup::setPredefinedType(IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcLoadGroupTypeEnum::ToString(v)); }
IfcActionTypeEnum::IfcActionTypeEnum IfcStructuralLoadGroup::ActionType() const { return IfcActionTypeEnum::FromString(*data_->getArgument(6)); }
void IfcStructuralLoadGroup::setActionType(IfcActionTypeEnum::IfcActionTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v,IfcActionTypeEnum::ToString(v)); }
IfcActionSourceTypeEnum::IfcActionSourceTypeEnum IfcStructuralLoadGroup::ActionSource() const { return IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); }
void IfcStructuralLoadGroup::setActionSource(IfcActionSourceTypeEnum::IfcActionSourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcActionSourceTypeEnum::ToString(v)); }
bool IfcStructuralLoadGroup::hasCoefficient() const { return !data_->getArgument(8)->isNull(); }
double IfcStructuralLoadGroup::Coefficient() const { return *data_->getArgument(8); }
void IfcStructuralLoadGroup::setCoefficient(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcStructuralLoadGroup::hasPurpose() const { return !data_->getArgument(9)->isNull(); }
std::string IfcStructuralLoadGroup::Purpose() const { return *data_->getArgument(9); }
void IfcStructuralLoadGroup::setPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }

IfcStructuralResultGroup::list::ptr IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(Type::IfcStructuralResultGroup, 6)->as<IfcStructuralResultGroup>(); }
IfcStructuralAnalysisModel::list::ptr IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(Type::IfcStructuralAnalysisModel, 7)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& IfcStructuralLoadGroup::declaration() const { return *IfcStructuralLoadGroup_type; }
Type::Enum IfcStructuralLoadGroup::Class() { return Type::IfcStructuralLoadGroup; }
IfcStructuralLoadGroup::IfcStructuralLoadGroup(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum v6_PredefinedType, IfcActionTypeEnum::IfcActionTypeEnum v7_ActionType, IfcActionSourceTypeEnum::IfcActionSourceTypeEnum v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_PredefinedType,IfcLoadGroupTypeEnum::ToString(v6_PredefinedType)); e->setArgument(6,v7_ActionType,IfcActionTypeEnum::ToString(v7_ActionType)); e->setArgument(7,v8_ActionSource,IfcActionSourceTypeEnum::ToString(v8_ActionSource)); if (v9_Coefficient) { e->setArgument(8,(*v9_Coefficient)); } else { e->setArgument(8); } if (v10_Purpose) { e->setArgument(9,(*v10_Purpose)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadLinearForce
bool IfcStructuralLoadLinearForce::hasLinearForceX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadLinearForce::LinearForceX() const { return *data_->getArgument(1); }
void IfcStructuralLoadLinearForce::setLinearForceX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadLinearForce::hasLinearForceY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadLinearForce::LinearForceY() const { return *data_->getArgument(2); }
void IfcStructuralLoadLinearForce::setLinearForceY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadLinearForce::hasLinearForceZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadLinearForce::LinearForceZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadLinearForce::setLinearForceZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcStructuralLoadLinearForce::hasLinearMomentX() const { return !data_->getArgument(4)->isNull(); }
double IfcStructuralLoadLinearForce::LinearMomentX() const { return *data_->getArgument(4); }
void IfcStructuralLoadLinearForce::setLinearMomentX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcStructuralLoadLinearForce::hasLinearMomentY() const { return !data_->getArgument(5)->isNull(); }
double IfcStructuralLoadLinearForce::LinearMomentY() const { return *data_->getArgument(5); }
void IfcStructuralLoadLinearForce::setLinearMomentY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcStructuralLoadLinearForce::hasLinearMomentZ() const { return !data_->getArgument(6)->isNull(); }
double IfcStructuralLoadLinearForce::LinearMomentZ() const { return *data_->getArgument(6); }
void IfcStructuralLoadLinearForce::setLinearMomentZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcStructuralLoadLinearForce::declaration() const { return *IfcStructuralLoadLinearForce_type; }
Type::Enum IfcStructuralLoadLinearForce::Class() { return Type::IfcStructuralLoadLinearForce; }
IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadLinearForce)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_LinearForceX, boost::optional< double > v3_LinearForceY, boost::optional< double > v4_LinearForceZ, boost::optional< double > v5_LinearMomentX, boost::optional< double > v6_LinearMomentY, boost::optional< double > v7_LinearMomentZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_LinearForceX) { e->setArgument(1,(*v2_LinearForceX)); } else { e->setArgument(1); } if (v3_LinearForceY) { e->setArgument(2,(*v3_LinearForceY)); } else { e->setArgument(2); } if (v4_LinearForceZ) { e->setArgument(3,(*v4_LinearForceZ)); } else { e->setArgument(3); } if (v5_LinearMomentX) { e->setArgument(4,(*v5_LinearMomentX)); } else { e->setArgument(4); } if (v6_LinearMomentY) { e->setArgument(5,(*v6_LinearMomentY)); } else { e->setArgument(5); } if (v7_LinearMomentZ) { e->setArgument(6,(*v7_LinearMomentZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadOrResult


const IfcParse::entity& IfcStructuralLoadOrResult::declaration() const { return *IfcStructuralLoadOrResult_type; }
Type::Enum IfcStructuralLoadOrResult::Class() { return Type::IfcStructuralLoadOrResult; }
IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(IfcAbstractEntity* e) : IfcStructuralLoad((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadOrResult)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< std::string > v1_Name) : IfcStructuralLoad((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadPlanarForce
bool IfcStructuralLoadPlanarForce::hasPlanarForceX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadPlanarForce::PlanarForceX() const { return *data_->getArgument(1); }
void IfcStructuralLoadPlanarForce::setPlanarForceX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadPlanarForce::hasPlanarForceY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadPlanarForce::PlanarForceY() const { return *data_->getArgument(2); }
void IfcStructuralLoadPlanarForce::setPlanarForceY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadPlanarForce::hasPlanarForceZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadPlanarForce::PlanarForceZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadPlanarForce::setPlanarForceZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcStructuralLoadPlanarForce::declaration() const { return *IfcStructuralLoadPlanarForce_type; }
Type::Enum IfcStructuralLoadPlanarForce::Class() { return Type::IfcStructuralLoadPlanarForce; }
IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadPlanarForce)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_PlanarForceX, boost::optional< double > v3_PlanarForceY, boost::optional< double > v4_PlanarForceZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_PlanarForceX) { e->setArgument(1,(*v2_PlanarForceX)); } else { e->setArgument(1); } if (v3_PlanarForceY) { e->setArgument(2,(*v3_PlanarForceY)); } else { e->setArgument(2); } if (v4_PlanarForceZ) { e->setArgument(3,(*v4_PlanarForceZ)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleDisplacement
bool IfcStructuralLoadSingleDisplacement::hasDisplacementX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadSingleDisplacement::DisplacementX() const { return *data_->getArgument(1); }
void IfcStructuralLoadSingleDisplacement::setDisplacementX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadSingleDisplacement::hasDisplacementY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadSingleDisplacement::DisplacementY() const { return *data_->getArgument(2); }
void IfcStructuralLoadSingleDisplacement::setDisplacementY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadSingleDisplacement::hasDisplacementZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadSingleDisplacement::DisplacementZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadSingleDisplacement::setDisplacementZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcStructuralLoadSingleDisplacement::hasRotationalDisplacementRX() const { return !data_->getArgument(4)->isNull(); }
double IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { return *data_->getArgument(4); }
void IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcStructuralLoadSingleDisplacement::hasRotationalDisplacementRY() const { return !data_->getArgument(5)->isNull(); }
double IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { return *data_->getArgument(5); }
void IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcStructuralLoadSingleDisplacement::hasRotationalDisplacementRZ() const { return !data_->getArgument(6)->isNull(); }
double IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { return *data_->getArgument(6); }
void IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcStructuralLoadSingleDisplacement::declaration() const { return *IfcStructuralLoadSingleDisplacement_type; }
Type::Enum IfcStructuralLoadSingleDisplacement::Class() { return Type::IfcStructuralLoadSingleDisplacement; }
IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleDisplacement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DisplacementX) { e->setArgument(1,(*v2_DisplacementX)); } else { e->setArgument(1); } if (v3_DisplacementY) { e->setArgument(2,(*v3_DisplacementY)); } else { e->setArgument(2); } if (v4_DisplacementZ) { e->setArgument(3,(*v4_DisplacementZ)); } else { e->setArgument(3); } if (v5_RotationalDisplacementRX) { e->setArgument(4,(*v5_RotationalDisplacementRX)); } else { e->setArgument(4); } if (v6_RotationalDisplacementRY) { e->setArgument(5,(*v6_RotationalDisplacementRY)); } else { e->setArgument(5); } if (v7_RotationalDisplacementRZ) { e->setArgument(6,(*v7_RotationalDisplacementRZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleDisplacementDistortion
bool IfcStructuralLoadSingleDisplacementDistortion::hasDistortion() const { return !data_->getArgument(7)->isNull(); }
double IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { return *data_->getArgument(7); }
void IfcStructuralLoadSingleDisplacementDistortion::setDistortion(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IfcStructuralLoadSingleDisplacementDistortion_type; }
Type::Enum IfcStructuralLoadSingleDisplacementDistortion::Class() { return Type::IfcStructuralLoadSingleDisplacementDistortion; }
IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(IfcAbstractEntity* e) : IfcStructuralLoadSingleDisplacement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleDisplacementDistortion)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(boost::optional< std::string > v1_Name, boost::optional< double > v2_DisplacementX, boost::optional< double > v3_DisplacementY, boost::optional< double > v4_DisplacementZ, boost::optional< double > v5_RotationalDisplacementRX, boost::optional< double > v6_RotationalDisplacementRY, boost::optional< double > v7_RotationalDisplacementRZ, boost::optional< double > v8_Distortion) : IfcStructuralLoadSingleDisplacement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DisplacementX) { e->setArgument(1,(*v2_DisplacementX)); } else { e->setArgument(1); } if (v3_DisplacementY) { e->setArgument(2,(*v3_DisplacementY)); } else { e->setArgument(2); } if (v4_DisplacementZ) { e->setArgument(3,(*v4_DisplacementZ)); } else { e->setArgument(3); } if (v5_RotationalDisplacementRX) { e->setArgument(4,(*v5_RotationalDisplacementRX)); } else { e->setArgument(4); } if (v6_RotationalDisplacementRY) { e->setArgument(5,(*v6_RotationalDisplacementRY)); } else { e->setArgument(5); } if (v7_RotationalDisplacementRZ) { e->setArgument(6,(*v7_RotationalDisplacementRZ)); } else { e->setArgument(6); } if (v8_Distortion) { e->setArgument(7,(*v8_Distortion)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleForce
bool IfcStructuralLoadSingleForce::hasForceX() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadSingleForce::ForceX() const { return *data_->getArgument(1); }
void IfcStructuralLoadSingleForce::setForceX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadSingleForce::hasForceY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadSingleForce::ForceY() const { return *data_->getArgument(2); }
void IfcStructuralLoadSingleForce::setForceY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadSingleForce::hasForceZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadSingleForce::ForceZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadSingleForce::setForceZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcStructuralLoadSingleForce::hasMomentX() const { return !data_->getArgument(4)->isNull(); }
double IfcStructuralLoadSingleForce::MomentX() const { return *data_->getArgument(4); }
void IfcStructuralLoadSingleForce::setMomentX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcStructuralLoadSingleForce::hasMomentY() const { return !data_->getArgument(5)->isNull(); }
double IfcStructuralLoadSingleForce::MomentY() const { return *data_->getArgument(5); }
void IfcStructuralLoadSingleForce::setMomentY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcStructuralLoadSingleForce::hasMomentZ() const { return !data_->getArgument(6)->isNull(); }
double IfcStructuralLoadSingleForce::MomentZ() const { return *data_->getArgument(6); }
void IfcStructuralLoadSingleForce::setMomentZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcStructuralLoadSingleForce::declaration() const { return *IfcStructuralLoadSingleForce_type; }
Type::Enum IfcStructuralLoadSingleForce::Class() { return Type::IfcStructuralLoadSingleForce; }
IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleForce)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_ForceX) { e->setArgument(1,(*v2_ForceX)); } else { e->setArgument(1); } if (v3_ForceY) { e->setArgument(2,(*v3_ForceY)); } else { e->setArgument(2); } if (v4_ForceZ) { e->setArgument(3,(*v4_ForceZ)); } else { e->setArgument(3); } if (v5_MomentX) { e->setArgument(4,(*v5_MomentX)); } else { e->setArgument(4); } if (v6_MomentY) { e->setArgument(5,(*v6_MomentY)); } else { e->setArgument(5); } if (v7_MomentZ) { e->setArgument(6,(*v7_MomentZ)); } else { e->setArgument(6); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadSingleForceWarping
bool IfcStructuralLoadSingleForceWarping::hasWarpingMoment() const { return !data_->getArgument(7)->isNull(); }
double IfcStructuralLoadSingleForceWarping::WarpingMoment() const { return *data_->getArgument(7); }
void IfcStructuralLoadSingleForceWarping::setWarpingMoment(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }


const IfcParse::entity& IfcStructuralLoadSingleForceWarping::declaration() const { return *IfcStructuralLoadSingleForceWarping_type; }
Type::Enum IfcStructuralLoadSingleForceWarping::Class() { return Type::IfcStructuralLoadSingleForceWarping; }
IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(IfcAbstractEntity* e) : IfcStructuralLoadSingleForce((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadSingleForceWarping)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(boost::optional< std::string > v1_Name, boost::optional< double > v2_ForceX, boost::optional< double > v3_ForceY, boost::optional< double > v4_ForceZ, boost::optional< double > v5_MomentX, boost::optional< double > v6_MomentY, boost::optional< double > v7_MomentZ, boost::optional< double > v8_WarpingMoment) : IfcStructuralLoadSingleForce((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_ForceX) { e->setArgument(1,(*v2_ForceX)); } else { e->setArgument(1); } if (v3_ForceY) { e->setArgument(2,(*v3_ForceY)); } else { e->setArgument(2); } if (v4_ForceZ) { e->setArgument(3,(*v4_ForceZ)); } else { e->setArgument(3); } if (v5_MomentX) { e->setArgument(4,(*v5_MomentX)); } else { e->setArgument(4); } if (v6_MomentY) { e->setArgument(5,(*v6_MomentY)); } else { e->setArgument(5); } if (v7_MomentZ) { e->setArgument(6,(*v7_MomentZ)); } else { e->setArgument(6); } if (v8_WarpingMoment) { e->setArgument(7,(*v8_WarpingMoment)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadStatic


const IfcParse::entity& IfcStructuralLoadStatic::declaration() const { return *IfcStructuralLoadStatic_type; }
Type::Enum IfcStructuralLoadStatic::Class() { return Type::IfcStructuralLoadStatic; }
IfcStructuralLoadStatic::IfcStructuralLoadStatic(IfcAbstractEntity* e) : IfcStructuralLoadOrResult((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadStatic)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::string > v1_Name) : IfcStructuralLoadOrResult((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralLoadTemperature
bool IfcStructuralLoadTemperature::hasDeltaTConstant() const { return !data_->getArgument(1)->isNull(); }
double IfcStructuralLoadTemperature::DeltaTConstant() const { return *data_->getArgument(1); }
void IfcStructuralLoadTemperature::setDeltaTConstant(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStructuralLoadTemperature::hasDeltaTY() const { return !data_->getArgument(2)->isNull(); }
double IfcStructuralLoadTemperature::DeltaTY() const { return *data_->getArgument(2); }
void IfcStructuralLoadTemperature::setDeltaTY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcStructuralLoadTemperature::hasDeltaTZ() const { return !data_->getArgument(3)->isNull(); }
double IfcStructuralLoadTemperature::DeltaTZ() const { return *data_->getArgument(3); }
void IfcStructuralLoadTemperature::setDeltaTZ(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcStructuralLoadTemperature::declaration() const { return *IfcStructuralLoadTemperature_type; }
Type::Enum IfcStructuralLoadTemperature::Class() { return Type::IfcStructuralLoadTemperature; }
IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(IfcAbstractEntity* e) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralLoadTemperature)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(boost::optional< std::string > v1_Name, boost::optional< double > v2_DeltaTConstant, boost::optional< double > v3_DeltaTY, boost::optional< double > v4_DeltaTZ) : IfcStructuralLoadStatic((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DeltaTConstant) { e->setArgument(1,(*v2_DeltaTConstant)); } else { e->setArgument(1); } if (v3_DeltaTY) { e->setArgument(2,(*v3_DeltaTY)); } else { e->setArgument(2); } if (v4_DeltaTZ) { e->setArgument(3,(*v4_DeltaTZ)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralMember

IfcRelConnectsStructuralMember::list::ptr IfcStructuralMember::ConnectedBy() const { return data_->getInverse(Type::IfcRelConnectsStructuralMember, 4)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& IfcStructuralMember::declaration() const { return *IfcStructuralMember_type; }
Type::Enum IfcStructuralMember::Class() { return Type::IfcStructuralMember; }
IfcStructuralMember::IfcStructuralMember(IfcAbstractEntity* e) : IfcStructuralItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralMember::IfcStructuralMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation) : IfcStructuralItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPlanarAction


const IfcParse::entity& IfcStructuralPlanarAction::declaration() const { return *IfcStructuralPlanarAction_type; }
Type::Enum IfcStructuralPlanarAction::Class() { return Type::IfcStructuralPlanarAction; }
IfcStructuralPlanarAction::IfcStructuralPlanarAction(IfcAbstractEntity* e) : IfcStructuralSurfaceAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPlanarAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPlanarAction::IfcStructuralPlanarAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum > v11_ProjectedOrTrue, IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum v12_PredefinedType) : IfcStructuralSurfaceAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); if (v10_DestabilizingLoad) { e->setArgument(9,(*v10_DestabilizingLoad)); } else { e->setArgument(9); } if (v11_ProjectedOrTrue) { e->setArgument(10,*v11_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue)); } else { e->setArgument(10); } e->setArgument(11,v12_PredefinedType,IfcStructuralSurfaceActivityTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPointAction


const IfcParse::entity& IfcStructuralPointAction::declaration() const { return *IfcStructuralPointAction_type; }
Type::Enum IfcStructuralPointAction::Class() { return Type::IfcStructuralPointAction; }
IfcStructuralPointAction::IfcStructuralPointAction(IfcAbstractEntity* e) : IfcStructuralAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPointAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPointAction::IfcStructuralPointAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); if (v10_DestabilizingLoad) { e->setArgument(9,(*v10_DestabilizingLoad)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPointConnection
bool IfcStructuralPointConnection::hasConditionCoordinateSystem() const { return !data_->getArgument(8)->isNull(); }
IfcAxis2Placement3D* IfcStructuralPointConnection::ConditionCoordinateSystem() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcStructuralPointConnection::setConditionCoordinateSystem(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcStructuralPointConnection::declaration() const { return *IfcStructuralPointConnection_type; }
Type::Enum IfcStructuralPointConnection::Class() { return Type::IfcStructuralPointConnection; }
IfcStructuralPointConnection::IfcStructuralPointConnection(IfcAbstractEntity* e) : IfcStructuralConnection((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPointConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPointConnection::IfcStructuralPointConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition, IfcAxis2Placement3D* v9_ConditionCoordinateSystem) : IfcStructuralConnection((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); e->setArgument(8,(v9_ConditionCoordinateSystem)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralPointReaction


const IfcParse::entity& IfcStructuralPointReaction::declaration() const { return *IfcStructuralPointReaction_type; }
Type::Enum IfcStructuralPointReaction::Class() { return Type::IfcStructuralPointReaction; }
IfcStructuralPointReaction::IfcStructuralPointReaction(IfcAbstractEntity* e) : IfcStructuralReaction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralPointReaction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal) : IfcStructuralReaction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralReaction


const IfcParse::entity& IfcStructuralReaction::declaration() const { return *IfcStructuralReaction_type; }
Type::Enum IfcStructuralReaction::Class() { return Type::IfcStructuralReaction; }
IfcStructuralReaction::IfcStructuralReaction(IfcAbstractEntity* e) : IfcStructuralActivity((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralReaction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralReaction::IfcStructuralReaction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal) : IfcStructuralActivity((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralResultGroup
IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum IfcStructuralResultGroup::TheoryType() const { return IfcAnalysisTheoryTypeEnum::FromString(*data_->getArgument(5)); }
void IfcStructuralResultGroup::setTheoryType(IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcAnalysisTheoryTypeEnum::ToString(v)); }
bool IfcStructuralResultGroup::hasResultForLoadGroup() const { return !data_->getArgument(6)->isNull(); }
IfcStructuralLoadGroup* IfcStructuralResultGroup::ResultForLoadGroup() const { return (IfcStructuralLoadGroup*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcStructuralResultGroup::setResultForLoadGroup(IfcStructuralLoadGroup* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcStructuralResultGroup::IsLinear() const { return *data_->getArgument(7); }
void IfcStructuralResultGroup::setIsLinear(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcStructuralAnalysisModel::list::ptr IfcStructuralResultGroup::ResultGroupFor() const { return data_->getInverse(Type::IfcStructuralAnalysisModel, 8)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& IfcStructuralResultGroup::declaration() const { return *IfcStructuralResultGroup_type; }
Type::Enum IfcStructuralResultGroup::Class() { return Type::IfcStructuralResultGroup; }
IfcStructuralResultGroup::IfcStructuralResultGroup(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralResultGroup)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum v6_TheoryType, IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,v6_TheoryType,IfcAnalysisTheoryTypeEnum::ToString(v6_TheoryType)); e->setArgument(6,(v7_ResultForLoadGroup)); e->setArgument(7,(v8_IsLinear)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceAction
bool IfcStructuralSurfaceAction::hasProjectedOrTrue() const { return !data_->getArgument(10)->isNull(); }
IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum IfcStructuralSurfaceAction::ProjectedOrTrue() const { return IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); }
void IfcStructuralSurfaceAction::setProjectedOrTrue(IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcProjectedOrTrueLengthEnum::ToString(v)); }
IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum IfcStructuralSurfaceAction::PredefinedType() const { return IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); }
void IfcStructuralSurfaceAction::setPredefinedType(IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcStructuralSurfaceActivityTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralSurfaceAction::declaration() const { return *IfcStructuralSurfaceAction_type; }
Type::Enum IfcStructuralSurfaceAction::Class() { return Type::IfcStructuralSurfaceAction; }
IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(IfcAbstractEntity* e) : IfcStructuralAction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceAction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum > v11_ProjectedOrTrue, IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum v12_PredefinedType) : IfcStructuralAction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); if (v10_DestabilizingLoad) { e->setArgument(9,(*v10_DestabilizingLoad)); } else { e->setArgument(9); } if (v11_ProjectedOrTrue) { e->setArgument(10,*v11_ProjectedOrTrue,IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue)); } else { e->setArgument(10); } e->setArgument(11,v12_PredefinedType,IfcStructuralSurfaceActivityTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceConnection


const IfcParse::entity& IfcStructuralSurfaceConnection::declaration() const { return *IfcStructuralSurfaceConnection_type; }
Type::Enum IfcStructuralSurfaceConnection::Class() { return Type::IfcStructuralSurfaceConnection; }
IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(IfcAbstractEntity* e) : IfcStructuralConnection((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceConnection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedCondition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceMember
IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum IfcStructuralSurfaceMember::PredefinedType() const { return IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); }
void IfcStructuralSurfaceMember::setPredefinedType(IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v,IfcStructuralSurfaceMemberTypeEnum::ToString(v)); }
bool IfcStructuralSurfaceMember::hasThickness() const { return !data_->getArgument(8)->isNull(); }
double IfcStructuralSurfaceMember::Thickness() const { return *data_->getArgument(8); }
void IfcStructuralSurfaceMember::setThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcStructuralSurfaceMember::declaration() const { return *IfcStructuralSurfaceMember_type; }
Type::Enum IfcStructuralSurfaceMember::Class() { return Type::IfcStructuralSurfaceMember; }
IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(IfcAbstractEntity* e) : IfcStructuralMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceMember)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralSurfaceMemberTypeEnum::ToString(v8_PredefinedType)); if (v9_Thickness) { e->setArgument(8,(*v9_Thickness)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceMemberVarying


const IfcParse::entity& IfcStructuralSurfaceMemberVarying::declaration() const { return *IfcStructuralSurfaceMemberVarying_type; }
Type::Enum IfcStructuralSurfaceMemberVarying::Class() { return Type::IfcStructuralSurfaceMemberVarying; }
IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(IfcAbstractEntity* e) : IfcStructuralSurfaceMember((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceMemberVarying)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralSurfaceMember((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,v8_PredefinedType,IfcStructuralSurfaceMemberTypeEnum::ToString(v8_PredefinedType)); if (v9_Thickness) { e->setArgument(8,(*v9_Thickness)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStructuralSurfaceReaction
IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum IfcStructuralSurfaceReaction::PredefinedType() const { return IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(9)); }
void IfcStructuralSurfaceReaction::setPredefinedType(IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcStructuralSurfaceActivityTypeEnum::ToString(v)); }


const IfcParse::entity& IfcStructuralSurfaceReaction::declaration() const { return *IfcStructuralSurfaceReaction_type; }
Type::Enum IfcStructuralSurfaceReaction::Class() { return Type::IfcStructuralSurfaceReaction; }
IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(IfcAbstractEntity* e) : IfcStructuralReaction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStructuralSurfaceReaction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, IfcStructuralLoad* v8_AppliedLoad, IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum v9_GlobalOrLocal, IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum v10_PredefinedType) : IfcStructuralReaction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); e->setArgument(7,(v8_AppliedLoad)); e->setArgument(8,v9_GlobalOrLocal,IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal)); e->setArgument(9,v10_PredefinedType,IfcStructuralSurfaceActivityTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStyleModel


const IfcParse::entity& IfcStyleModel::declaration() const { return *IfcStyleModel_type; }
Type::Enum IfcStyleModel::Class() { return Type::IfcStyleModel; }
IfcStyleModel::IfcStyleModel(IfcAbstractEntity* e) : IfcRepresentation((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStyleModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStyleModel::IfcStyleModel(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStyledItem
bool IfcStyledItem::hasItem() const { return !data_->getArgument(0)->isNull(); }
IfcRepresentationItem* IfcStyledItem::Item() const { return (IfcRepresentationItem*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcStyledItem::setItem(IfcRepresentationItem* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcStyledItem::Styles() const { return *data_->getArgument(1); }
void IfcStyledItem::setStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcStyledItem::hasName() const { return !data_->getArgument(2)->isNull(); }
std::string IfcStyledItem::Name() const { return *data_->getArgument(2); }
void IfcStyledItem::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcStyledItem::declaration() const { return *IfcStyledItem_type; }
Type::Enum IfcStyledItem::Class() { return Type::IfcStyledItem; }
IfcStyledItem::IfcStyledItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStyledItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStyledItem::IfcStyledItem(IfcRepresentationItem* v1_Item, IfcEntityList::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Item)); e->setArgument(1,(v2_Styles)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcStyledRepresentation


const IfcParse::entity& IfcStyledRepresentation::declaration() const { return *IfcStyledRepresentation_type; }
Type::Enum IfcStyledRepresentation::Class() { return Type::IfcStyledRepresentation; }
IfcStyledRepresentation::IfcStyledRepresentation(IfcAbstractEntity* e) : IfcStyleModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcStyledRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcStyledRepresentation::IfcStyledRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcStyleModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSubContractResource
bool IfcSubContractResource::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum IfcSubContractResource::PredefinedType() const { return IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); }
void IfcSubContractResource::setPredefinedType(IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcSubContractResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSubContractResource::declaration() const { return *IfcSubContractResource_type; }
Type::Enum IfcSubContractResource::Class() { return Type::IfcSubContractResource; }
IfcSubContractResource::IfcSubContractResource(IfcAbstractEntity* e) : IfcConstructionResource((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSubContractResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSubContractResource::IfcSubContractResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, IfcResourceTime* v8_Usage, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v9_BaseCosts, IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum > v11_PredefinedType) : IfcConstructionResource((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } e->setArgument(7,(v8_Usage)); if (v9_BaseCosts) { e->setArgument(8,(*v9_BaseCosts)->generalize()); } else { e->setArgument(8); } e->setArgument(9,(v10_BaseQuantity)); if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcSubContractResourceTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSubContractResourceType
IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum IfcSubContractResourceType::PredefinedType() const { return IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(11)); }
void IfcSubContractResourceType::setPredefinedType(IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcSubContractResourceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSubContractResourceType::declaration() const { return *IfcSubContractResourceType_type; }
Type::Enum IfcSubContractResourceType::Class() { return Type::IfcSubContractResourceType; }
IfcSubContractResourceType::IfcSubContractResourceType(IfcAbstractEntity* e) : IfcConstructionResourceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSubContractResourceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSubContractResourceType::IfcSubContractResourceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< IfcTemplatedEntityList< IfcAppliedValue >::ptr > v10_BaseCosts, IfcPhysicalQuantity* v11_BaseQuantity, IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum v12_PredefinedType) : IfcConstructionResourceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } if (v10_BaseCosts) { e->setArgument(9,(*v10_BaseCosts)->generalize()); } else { e->setArgument(9); } e->setArgument(10,(v11_BaseQuantity)); e->setArgument(11,v12_PredefinedType,IfcSubContractResourceTypeEnum::ToString(v12_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSubedge
IfcEdge* IfcSubedge::ParentEdge() const { return (IfcEdge*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSubedge::setParentEdge(IfcEdge* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSubedge::declaration() const { return *IfcSubedge_type; }
Type::Enum IfcSubedge::Class() { return Type::IfcSubedge; }
IfcSubedge::IfcSubedge(IfcAbstractEntity* e) : IfcEdge((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSubedge)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSubedge::IfcSubedge(IfcVertex* v1_EdgeStart, IfcVertex* v2_EdgeEnd, IfcEdge* v3_ParentEdge) : IfcEdge((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_EdgeStart)); e->setArgument(1,(v2_EdgeEnd)); e->setArgument(2,(v3_ParentEdge)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurface


const IfcParse::entity& IfcSurface::declaration() const { return *IfcSurface_type; }
Type::Enum IfcSurface::Class() { return Type::IfcSurface; }
IfcSurface::IfcSurface(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurface::IfcSurface() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceCurve
IfcCurve* IfcSurfaceCurve::Curve3D() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSurfaceCurve::setCurve3D(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcTemplatedEntityList< IfcPcurve >::ptr IfcSurfaceCurve::AssociatedGeometry() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcPcurve>(); }
void IfcSurfaceCurve::setAssociatedGeometry(IfcTemplatedEntityList< IfcPcurve >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation IfcSurfaceCurve::MasterRepresentation() const { return IfcPreferredSurfaceCurveRepresentation::FromString(*data_->getArgument(2)); }
void IfcSurfaceCurve::setMasterRepresentation(IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcPreferredSurfaceCurveRepresentation::ToString(v)); }


const IfcParse::entity& IfcSurfaceCurve::declaration() const { return *IfcSurfaceCurve_type; }
Type::Enum IfcSurfaceCurve::Class() { return Type::IfcSurfaceCurve; }
IfcSurfaceCurve::IfcSurfaceCurve(IfcAbstractEntity* e) : IfcCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceCurve::IfcSurfaceCurve(IfcCurve* v1_Curve3D, IfcTemplatedEntityList< IfcPcurve >::ptr v2_AssociatedGeometry, IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation v3_MasterRepresentation) : IfcCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Curve3D)); e->setArgument(1,(v2_AssociatedGeometry)->generalize()); e->setArgument(2,v3_MasterRepresentation,IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceCurveSweptAreaSolid
IfcCurve* IfcSurfaceCurveSweptAreaSolid::Directrix() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceCurveSweptAreaSolid::setDirectrix(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSurfaceCurveSweptAreaSolid::hasStartParam() const { return !data_->getArgument(3)->isNull(); }
double IfcSurfaceCurveSweptAreaSolid::StartParam() const { return *data_->getArgument(3); }
void IfcSurfaceCurveSweptAreaSolid::setStartParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcSurfaceCurveSweptAreaSolid::hasEndParam() const { return !data_->getArgument(4)->isNull(); }
double IfcSurfaceCurveSweptAreaSolid::EndParam() const { return *data_->getArgument(4); }
void IfcSurfaceCurveSweptAreaSolid::setEndParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcSurface* IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const { return (IfcSurface*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(IfcSurface* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcSurfaceCurveSweptAreaSolid::declaration() const { return *IfcSurfaceCurveSweptAreaSolid_type; }
Type::Enum IfcSurfaceCurveSweptAreaSolid::Class() { return Type::IfcSurfaceCurveSweptAreaSolid; }
IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcAbstractEntity* e) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceCurveSweptAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position, IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, IfcSurface* v6_ReferenceSurface) : IfcSweptAreaSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_Directrix)); if (v4_StartParam) { e->setArgument(3,(*v4_StartParam)); } else { e->setArgument(3); } if (v5_EndParam) { e->setArgument(4,(*v5_EndParam)); } else { e->setArgument(4); } e->setArgument(5,(v6_ReferenceSurface)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceFeature
bool IfcSurfaceFeature::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum IfcSurfaceFeature::PredefinedType() const { return IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSurfaceFeature::setPredefinedType(IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSurfaceFeatureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSurfaceFeature::declaration() const { return *IfcSurfaceFeature_type; }
Type::Enum IfcSurfaceFeature::Class() { return Type::IfcSurfaceFeature; }
IfcSurfaceFeature::IfcSurfaceFeature(IfcAbstractEntity* e) : IfcFeatureElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceFeature)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceFeature::IfcSurfaceFeature(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum > v9_PredefinedType) : IfcFeatureElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSurfaceFeatureTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceOfLinearExtrusion
IfcDirection* IfcSurfaceOfLinearExtrusion::ExtrudedDirection() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceOfLinearExtrusion::setExtrudedDirection(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
double IfcSurfaceOfLinearExtrusion::Depth() const { return *data_->getArgument(3); }
void IfcSurfaceOfLinearExtrusion::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSurfaceOfLinearExtrusion::declaration() const { return *IfcSurfaceOfLinearExtrusion_type; }
Type::Enum IfcSurfaceOfLinearExtrusion::Class() { return Type::IfcSurfaceOfLinearExtrusion; }
IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcAbstractEntity* e) : IfcSweptSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceOfLinearExtrusion)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcProfileDef* v1_SweptCurve, IfcAxis2Placement3D* v2_Position, IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptCurve)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_ExtrudedDirection)); e->setArgument(3,(v4_Depth)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceOfRevolution
IfcAxis1Placement* IfcSurfaceOfRevolution::AxisPosition() const { return (IfcAxis1Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceOfRevolution::setAxisPosition(IfcAxis1Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSurfaceOfRevolution::declaration() const { return *IfcSurfaceOfRevolution_type; }
Type::Enum IfcSurfaceOfRevolution::Class() { return Type::IfcSurfaceOfRevolution; }
IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcAbstractEntity* e) : IfcSweptSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceOfRevolution)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcProfileDef* v1_SweptCurve, IfcAxis2Placement3D* v2_Position, IfcAxis1Placement* v3_AxisPosition) : IfcSweptSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptCurve)); e->setArgument(1,(v2_Position)); e->setArgument(2,(v3_AxisPosition)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceReinforcementArea
bool IfcSurfaceReinforcementArea::hasSurfaceReinforcement1() const { return !data_->getArgument(1)->isNull(); }
std::vector< double > /*[2:3]*/ IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { return *data_->getArgument(1); }
void IfcSurfaceReinforcementArea::setSurfaceReinforcement1(std::vector< double > /*[2:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSurfaceReinforcementArea::hasSurfaceReinforcement2() const { return !data_->getArgument(2)->isNull(); }
std::vector< double > /*[2:3]*/ IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { return *data_->getArgument(2); }
void IfcSurfaceReinforcementArea::setSurfaceReinforcement2(std::vector< double > /*[2:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSurfaceReinforcementArea::hasShearReinforcement() const { return !data_->getArgument(3)->isNull(); }
double IfcSurfaceReinforcementArea::ShearReinforcement() const { return *data_->getArgument(3); }
void IfcSurfaceReinforcementArea::setShearReinforcement(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSurfaceReinforcementArea::declaration() const { return *IfcSurfaceReinforcementArea_type; }
Type::Enum IfcSurfaceReinforcementArea::Class() { return Type::IfcSurfaceReinforcementArea; }
IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(IfcAbstractEntity* e) : IfcStructuralLoadOrResult((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceReinforcementArea)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(boost::optional< std::string > v1_Name, boost::optional< std::vector< double > /*[2:3]*/ > v2_SurfaceReinforcement1, boost::optional< std::vector< double > /*[2:3]*/ > v3_SurfaceReinforcement2, boost::optional< double > v4_ShearReinforcement) : IfcStructuralLoadOrResult((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_SurfaceReinforcement1) { e->setArgument(1,(*v2_SurfaceReinforcement1)); } else { e->setArgument(1); } if (v3_SurfaceReinforcement2) { e->setArgument(2,(*v3_SurfaceReinforcement2)); } else { e->setArgument(2); } if (v4_ShearReinforcement) { e->setArgument(3,(*v4_ShearReinforcement)); } else { e->setArgument(3); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyle
IfcSurfaceSide::IfcSurfaceSide IfcSurfaceStyle::Side() const { return IfcSurfaceSide::FromString(*data_->getArgument(1)); }
void IfcSurfaceStyle::setSide(IfcSurfaceSide::IfcSurfaceSide v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v,IfcSurfaceSide::ToString(v)); }
IfcEntityList::ptr IfcSurfaceStyle::Styles() const { return *data_->getArgument(2); }
void IfcSurfaceStyle::setStyles(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcSurfaceStyle::declaration() const { return *IfcSurfaceStyle_type; }
Type::Enum IfcSurfaceStyle::Class() { return Type::IfcSurfaceStyle; }
IfcSurfaceStyle::IfcSurfaceStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyle::IfcSurfaceStyle(boost::optional< std::string > v1_Name, IfcSurfaceSide::IfcSurfaceSide v2_Side, IfcEntityList::ptr v3_Styles) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,v2_Side,IfcSurfaceSide::ToString(v2_Side)); e->setArgument(2,(v3_Styles)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleLighting
IfcColourRgb* IfcSurfaceStyleLighting::DiffuseTransmissionColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSurfaceStyleLighting::setDiffuseTransmissionColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcColourRgb* IfcSurfaceStyleLighting::DiffuseReflectionColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSurfaceStyleLighting::setDiffuseReflectionColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcColourRgb* IfcSurfaceStyleLighting::TransmissionColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceStyleLighting::setTransmissionColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcColourRgb* IfcSurfaceStyleLighting::ReflectanceColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcSurfaceStyleLighting::setReflectanceColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }


const IfcParse::entity& IfcSurfaceStyleLighting::declaration() const { return *IfcSurfaceStyleLighting_type; }
Type::Enum IfcSurfaceStyleLighting::Class() { return Type::IfcSurfaceStyleLighting; }
IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyleLighting)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcColourRgb* v1_DiffuseTransmissionColour, IfcColourRgb* v2_DiffuseReflectionColour, IfcColourRgb* v3_TransmissionColour, IfcColourRgb* v4_ReflectanceColour) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_DiffuseTransmissionColour)); e->setArgument(1,(v2_DiffuseReflectionColour)); e->setArgument(2,(v3_TransmissionColour)); e->setArgument(3,(v4_ReflectanceColour)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleRefraction
bool IfcSurfaceStyleRefraction::hasRefractionIndex() const { return !data_->getArgument(0)->isNull(); }
double IfcSurfaceStyleRefraction::RefractionIndex() const { return *data_->getArgument(0); }
void IfcSurfaceStyleRefraction::setRefractionIndex(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSurfaceStyleRefraction::hasDispersionFactor() const { return !data_->getArgument(1)->isNull(); }
double IfcSurfaceStyleRefraction::DispersionFactor() const { return *data_->getArgument(1); }
void IfcSurfaceStyleRefraction::setDispersionFactor(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSurfaceStyleRefraction::declaration() const { return *IfcSurfaceStyleRefraction_type; }
Type::Enum IfcSurfaceStyleRefraction::Class() { return Type::IfcSurfaceStyleRefraction; }
IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyleRefraction)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_RefractionIndex) { e->setArgument(0,(*v1_RefractionIndex)); } else { e->setArgument(0); } if (v2_DispersionFactor) { e->setArgument(1,(*v2_DispersionFactor)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleRendering
bool IfcSurfaceStyleRendering::hasDiffuseColour() const { return !data_->getArgument(2)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::DiffuseColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcSurfaceStyleRendering::setDiffuseColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSurfaceStyleRendering::hasTransmissionColour() const { return !data_->getArgument(3)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::TransmissionColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcSurfaceStyleRendering::setTransmissionColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcSurfaceStyleRendering::hasDiffuseTransmissionColour() const { return !data_->getArgument(4)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::DiffuseTransmissionColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcSurfaceStyleRendering::setDiffuseTransmissionColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcSurfaceStyleRendering::hasReflectionColour() const { return !data_->getArgument(5)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::ReflectionColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcSurfaceStyleRendering::setReflectionColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcSurfaceStyleRendering::hasSpecularColour() const { return !data_->getArgument(6)->isNull(); }
IfcColourOrFactor* IfcSurfaceStyleRendering::SpecularColour() const { return (IfcColourOrFactor*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcSurfaceStyleRendering::setSpecularColour(IfcColourOrFactor* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcSurfaceStyleRendering::hasSpecularHighlight() const { return !data_->getArgument(7)->isNull(); }
IfcSpecularHighlightSelect* IfcSurfaceStyleRendering::SpecularHighlight() const { return (IfcSpecularHighlightSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcSurfaceStyleRendering::setSpecularHighlight(IfcSpecularHighlightSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
IfcReflectanceMethodEnum::IfcReflectanceMethodEnum IfcSurfaceStyleRendering::ReflectanceMethod() const { return IfcReflectanceMethodEnum::FromString(*data_->getArgument(8)); }
void IfcSurfaceStyleRendering::setReflectanceMethod(IfcReflectanceMethodEnum::IfcReflectanceMethodEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcReflectanceMethodEnum::ToString(v)); }


const IfcParse::entity& IfcSurfaceStyleRendering::declaration() const { return *IfcSurfaceStyleRendering_type; }
Type::Enum IfcSurfaceStyleRendering::Class() { return Type::IfcSurfaceStyleRendering; }
IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcAbstractEntity* e) : IfcSurfaceStyleShading((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyleRendering)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, IfcColourOrFactor* v3_DiffuseColour, IfcColourOrFactor* v4_TransmissionColour, IfcColourOrFactor* v5_DiffuseTransmissionColour, IfcColourOrFactor* v6_ReflectionColour, IfcColourOrFactor* v7_SpecularColour, IfcSpecularHighlightSelect* v8_SpecularHighlight, IfcReflectanceMethodEnum::IfcReflectanceMethodEnum v9_ReflectanceMethod) : IfcSurfaceStyleShading((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SurfaceColour)); if (v2_Transparency) { e->setArgument(1,(*v2_Transparency)); } else { e->setArgument(1); } e->setArgument(2,(v3_DiffuseColour)); e->setArgument(3,(v4_TransmissionColour)); e->setArgument(4,(v5_DiffuseTransmissionColour)); e->setArgument(5,(v6_ReflectionColour)); e->setArgument(6,(v7_SpecularColour)); e->setArgument(7,(v8_SpecularHighlight)); e->setArgument(8,v9_ReflectanceMethod,IfcReflectanceMethodEnum::ToString(v9_ReflectanceMethod)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleShading
IfcColourRgb* IfcSurfaceStyleShading::SurfaceColour() const { return (IfcColourRgb*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSurfaceStyleShading::setSurfaceColour(IfcColourRgb* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSurfaceStyleShading::hasTransparency() const { return !data_->getArgument(1)->isNull(); }
double IfcSurfaceStyleShading::Transparency() const { return *data_->getArgument(1); }
void IfcSurfaceStyleShading::setTransparency(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSurfaceStyleShading::declaration() const { return *IfcSurfaceStyleShading_type; }
Type::Enum IfcSurfaceStyleShading::Class() { return Type::IfcSurfaceStyleShading; }
IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyleShading)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SurfaceColour)); if (v2_Transparency) { e->setArgument(1,(*v2_Transparency)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceStyleWithTextures
IfcTemplatedEntityList< IfcSurfaceTexture >::ptr IfcSurfaceStyleWithTextures::Textures() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcSurfaceTexture>(); }
void IfcSurfaceStyleWithTextures::setTextures(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcSurfaceStyleWithTextures::declaration() const { return *IfcSurfaceStyleWithTextures_type; }
Type::Enum IfcSurfaceStyleWithTextures::Class() { return Type::IfcSurfaceStyleWithTextures; }
IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceStyleWithTextures)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Textures) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Textures)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSurfaceTexture
bool IfcSurfaceTexture::RepeatS() const { return *data_->getArgument(0); }
void IfcSurfaceTexture::setRepeatS(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSurfaceTexture::RepeatT() const { return *data_->getArgument(1); }
void IfcSurfaceTexture::setRepeatT(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSurfaceTexture::hasMode() const { return !data_->getArgument(2)->isNull(); }
std::string IfcSurfaceTexture::Mode() const { return *data_->getArgument(2); }
void IfcSurfaceTexture::setMode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSurfaceTexture::hasTextureTransform() const { return !data_->getArgument(3)->isNull(); }
IfcCartesianTransformationOperator2D* IfcSurfaceTexture::TextureTransform() const { return (IfcCartesianTransformationOperator2D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcSurfaceTexture::setTextureTransform(IfcCartesianTransformationOperator2D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcSurfaceTexture::hasParameter() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcSurfaceTexture::Parameter() const { return *data_->getArgument(4); }
void IfcSurfaceTexture::setParameter(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }

IfcTextureCoordinate::list::ptr IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(Type::IfcTextureCoordinate, 0)->as<IfcTextureCoordinate>(); }
IfcSurfaceStyleWithTextures::list::ptr IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(Type::IfcSurfaceStyleWithTextures, 0)->as<IfcSurfaceStyleWithTextures>(); }

const IfcParse::entity& IfcSurfaceTexture::declaration() const { return *IfcSurfaceTexture_type; }
Type::Enum IfcSurfaceTexture::Class() { return Type::IfcSurfaceTexture; }
IfcSurfaceTexture::IfcSurfaceTexture(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSurfaceTexture)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSurfaceTexture::IfcSurfaceTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_RepeatS)); e->setArgument(1,(v2_RepeatT)); if (v3_Mode) { e->setArgument(2,(*v3_Mode)); } else { e->setArgument(2); } e->setArgument(3,(v4_TextureTransform)); if (v5_Parameter) { e->setArgument(4,(*v5_Parameter)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptAreaSolid
IfcProfileDef* IfcSweptAreaSolid::SweptArea() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSweptAreaSolid::setSweptArea(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSweptAreaSolid::hasPosition() const { return !data_->getArgument(1)->isNull(); }
IfcAxis2Placement3D* IfcSweptAreaSolid::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSweptAreaSolid::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSweptAreaSolid::declaration() const { return *IfcSweptAreaSolid_type; }
Type::Enum IfcSweptAreaSolid::Class() { return Type::IfcSweptAreaSolid; }
IfcSweptAreaSolid::IfcSweptAreaSolid(IfcAbstractEntity* e) : IfcSolidModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptAreaSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptAreaSolid::IfcSweptAreaSolid(IfcProfileDef* v1_SweptArea, IfcAxis2Placement3D* v2_Position) : IfcSolidModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptArea)); e->setArgument(1,(v2_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptDiskSolid
IfcCurve* IfcSweptDiskSolid::Directrix() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSweptDiskSolid::setDirectrix(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcSweptDiskSolid::Radius() const { return *data_->getArgument(1); }
void IfcSweptDiskSolid::setRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcSweptDiskSolid::hasInnerRadius() const { return !data_->getArgument(2)->isNull(); }
double IfcSweptDiskSolid::InnerRadius() const { return *data_->getArgument(2); }
void IfcSweptDiskSolid::setInnerRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcSweptDiskSolid::hasStartParam() const { return !data_->getArgument(3)->isNull(); }
double IfcSweptDiskSolid::StartParam() const { return *data_->getArgument(3); }
void IfcSweptDiskSolid::setStartParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcSweptDiskSolid::hasEndParam() const { return !data_->getArgument(4)->isNull(); }
double IfcSweptDiskSolid::EndParam() const { return *data_->getArgument(4); }
void IfcSweptDiskSolid::setEndParam(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcSweptDiskSolid::declaration() const { return *IfcSweptDiskSolid_type; }
Type::Enum IfcSweptDiskSolid::Class() { return Type::IfcSweptDiskSolid; }
IfcSweptDiskSolid::IfcSweptDiskSolid(IfcAbstractEntity* e) : IfcSolidModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptDiskSolid)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptDiskSolid::IfcSweptDiskSolid(IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam) : IfcSolidModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Directrix)); e->setArgument(1,(v2_Radius)); if (v3_InnerRadius) { e->setArgument(2,(*v3_InnerRadius)); } else { e->setArgument(2); } if (v4_StartParam) { e->setArgument(3,(*v4_StartParam)); } else { e->setArgument(3); } if (v5_EndParam) { e->setArgument(4,(*v5_EndParam)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptDiskSolidPolygonal
bool IfcSweptDiskSolidPolygonal::hasFilletRadius() const { return !data_->getArgument(5)->isNull(); }
double IfcSweptDiskSolidPolygonal::FilletRadius() const { return *data_->getArgument(5); }
void IfcSweptDiskSolidPolygonal::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcSweptDiskSolidPolygonal::declaration() const { return *IfcSweptDiskSolidPolygonal_type; }
Type::Enum IfcSweptDiskSolidPolygonal::Class() { return Type::IfcSweptDiskSolidPolygonal; }
IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(IfcAbstractEntity* e) : IfcSweptDiskSolid((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptDiskSolidPolygonal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, boost::optional< double > v6_FilletRadius) : IfcSweptDiskSolid((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Directrix)); e->setArgument(1,(v2_Radius)); if (v3_InnerRadius) { e->setArgument(2,(*v3_InnerRadius)); } else { e->setArgument(2); } if (v4_StartParam) { e->setArgument(3,(*v4_StartParam)); } else { e->setArgument(3); } if (v5_EndParam) { e->setArgument(4,(*v5_EndParam)); } else { e->setArgument(4); } if (v6_FilletRadius) { e->setArgument(5,(*v6_FilletRadius)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSweptSurface
IfcProfileDef* IfcSweptSurface::SweptCurve() const { return (IfcProfileDef*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcSweptSurface::setSweptCurve(IfcProfileDef* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcSweptSurface::hasPosition() const { return !data_->getArgument(1)->isNull(); }
IfcAxis2Placement3D* IfcSweptSurface::Position() const { return (IfcAxis2Placement3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcSweptSurface::setPosition(IfcAxis2Placement3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcSweptSurface::declaration() const { return *IfcSweptSurface_type; }
Type::Enum IfcSweptSurface::Class() { return Type::IfcSweptSurface; }
IfcSweptSurface::IfcSweptSurface(IfcAbstractEntity* e) : IfcSurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSweptSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSweptSurface::IfcSweptSurface(IfcProfileDef* v1_SweptCurve, IfcAxis2Placement3D* v2_Position) : IfcSurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_SweptCurve)); e->setArgument(1,(v2_Position)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSwitchingDevice
bool IfcSwitchingDevice::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum IfcSwitchingDevice::PredefinedType() const { return IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSwitchingDevice::setPredefinedType(IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSwitchingDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSwitchingDevice::declaration() const { return *IfcSwitchingDevice_type; }
Type::Enum IfcSwitchingDevice::Class() { return Type::IfcSwitchingDevice; }
IfcSwitchingDevice::IfcSwitchingDevice(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSwitchingDevice)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSwitchingDevice::IfcSwitchingDevice(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSwitchingDeviceTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSwitchingDeviceType
IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum IfcSwitchingDeviceType::PredefinedType() const { return IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSwitchingDeviceType::setPredefinedType(IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSwitchingDeviceTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSwitchingDeviceType::declaration() const { return *IfcSwitchingDeviceType_type; }
Type::Enum IfcSwitchingDeviceType::Class() { return Type::IfcSwitchingDeviceType; }
IfcSwitchingDeviceType::IfcSwitchingDeviceType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSwitchingDeviceType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSwitchingDeviceType::IfcSwitchingDeviceType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcSwitchingDeviceTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSystem

IfcRelServicesBuildings::list::ptr IfcSystem::ServicesBuildings() const { return data_->getInverse(Type::IfcRelServicesBuildings, 4)->as<IfcRelServicesBuildings>(); }

const IfcParse::entity& IfcSystem::declaration() const { return *IfcSystem_type; }
Type::Enum IfcSystem::Class() { return Type::IfcSystem; }
IfcSystem::IfcSystem(IfcAbstractEntity* e) : IfcGroup((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSystem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSystem::IfcSystem(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcGroup((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSystemFurnitureElement
bool IfcSystemFurnitureElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum IfcSystemFurnitureElement::PredefinedType() const { return IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcSystemFurnitureElement::setPredefinedType(IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcSystemFurnitureElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSystemFurnitureElement::declaration() const { return *IfcSystemFurnitureElement_type; }
Type::Enum IfcSystemFurnitureElement::Class() { return Type::IfcSystemFurnitureElement; }
IfcSystemFurnitureElement::IfcSystemFurnitureElement(IfcAbstractEntity* e) : IfcFurnishingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSystemFurnitureElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum > v9_PredefinedType) : IfcFurnishingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcSystemFurnitureElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcSystemFurnitureElementType
bool IfcSystemFurnitureElementType::hasPredefinedType() const { return !data_->getArgument(9)->isNull(); }
IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum IfcSystemFurnitureElementType::PredefinedType() const { return IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); }
void IfcSystemFurnitureElementType::setPredefinedType(IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcSystemFurnitureElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcSystemFurnitureElementType::declaration() const { return *IfcSystemFurnitureElementType_type; }
Type::Enum IfcSystemFurnitureElementType::Class() { return Type::IfcSystemFurnitureElementType; }
IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(IfcAbstractEntity* e) : IfcFurnishingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcSystemFurnitureElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum > v10_PredefinedType) : IfcFurnishingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } if (v10_PredefinedType) { e->setArgument(9,*v10_PredefinedType,IfcSystemFurnitureElementTypeEnum::ToString(*v10_PredefinedType)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTShapeProfileDef
double IfcTShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcTShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcTShapeProfileDef::FlangeWidth() const { return *data_->getArgument(4); }
void IfcTShapeProfileDef::setFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcTShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcTShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcTShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcTShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcTShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcTShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTShapeProfileDef::hasFlangeEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcTShapeProfileDef::FlangeEdgeRadius() const { return *data_->getArgument(8); }
void IfcTShapeProfileDef::setFlangeEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcTShapeProfileDef::hasWebEdgeRadius() const { return !data_->getArgument(9)->isNull(); }
double IfcTShapeProfileDef::WebEdgeRadius() const { return *data_->getArgument(9); }
void IfcTShapeProfileDef::setWebEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcTShapeProfileDef::hasWebSlope() const { return !data_->getArgument(10)->isNull(); }
double IfcTShapeProfileDef::WebSlope() const { return *data_->getArgument(10); }
void IfcTShapeProfileDef::setWebSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcTShapeProfileDef::hasFlangeSlope() const { return !data_->getArgument(11)->isNull(); }
double IfcTShapeProfileDef::FlangeSlope() const { return *data_->getArgument(11); }
void IfcTShapeProfileDef::setFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcTShapeProfileDef::declaration() const { return *IfcTShapeProfileDef_type; }
Type::Enum IfcTShapeProfileDef::Class() { return Type::IfcTShapeProfileDef; }
IfcTShapeProfileDef::IfcTShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTShapeProfileDef::IfcTShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_FlangeEdgeRadius, boost::optional< double > v10_WebEdgeRadius, boost::optional< double > v11_WebSlope, boost::optional< double > v12_FlangeSlope) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_FlangeWidth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_FlangeEdgeRadius) { e->setArgument(8,(*v9_FlangeEdgeRadius)); } else { e->setArgument(8); } if (v10_WebEdgeRadius) { e->setArgument(9,(*v10_WebEdgeRadius)); } else { e->setArgument(9); } if (v11_WebSlope) { e->setArgument(10,(*v11_WebSlope)); } else { e->setArgument(10); } if (v12_FlangeSlope) { e->setArgument(11,(*v12_FlangeSlope)); } else { e->setArgument(11); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTable
bool IfcTable::hasName() const { return !data_->getArgument(0)->isNull(); }
std::string IfcTable::Name() const { return *data_->getArgument(0); }
void IfcTable::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTable::hasRows() const { return !data_->getArgument(1)->isNull(); }
IfcTemplatedEntityList< IfcTableRow >::ptr IfcTable::Rows() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcTableRow>(); }
void IfcTable::setRows(IfcTemplatedEntityList< IfcTableRow >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
bool IfcTable::hasColumns() const { return !data_->getArgument(2)->isNull(); }
IfcTemplatedEntityList< IfcTableColumn >::ptr IfcTable::Columns() const { IfcEntityList::ptr es = *data_->getArgument(2); return es->as<IfcTableColumn>(); }
void IfcTable::setColumns(IfcTemplatedEntityList< IfcTableColumn >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v->generalize()); }


const IfcParse::entity& IfcTable::declaration() const { return *IfcTable_type; }
Type::Enum IfcTable::Class() { return Type::IfcTable; }
IfcTable::IfcTable(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTable)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::optional< IfcTemplatedEntityList< IfcTableRow >::ptr > v2_Rows, boost::optional< IfcTemplatedEntityList< IfcTableColumn >::ptr > v3_Columns) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_Rows) { e->setArgument(1,(*v2_Rows)->generalize()); } else { e->setArgument(1); } if (v3_Columns) { e->setArgument(2,(*v3_Columns)->generalize()); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTableColumn
bool IfcTableColumn::hasIdentifier() const { return !data_->getArgument(0)->isNull(); }
std::string IfcTableColumn::Identifier() const { return *data_->getArgument(0); }
void IfcTableColumn::setIdentifier(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTableColumn::hasName() const { return !data_->getArgument(1)->isNull(); }
std::string IfcTableColumn::Name() const { return *data_->getArgument(1); }
void IfcTableColumn::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTableColumn::hasDescription() const { return !data_->getArgument(2)->isNull(); }
std::string IfcTableColumn::Description() const { return *data_->getArgument(2); }
void IfcTableColumn::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTableColumn::hasUnit() const { return !data_->getArgument(3)->isNull(); }
IfcUnit* IfcTableColumn::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTableColumn::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTableColumn::hasReferencePath() const { return !data_->getArgument(4)->isNull(); }
IfcReference* IfcTableColumn::ReferencePath() const { return (IfcReference*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcTableColumn::setReferencePath(IfcReference* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcTableColumn::declaration() const { return *IfcTableColumn_type; }
Type::Enum IfcTableColumn::Class() { return Type::IfcTableColumn; }
IfcTableColumn::IfcTableColumn(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTableColumn)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, IfcUnit* v4_Unit, IfcReference* v5_ReferencePath) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Identifier) { e->setArgument(0,(*v1_Identifier)); } else { e->setArgument(0); } if (v2_Name) { e->setArgument(1,(*v2_Name)); } else { e->setArgument(1); } if (v3_Description) { e->setArgument(2,(*v3_Description)); } else { e->setArgument(2); } e->setArgument(3,(v4_Unit)); e->setArgument(4,(v5_ReferencePath)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTableRow
bool IfcTableRow::hasRowCells() const { return !data_->getArgument(0)->isNull(); }
IfcEntityList::ptr IfcTableRow::RowCells() const { return *data_->getArgument(0); }
void IfcTableRow::setRowCells(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTableRow::hasIsHeading() const { return !data_->getArgument(1)->isNull(); }
bool IfcTableRow::IsHeading() const { return *data_->getArgument(1); }
void IfcTableRow::setIsHeading(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTableRow::declaration() const { return *IfcTableRow_type; }
Type::Enum IfcTableRow::Class() { return Type::IfcTableRow; }
IfcTableRow::IfcTableRow(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTableRow)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTableRow::IfcTableRow(boost::optional< IfcEntityList::ptr > v1_RowCells, boost::optional< bool > v2_IsHeading) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_RowCells) { e->setArgument(0,(*v1_RowCells)); } else { e->setArgument(0); } if (v2_IsHeading) { e->setArgument(1,(*v2_IsHeading)); } else { e->setArgument(1); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTank
bool IfcTank::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcTankTypeEnum::IfcTankTypeEnum IfcTank::PredefinedType() const { return IfcTankTypeEnum::FromString(*data_->getArgument(8)); }
void IfcTank::setPredefinedType(IfcTankTypeEnum::IfcTankTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcTankTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTank::declaration() const { return *IfcTank_type; }
Type::Enum IfcTank::Class() { return Type::IfcTank; }
IfcTank::IfcTank(IfcAbstractEntity* e) : IfcFlowStorageDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTank)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTank::IfcTank(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcTankTypeEnum::IfcTankTypeEnum > v9_PredefinedType) : IfcFlowStorageDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcTankTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTankType
IfcTankTypeEnum::IfcTankTypeEnum IfcTankType::PredefinedType() const { return IfcTankTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTankType::setPredefinedType(IfcTankTypeEnum::IfcTankTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTankTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTankType::declaration() const { return *IfcTankType_type; }
Type::Enum IfcTankType::Class() { return Type::IfcTankType; }
IfcTankType::IfcTankType(IfcAbstractEntity* e) : IfcFlowStorageDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTankType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTankType::IfcTankType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTankTypeEnum::IfcTankTypeEnum v10_PredefinedType) : IfcFlowStorageDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTankTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTask
bool IfcTask::hasStatus() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTask::Status() const { return *data_->getArgument(7); }
void IfcTask::setStatus(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTask::hasWorkMethod() const { return !data_->getArgument(8)->isNull(); }
std::string IfcTask::WorkMethod() const { return *data_->getArgument(8); }
void IfcTask::setWorkMethod(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcTask::IsMilestone() const { return *data_->getArgument(9); }
void IfcTask::setIsMilestone(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcTask::hasPriority() const { return !data_->getArgument(10)->isNull(); }
int IfcTask::Priority() const { return *data_->getArgument(10); }
void IfcTask::setPriority(int v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcTask::hasTaskTime() const { return !data_->getArgument(11)->isNull(); }
IfcTaskTime* IfcTask::TaskTime() const { return (IfcTaskTime*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(11))); }
void IfcTask::setTaskTime(IfcTaskTime* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcTask::hasPredefinedType() const { return !data_->getArgument(12)->isNull(); }
IfcTaskTypeEnum::IfcTaskTypeEnum IfcTask::PredefinedType() const { return IfcTaskTypeEnum::FromString(*data_->getArgument(12)); }
void IfcTask::setPredefinedType(IfcTaskTypeEnum::IfcTaskTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v,IfcTaskTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTask::declaration() const { return *IfcTask_type; }
Type::Enum IfcTask::Class() { return Type::IfcTask; }
IfcTask::IfcTask(IfcAbstractEntity* e) : IfcProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTask)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTask::IfcTask(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< std::string > v7_LongDescription, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_WorkMethod, bool v10_IsMilestone, boost::optional< int > v11_Priority, IfcTaskTime* v12_TaskTime, boost::optional< IfcTaskTypeEnum::IfcTaskTypeEnum > v13_PredefinedType) : IfcProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_LongDescription) { e->setArgument(6,(*v7_LongDescription)); } else { e->setArgument(6); } if (v8_Status) { e->setArgument(7,(*v8_Status)); } else { e->setArgument(7); } if (v9_WorkMethod) { e->setArgument(8,(*v9_WorkMethod)); } else { e->setArgument(8); } e->setArgument(9,(v10_IsMilestone)); if (v11_Priority) { e->setArgument(10,(*v11_Priority)); } else { e->setArgument(10); } e->setArgument(11,(v12_TaskTime)); if (v13_PredefinedType) { e->setArgument(12,*v13_PredefinedType,IfcTaskTypeEnum::ToString(*v13_PredefinedType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTaskTime
bool IfcTaskTime::hasDurationType() const { return !data_->getArgument(3)->isNull(); }
IfcTaskDurationEnum::IfcTaskDurationEnum IfcTaskTime::DurationType() const { return IfcTaskDurationEnum::FromString(*data_->getArgument(3)); }
void IfcTaskTime::setDurationType(IfcTaskDurationEnum::IfcTaskDurationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v,IfcTaskDurationEnum::ToString(v)); }
bool IfcTaskTime::hasScheduleDuration() const { return !data_->getArgument(4)->isNull(); }
std::string IfcTaskTime::ScheduleDuration() const { return *data_->getArgument(4); }
void IfcTaskTime::setScheduleDuration(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTaskTime::hasScheduleStart() const { return !data_->getArgument(5)->isNull(); }
std::string IfcTaskTime::ScheduleStart() const { return *data_->getArgument(5); }
void IfcTaskTime::setScheduleStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcTaskTime::hasScheduleFinish() const { return !data_->getArgument(6)->isNull(); }
std::string IfcTaskTime::ScheduleFinish() const { return *data_->getArgument(6); }
void IfcTaskTime::setScheduleFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTaskTime::hasEarlyStart() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTaskTime::EarlyStart() const { return *data_->getArgument(7); }
void IfcTaskTime::setEarlyStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTaskTime::hasEarlyFinish() const { return !data_->getArgument(8)->isNull(); }
std::string IfcTaskTime::EarlyFinish() const { return *data_->getArgument(8); }
void IfcTaskTime::setEarlyFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcTaskTime::hasLateStart() const { return !data_->getArgument(9)->isNull(); }
std::string IfcTaskTime::LateStart() const { return *data_->getArgument(9); }
void IfcTaskTime::setLateStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcTaskTime::hasLateFinish() const { return !data_->getArgument(10)->isNull(); }
std::string IfcTaskTime::LateFinish() const { return *data_->getArgument(10); }
void IfcTaskTime::setLateFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcTaskTime::hasFreeFloat() const { return !data_->getArgument(11)->isNull(); }
std::string IfcTaskTime::FreeFloat() const { return *data_->getArgument(11); }
void IfcTaskTime::setFreeFloat(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcTaskTime::hasTotalFloat() const { return !data_->getArgument(12)->isNull(); }
std::string IfcTaskTime::TotalFloat() const { return *data_->getArgument(12); }
void IfcTaskTime::setTotalFloat(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcTaskTime::hasIsCritical() const { return !data_->getArgument(13)->isNull(); }
bool IfcTaskTime::IsCritical() const { return *data_->getArgument(13); }
void IfcTaskTime::setIsCritical(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcTaskTime::hasStatusTime() const { return !data_->getArgument(14)->isNull(); }
std::string IfcTaskTime::StatusTime() const { return *data_->getArgument(14); }
void IfcTaskTime::setStatusTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcTaskTime::hasActualDuration() const { return !data_->getArgument(15)->isNull(); }
std::string IfcTaskTime::ActualDuration() const { return *data_->getArgument(15); }
void IfcTaskTime::setActualDuration(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcTaskTime::hasActualStart() const { return !data_->getArgument(16)->isNull(); }
std::string IfcTaskTime::ActualStart() const { return *data_->getArgument(16); }
void IfcTaskTime::setActualStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }
bool IfcTaskTime::hasActualFinish() const { return !data_->getArgument(17)->isNull(); }
std::string IfcTaskTime::ActualFinish() const { return *data_->getArgument(17); }
void IfcTaskTime::setActualFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(17,v); }
bool IfcTaskTime::hasRemainingTime() const { return !data_->getArgument(18)->isNull(); }
std::string IfcTaskTime::RemainingTime() const { return *data_->getArgument(18); }
void IfcTaskTime::setRemainingTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(18,v); }
bool IfcTaskTime::hasCompletion() const { return !data_->getArgument(19)->isNull(); }
double IfcTaskTime::Completion() const { return *data_->getArgument(19); }
void IfcTaskTime::setCompletion(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(19,v); }


const IfcParse::entity& IfcTaskTime::declaration() const { return *IfcTaskTime_type; }
Type::Enum IfcTaskTime::Class() { return Type::IfcTaskTime; }
IfcTaskTime::IfcTaskTime(IfcAbstractEntity* e) : IfcSchedulingTime((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTaskTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTaskTime::IfcTaskTime(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< IfcTaskDurationEnum::IfcTaskDurationEnum > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion) : IfcSchedulingTime((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } if (v4_DurationType) { e->setArgument(3,*v4_DurationType,IfcTaskDurationEnum::ToString(*v4_DurationType)); } else { e->setArgument(3); } if (v5_ScheduleDuration) { e->setArgument(4,(*v5_ScheduleDuration)); } else { e->setArgument(4); } if (v6_ScheduleStart) { e->setArgument(5,(*v6_ScheduleStart)); } else { e->setArgument(5); } if (v7_ScheduleFinish) { e->setArgument(6,(*v7_ScheduleFinish)); } else { e->setArgument(6); } if (v8_EarlyStart) { e->setArgument(7,(*v8_EarlyStart)); } else { e->setArgument(7); } if (v9_EarlyFinish) { e->setArgument(8,(*v9_EarlyFinish)); } else { e->setArgument(8); } if (v10_LateStart) { e->setArgument(9,(*v10_LateStart)); } else { e->setArgument(9); } if (v11_LateFinish) { e->setArgument(10,(*v11_LateFinish)); } else { e->setArgument(10); } if (v12_FreeFloat) { e->setArgument(11,(*v12_FreeFloat)); } else { e->setArgument(11); } if (v13_TotalFloat) { e->setArgument(12,(*v13_TotalFloat)); } else { e->setArgument(12); } if (v14_IsCritical) { e->setArgument(13,(*v14_IsCritical)); } else { e->setArgument(13); } if (v15_StatusTime) { e->setArgument(14,(*v15_StatusTime)); } else { e->setArgument(14); } if (v16_ActualDuration) { e->setArgument(15,(*v16_ActualDuration)); } else { e->setArgument(15); } if (v17_ActualStart) { e->setArgument(16,(*v17_ActualStart)); } else { e->setArgument(16); } if (v18_ActualFinish) { e->setArgument(17,(*v18_ActualFinish)); } else { e->setArgument(17); } if (v19_RemainingTime) { e->setArgument(18,(*v19_RemainingTime)); } else { e->setArgument(18); } if (v20_Completion) { e->setArgument(19,(*v20_Completion)); } else { e->setArgument(19); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTaskTimeRecurring
IfcRecurrencePattern* IfcTaskTimeRecurring::Recurrence() const { return (IfcRecurrencePattern*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(20))); }
void IfcTaskTimeRecurring::setRecurrence(IfcRecurrencePattern* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(20,v); }


const IfcParse::entity& IfcTaskTimeRecurring::declaration() const { return *IfcTaskTimeRecurring_type; }
Type::Enum IfcTaskTimeRecurring::Class() { return Type::IfcTaskTimeRecurring; }
IfcTaskTimeRecurring::IfcTaskTimeRecurring(IfcAbstractEntity* e) : IfcTaskTime((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTaskTimeRecurring)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< IfcTaskDurationEnum::IfcTaskDurationEnum > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion, IfcRecurrencePattern* v21_Recurrence) : IfcTaskTime((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } if (v4_DurationType) { e->setArgument(3,*v4_DurationType,IfcTaskDurationEnum::ToString(*v4_DurationType)); } else { e->setArgument(3); } if (v5_ScheduleDuration) { e->setArgument(4,(*v5_ScheduleDuration)); } else { e->setArgument(4); } if (v6_ScheduleStart) { e->setArgument(5,(*v6_ScheduleStart)); } else { e->setArgument(5); } if (v7_ScheduleFinish) { e->setArgument(6,(*v7_ScheduleFinish)); } else { e->setArgument(6); } if (v8_EarlyStart) { e->setArgument(7,(*v8_EarlyStart)); } else { e->setArgument(7); } if (v9_EarlyFinish) { e->setArgument(8,(*v9_EarlyFinish)); } else { e->setArgument(8); } if (v10_LateStart) { e->setArgument(9,(*v10_LateStart)); } else { e->setArgument(9); } if (v11_LateFinish) { e->setArgument(10,(*v11_LateFinish)); } else { e->setArgument(10); } if (v12_FreeFloat) { e->setArgument(11,(*v12_FreeFloat)); } else { e->setArgument(11); } if (v13_TotalFloat) { e->setArgument(12,(*v13_TotalFloat)); } else { e->setArgument(12); } if (v14_IsCritical) { e->setArgument(13,(*v14_IsCritical)); } else { e->setArgument(13); } if (v15_StatusTime) { e->setArgument(14,(*v15_StatusTime)); } else { e->setArgument(14); } if (v16_ActualDuration) { e->setArgument(15,(*v16_ActualDuration)); } else { e->setArgument(15); } if (v17_ActualStart) { e->setArgument(16,(*v17_ActualStart)); } else { e->setArgument(16); } if (v18_ActualFinish) { e->setArgument(17,(*v18_ActualFinish)); } else { e->setArgument(17); } if (v19_RemainingTime) { e->setArgument(18,(*v19_RemainingTime)); } else { e->setArgument(18); } if (v20_Completion) { e->setArgument(19,(*v20_Completion)); } else { e->setArgument(19); } e->setArgument(20,(v21_Recurrence)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTaskType
IfcTaskTypeEnum::IfcTaskTypeEnum IfcTaskType::PredefinedType() const { return IfcTaskTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTaskType::setPredefinedType(IfcTaskTypeEnum::IfcTaskTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTaskTypeEnum::ToString(v)); }
bool IfcTaskType::hasWorkMethod() const { return !data_->getArgument(10)->isNull(); }
std::string IfcTaskType::WorkMethod() const { return *data_->getArgument(10); }
void IfcTaskType::setWorkMethod(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }


const IfcParse::entity& IfcTaskType::declaration() const { return *IfcTaskType_type; }
Type::Enum IfcTaskType::Class() { return Type::IfcTaskType; }
IfcTaskType::IfcTaskType(IfcAbstractEntity* e) : IfcTypeProcess((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTaskType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTaskType::IfcTaskType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, IfcTaskTypeEnum::IfcTaskTypeEnum v10_PredefinedType, boost::optional< std::string > v11_WorkMethod) : IfcTypeProcess((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ProcessType) { e->setArgument(8,(*v9_ProcessType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTaskTypeEnum::ToString(v10_PredefinedType)); if (v11_WorkMethod) { e->setArgument(10,(*v11_WorkMethod)); } else { e->setArgument(10); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTelecomAddress
bool IfcTelecomAddress::hasTelephoneNumbers() const { return !data_->getArgument(3)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::TelephoneNumbers() const { return *data_->getArgument(3); }
void IfcTelecomAddress::setTelephoneNumbers(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTelecomAddress::hasFacsimileNumbers() const { return !data_->getArgument(4)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::FacsimileNumbers() const { return *data_->getArgument(4); }
void IfcTelecomAddress::setFacsimileNumbers(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTelecomAddress::hasPagerNumber() const { return !data_->getArgument(5)->isNull(); }
std::string IfcTelecomAddress::PagerNumber() const { return *data_->getArgument(5); }
void IfcTelecomAddress::setPagerNumber(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcTelecomAddress::hasElectronicMailAddresses() const { return !data_->getArgument(6)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::ElectronicMailAddresses() const { return *data_->getArgument(6); }
void IfcTelecomAddress::setElectronicMailAddresses(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTelecomAddress::hasWWWHomePageURL() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTelecomAddress::WWWHomePageURL() const { return *data_->getArgument(7); }
void IfcTelecomAddress::setWWWHomePageURL(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTelecomAddress::hasMessagingIDs() const { return !data_->getArgument(8)->isNull(); }
std::vector< std::string > /*[1:?]*/ IfcTelecomAddress::MessagingIDs() const { return *data_->getArgument(8); }
void IfcTelecomAddress::setMessagingIDs(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcTelecomAddress::declaration() const { return *IfcTelecomAddress_type; }
Type::Enum IfcTelecomAddress::Class() { return Type::IfcTelecomAddress; }
IfcTelecomAddress::IfcTelecomAddress(IfcAbstractEntity* e) : IfcAddress((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTelecomAddress)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTelecomAddress::IfcTelecomAddress(boost::optional< IfcAddressTypeEnum::IfcAddressTypeEnum > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL, boost::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs) : IfcAddress((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Purpose) { e->setArgument(0,*v1_Purpose,IfcAddressTypeEnum::ToString(*v1_Purpose)); } else { e->setArgument(0); } if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } if (v3_UserDefinedPurpose) { e->setArgument(2,(*v3_UserDefinedPurpose)); } else { e->setArgument(2); } if (v4_TelephoneNumbers) { e->setArgument(3,(*v4_TelephoneNumbers)); } else { e->setArgument(3); } if (v5_FacsimileNumbers) { e->setArgument(4,(*v5_FacsimileNumbers)); } else { e->setArgument(4); } if (v6_PagerNumber) { e->setArgument(5,(*v6_PagerNumber)); } else { e->setArgument(5); } if (v7_ElectronicMailAddresses) { e->setArgument(6,(*v7_ElectronicMailAddresses)); } else { e->setArgument(6); } if (v8_WWWHomePageURL) { e->setArgument(7,(*v8_WWWHomePageURL)); } else { e->setArgument(7); } if (v9_MessagingIDs) { e->setArgument(8,(*v9_MessagingIDs)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTendon
bool IfcTendon::hasPredefinedType() const { return !data_->getArgument(9)->isNull(); }
IfcTendonTypeEnum::IfcTendonTypeEnum IfcTendon::PredefinedType() const { return IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTendon::setPredefinedType(IfcTendonTypeEnum::IfcTendonTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTendonTypeEnum::ToString(v)); }
bool IfcTendon::hasNominalDiameter() const { return !data_->getArgument(10)->isNull(); }
double IfcTendon::NominalDiameter() const { return *data_->getArgument(10); }
void IfcTendon::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcTendon::hasCrossSectionArea() const { return !data_->getArgument(11)->isNull(); }
double IfcTendon::CrossSectionArea() const { return *data_->getArgument(11); }
void IfcTendon::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcTendon::hasTensionForce() const { return !data_->getArgument(12)->isNull(); }
double IfcTendon::TensionForce() const { return *data_->getArgument(12); }
void IfcTendon::setTensionForce(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcTendon::hasPreStress() const { return !data_->getArgument(13)->isNull(); }
double IfcTendon::PreStress() const { return *data_->getArgument(13); }
void IfcTendon::setPreStress(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcTendon::hasFrictionCoefficient() const { return !data_->getArgument(14)->isNull(); }
double IfcTendon::FrictionCoefficient() const { return *data_->getArgument(14); }
void IfcTendon::setFrictionCoefficient(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcTendon::hasAnchorageSlip() const { return !data_->getArgument(15)->isNull(); }
double IfcTendon::AnchorageSlip() const { return *data_->getArgument(15); }
void IfcTendon::setAnchorageSlip(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }
bool IfcTendon::hasMinCurvatureRadius() const { return !data_->getArgument(16)->isNull(); }
double IfcTendon::MinCurvatureRadius() const { return *data_->getArgument(16); }
void IfcTendon::setMinCurvatureRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(16,v); }


const IfcParse::entity& IfcTendon::declaration() const { return *IfcTendon_type; }
Type::Enum IfcTendon::Class() { return Type::IfcTendon; }
IfcTendon::IfcTendon(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTendon)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTendon::IfcTendon(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< IfcTendonTypeEnum::IfcTendonTypeEnum > v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_TensionForce, boost::optional< double > v14_PreStress, boost::optional< double > v15_FrictionCoefficient, boost::optional< double > v16_AnchorageSlip, boost::optional< double > v17_MinCurvatureRadius) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } if (v10_PredefinedType) { e->setArgument(9,*v10_PredefinedType,IfcTendonTypeEnum::ToString(*v10_PredefinedType)); } else { e->setArgument(9); } if (v11_NominalDiameter) { e->setArgument(10,(*v11_NominalDiameter)); } else { e->setArgument(10); } if (v12_CrossSectionArea) { e->setArgument(11,(*v12_CrossSectionArea)); } else { e->setArgument(11); } if (v13_TensionForce) { e->setArgument(12,(*v13_TensionForce)); } else { e->setArgument(12); } if (v14_PreStress) { e->setArgument(13,(*v14_PreStress)); } else { e->setArgument(13); } if (v15_FrictionCoefficient) { e->setArgument(14,(*v15_FrictionCoefficient)); } else { e->setArgument(14); } if (v16_AnchorageSlip) { e->setArgument(15,(*v16_AnchorageSlip)); } else { e->setArgument(15); } if (v17_MinCurvatureRadius) { e->setArgument(16,(*v17_MinCurvatureRadius)); } else { e->setArgument(16); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTendonAnchor
bool IfcTendonAnchor::hasPredefinedType() const { return !data_->getArgument(9)->isNull(); }
IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum IfcTendonAnchor::PredefinedType() const { return IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTendonAnchor::setPredefinedType(IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTendonAnchorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTendonAnchor::declaration() const { return *IfcTendonAnchor_type; }
Type::Enum IfcTendonAnchor::Class() { return Type::IfcTendonAnchor; }
IfcTendonAnchor::IfcTendonAnchor(IfcAbstractEntity* e) : IfcReinforcingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTendonAnchor)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTendonAnchor::IfcTendonAnchor(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum > v10_PredefinedType) : IfcReinforcingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_SteelGrade) { e->setArgument(8,(*v9_SteelGrade)); } else { e->setArgument(8); } if (v10_PredefinedType) { e->setArgument(9,*v10_PredefinedType,IfcTendonAnchorTypeEnum::ToString(*v10_PredefinedType)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTendonAnchorType
IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum IfcTendonAnchorType::PredefinedType() const { return IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTendonAnchorType::setPredefinedType(IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTendonAnchorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTendonAnchorType::declaration() const { return *IfcTendonAnchorType_type; }
Type::Enum IfcTendonAnchorType::Class() { return Type::IfcTendonAnchorType; }
IfcTendonAnchorType::IfcTendonAnchorType(IfcAbstractEntity* e) : IfcReinforcingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTendonAnchorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum v10_PredefinedType) : IfcReinforcingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTendonAnchorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTendonType
IfcTendonTypeEnum::IfcTendonTypeEnum IfcTendonType::PredefinedType() const { return IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTendonType::setPredefinedType(IfcTendonTypeEnum::IfcTendonTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTendonTypeEnum::ToString(v)); }
bool IfcTendonType::hasNominalDiameter() const { return !data_->getArgument(10)->isNull(); }
double IfcTendonType::NominalDiameter() const { return *data_->getArgument(10); }
void IfcTendonType::setNominalDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcTendonType::hasCrossSectionArea() const { return !data_->getArgument(11)->isNull(); }
double IfcTendonType::CrossSectionArea() const { return *data_->getArgument(11); }
void IfcTendonType::setCrossSectionArea(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcTendonType::hasSheathDiameter() const { return !data_->getArgument(12)->isNull(); }
double IfcTendonType::SheathDiameter() const { return *data_->getArgument(12); }
void IfcTendonType::setSheathDiameter(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcTendonType::declaration() const { return *IfcTendonType_type; }
Type::Enum IfcTendonType::Class() { return Type::IfcTendonType; }
IfcTendonType::IfcTendonType(IfcAbstractEntity* e) : IfcReinforcingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTendonType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTendonType::IfcTendonType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTendonTypeEnum::IfcTendonTypeEnum v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_SheathDiameter) : IfcReinforcingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTendonTypeEnum::ToString(v10_PredefinedType)); if (v11_NominalDiameter) { e->setArgument(10,(*v11_NominalDiameter)); } else { e->setArgument(10); } if (v12_CrossSectionArea) { e->setArgument(11,(*v12_CrossSectionArea)); } else { e->setArgument(11); } if (v13_SheathDiameter) { e->setArgument(12,(*v13_SheathDiameter)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTessellatedFaceSet
IfcCartesianPointList3D* IfcTessellatedFaceSet::Coordinates() const { return (IfcCartesianPointList3D*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTessellatedFaceSet::setCoordinates(IfcCartesianPointList3D* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }

IfcIndexedColourMap::list::ptr IfcTessellatedFaceSet::HasColours() const { return data_->getInverse(Type::IfcIndexedColourMap, 0)->as<IfcIndexedColourMap>(); }
IfcIndexedTextureMap::list::ptr IfcTessellatedFaceSet::HasTextures() const { return data_->getInverse(Type::IfcIndexedTextureMap, 1)->as<IfcIndexedTextureMap>(); }

const IfcParse::entity& IfcTessellatedFaceSet::declaration() const { return *IfcTessellatedFaceSet_type; }
Type::Enum IfcTessellatedFaceSet::Class() { return Type::IfcTessellatedFaceSet; }
IfcTessellatedFaceSet::IfcTessellatedFaceSet(IfcAbstractEntity* e) : IfcTessellatedItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTessellatedFaceSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTessellatedFaceSet::IfcTessellatedFaceSet(IfcCartesianPointList3D* v1_Coordinates) : IfcTessellatedItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Coordinates)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTessellatedItem


const IfcParse::entity& IfcTessellatedItem::declaration() const { return *IfcTessellatedItem_type; }
Type::Enum IfcTessellatedItem::Class() { return Type::IfcTessellatedItem; }
IfcTessellatedItem::IfcTessellatedItem(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTessellatedItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTessellatedItem::IfcTessellatedItem() : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextLiteral
std::string IfcTextLiteral::Literal() const { return *data_->getArgument(0); }
void IfcTextLiteral::setLiteral(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcAxis2Placement* IfcTextLiteral::Placement() const { return (IfcAxis2Placement*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTextLiteral::setPlacement(IfcAxis2Placement* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcTextPath::IfcTextPath IfcTextLiteral::Path() const { return IfcTextPath::FromString(*data_->getArgument(2)); }
void IfcTextLiteral::setPath(IfcTextPath::IfcTextPath v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v,IfcTextPath::ToString(v)); }


const IfcParse::entity& IfcTextLiteral::declaration() const { return *IfcTextLiteral_type; }
Type::Enum IfcTextLiteral::Class() { return Type::IfcTextLiteral; }
IfcTextLiteral::IfcTextLiteral(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextLiteral)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextLiteral::IfcTextLiteral(std::string v1_Literal, IfcAxis2Placement* v2_Placement, IfcTextPath::IfcTextPath v3_Path) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Literal)); e->setArgument(1,(v2_Placement)); e->setArgument(2,v3_Path,IfcTextPath::ToString(v3_Path)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextLiteralWithExtent
IfcPlanarExtent* IfcTextLiteralWithExtent::Extent() const { return (IfcPlanarExtent*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTextLiteralWithExtent::setExtent(IfcPlanarExtent* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
std::string IfcTextLiteralWithExtent::BoxAlignment() const { return *data_->getArgument(4); }
void IfcTextLiteralWithExtent::setBoxAlignment(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcTextLiteralWithExtent::declaration() const { return *IfcTextLiteralWithExtent_type; }
Type::Enum IfcTextLiteralWithExtent::Class() { return Type::IfcTextLiteralWithExtent; }
IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(IfcAbstractEntity* e) : IfcTextLiteral((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextLiteralWithExtent)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(std::string v1_Literal, IfcAxis2Placement* v2_Placement, IfcTextPath::IfcTextPath v3_Path, IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment) : IfcTextLiteral((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Literal)); e->setArgument(1,(v2_Placement)); e->setArgument(2,v3_Path,IfcTextPath::ToString(v3_Path)); e->setArgument(3,(v4_Extent)); e->setArgument(4,(v5_BoxAlignment)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyle
bool IfcTextStyle::hasTextCharacterAppearance() const { return !data_->getArgument(1)->isNull(); }
IfcTextStyleForDefinedFont* IfcTextStyle::TextCharacterAppearance() const { return (IfcTextStyleForDefinedFont*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTextStyle::setTextCharacterAppearance(IfcTextStyleForDefinedFont* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyle::hasTextStyle() const { return !data_->getArgument(2)->isNull(); }
IfcTextStyleTextModel* IfcTextStyle::TextStyle() const { return (IfcTextStyleTextModel*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcTextStyle::setTextStyle(IfcTextStyleTextModel* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
IfcTextFontSelect* IfcTextStyle::TextFontStyle() const { return (IfcTextFontSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTextStyle::setTextFontStyle(IfcTextFontSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTextStyle::hasModelOrDraughting() const { return !data_->getArgument(4)->isNull(); }
bool IfcTextStyle::ModelOrDraughting() const { return *data_->getArgument(4); }
void IfcTextStyle::setModelOrDraughting(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcTextStyle::declaration() const { return *IfcTextStyle_type; }
Type::Enum IfcTextStyle::Class() { return Type::IfcTextStyle; }
IfcTextStyle::IfcTextStyle(IfcAbstractEntity* e) : IfcPresentationStyle((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, IfcTextStyleForDefinedFont* v2_TextCharacterAppearance, IfcTextStyleTextModel* v3_TextStyle, IfcTextFontSelect* v4_TextFontStyle, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } e->setArgument(1,(v2_TextCharacterAppearance)); e->setArgument(2,(v3_TextStyle)); e->setArgument(3,(v4_TextFontStyle)); if (v5_ModelOrDraughting) { e->setArgument(4,(*v5_ModelOrDraughting)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleFontModel
std::vector< std::string > /*[1:?]*/ IfcTextStyleFontModel::FontFamily() const { return *data_->getArgument(1); }
void IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyleFontModel::hasFontStyle() const { return !data_->getArgument(2)->isNull(); }
std::string IfcTextStyleFontModel::FontStyle() const { return *data_->getArgument(2); }
void IfcTextStyleFontModel::setFontStyle(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTextStyleFontModel::hasFontVariant() const { return !data_->getArgument(3)->isNull(); }
std::string IfcTextStyleFontModel::FontVariant() const { return *data_->getArgument(3); }
void IfcTextStyleFontModel::setFontVariant(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTextStyleFontModel::hasFontWeight() const { return !data_->getArgument(4)->isNull(); }
std::string IfcTextStyleFontModel::FontWeight() const { return *data_->getArgument(4); }
void IfcTextStyleFontModel::setFontWeight(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
IfcSizeSelect* IfcTextStyleFontModel::FontSize() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(5))); }
void IfcTextStyleFontModel::setFontSize(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcTextStyleFontModel::declaration() const { return *IfcTextStyleFontModel_type; }
Type::Enum IfcTextStyleFontModel::Class() { return Type::IfcTextStyleFontModel; }
IfcTextStyleFontModel::IfcTextStyleFontModel(IfcAbstractEntity* e) : IfcPreDefinedTextFont((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextStyleFontModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleFontModel::IfcTextStyleFontModel(std::string v1_Name, std::vector< std::string > /*[1:?]*/ v2_FontFamily, boost::optional< std::string > v3_FontStyle, boost::optional< std::string > v4_FontVariant, boost::optional< std::string > v5_FontWeight, IfcSizeSelect* v6_FontSize) : IfcPreDefinedTextFont((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); e->setArgument(1,(v2_FontFamily)); if (v3_FontStyle) { e->setArgument(2,(*v3_FontStyle)); } else { e->setArgument(2); } if (v4_FontVariant) { e->setArgument(3,(*v4_FontVariant)); } else { e->setArgument(3); } if (v5_FontWeight) { e->setArgument(4,(*v5_FontWeight)); } else { e->setArgument(4); } e->setArgument(5,(v6_FontSize)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleForDefinedFont
IfcColour* IfcTextStyleForDefinedFont::Colour() const { return (IfcColour*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTextStyleForDefinedFont::setColour(IfcColour* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTextStyleForDefinedFont::hasBackgroundColour() const { return !data_->getArgument(1)->isNull(); }
IfcColour* IfcTextStyleForDefinedFont::BackgroundColour() const { return (IfcColour*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(1))); }
void IfcTextStyleForDefinedFont::setBackgroundColour(IfcColour* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTextStyleForDefinedFont::declaration() const { return *IfcTextStyleForDefinedFont_type; }
Type::Enum IfcTextStyleForDefinedFont::Class() { return Type::IfcTextStyleForDefinedFont; }
IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextStyleForDefinedFont)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcColour* v1_Colour, IfcColour* v2_BackgroundColour) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Colour)); e->setArgument(1,(v2_BackgroundColour)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextStyleTextModel
bool IfcTextStyleTextModel::hasTextIndent() const { return !data_->getArgument(0)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::TextIndent() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTextStyleTextModel::setTextIndent(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTextStyleTextModel::hasTextAlign() const { return !data_->getArgument(1)->isNull(); }
std::string IfcTextStyleTextModel::TextAlign() const { return *data_->getArgument(1); }
void IfcTextStyleTextModel::setTextAlign(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextStyleTextModel::hasTextDecoration() const { return !data_->getArgument(2)->isNull(); }
std::string IfcTextStyleTextModel::TextDecoration() const { return *data_->getArgument(2); }
void IfcTextStyleTextModel::setTextDecoration(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTextStyleTextModel::hasLetterSpacing() const { return !data_->getArgument(3)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::LetterSpacing() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcTextStyleTextModel::setLetterSpacing(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTextStyleTextModel::hasWordSpacing() const { return !data_->getArgument(4)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::WordSpacing() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(4))); }
void IfcTextStyleTextModel::setWordSpacing(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTextStyleTextModel::hasTextTransform() const { return !data_->getArgument(5)->isNull(); }
std::string IfcTextStyleTextModel::TextTransform() const { return *data_->getArgument(5); }
void IfcTextStyleTextModel::setTextTransform(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcTextStyleTextModel::hasLineHeight() const { return !data_->getArgument(6)->isNull(); }
IfcSizeSelect* IfcTextStyleTextModel::LineHeight() const { return (IfcSizeSelect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(6))); }
void IfcTextStyleTextModel::setLineHeight(IfcSizeSelect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcTextStyleTextModel::declaration() const { return *IfcTextStyleTextModel_type; }
Type::Enum IfcTextStyleTextModel::Class() { return Type::IfcTextStyleTextModel; }
IfcTextStyleTextModel::IfcTextStyleTextModel(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextStyleTextModel)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextStyleTextModel::IfcTextStyleTextModel(IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, IfcSizeSelect* v4_LetterSpacing, IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, IfcSizeSelect* v7_LineHeight) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TextIndent)); if (v2_TextAlign) { e->setArgument(1,(*v2_TextAlign)); } else { e->setArgument(1); } if (v3_TextDecoration) { e->setArgument(2,(*v3_TextDecoration)); } else { e->setArgument(2); } e->setArgument(3,(v4_LetterSpacing)); e->setArgument(4,(v5_WordSpacing)); if (v6_TextTransform) { e->setArgument(5,(*v6_TextTransform)); } else { e->setArgument(5); } e->setArgument(6,(v7_LineHeight)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureCoordinate
IfcTemplatedEntityList< IfcSurfaceTexture >::ptr IfcTextureCoordinate::Maps() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcSurfaceTexture>(); }
void IfcTextureCoordinate::setMaps(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }


const IfcParse::entity& IfcTextureCoordinate::declaration() const { return *IfcTextureCoordinate_type; }
Type::Enum IfcTextureCoordinate::Class() { return Type::IfcTextureCoordinate; }
IfcTextureCoordinate::IfcTextureCoordinate(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureCoordinate)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureCoordinate::IfcTextureCoordinate(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Maps) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Maps)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureCoordinateGenerator
std::string IfcTextureCoordinateGenerator::Mode() const { return *data_->getArgument(1); }
void IfcTextureCoordinateGenerator::setMode(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTextureCoordinateGenerator::hasParameter() const { return !data_->getArgument(2)->isNull(); }
std::vector< double > /*[1:?]*/ IfcTextureCoordinateGenerator::Parameter() const { return *data_->getArgument(2); }
void IfcTextureCoordinateGenerator::setParameter(std::vector< double > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcTextureCoordinateGenerator::declaration() const { return *IfcTextureCoordinateGenerator_type; }
Type::Enum IfcTextureCoordinateGenerator::Class() { return Type::IfcTextureCoordinateGenerator; }
IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(IfcAbstractEntity* e) : IfcTextureCoordinate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureCoordinateGenerator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Maps, std::string v2_Mode, boost::optional< std::vector< double > /*[1:?]*/ > v3_Parameter) : IfcTextureCoordinate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Maps)->generalize()); e->setArgument(1,(v2_Mode)); if (v3_Parameter) { e->setArgument(2,(*v3_Parameter)); } else { e->setArgument(2); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureMap
IfcTemplatedEntityList< IfcTextureVertex >::ptr IfcTextureMap::Vertices() const { IfcEntityList::ptr es = *data_->getArgument(1); return es->as<IfcTextureVertex>(); }
void IfcTextureMap::setVertices(IfcTemplatedEntityList< IfcTextureVertex >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v->generalize()); }
IfcFace* IfcTextureMap::MappedTo() const { return (IfcFace*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(2))); }
void IfcTextureMap::setMappedTo(IfcFace* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcTextureMap::declaration() const { return *IfcTextureMap_type; }
Type::Enum IfcTextureMap::Class() { return Type::IfcTextureMap; }
IfcTextureMap::IfcTextureMap(IfcAbstractEntity* e) : IfcTextureCoordinate((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureMap)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureMap::IfcTextureMap(IfcTemplatedEntityList< IfcSurfaceTexture >::ptr v1_Maps, IfcTemplatedEntityList< IfcTextureVertex >::ptr v2_Vertices, IfcFace* v3_MappedTo) : IfcTextureCoordinate((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Maps)->generalize()); e->setArgument(1,(v2_Vertices)->generalize()); e->setArgument(2,(v3_MappedTo)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureVertex
std::vector< double > /*[2:2]*/ IfcTextureVertex::Coordinates() const { return *data_->getArgument(0); }
void IfcTextureVertex::setCoordinates(std::vector< double > /*[2:2]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcTextureVertex::declaration() const { return *IfcTextureVertex_type; }
Type::Enum IfcTextureVertex::Class() { return Type::IfcTextureVertex; }
IfcTextureVertex::IfcTextureVertex(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureVertex)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Coordinates) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Coordinates)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTextureVertexList
std::vector< std::vector< double > > IfcTextureVertexList::TexCoordsList() const { return *data_->getArgument(0); }
void IfcTextureVertexList::setTexCoordsList(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcTextureVertexList::declaration() const { return *IfcTextureVertexList_type; }
Type::Enum IfcTextureVertexList::Class() { return Type::IfcTextureVertexList; }
IfcTextureVertexList::IfcTextureVertexList(IfcAbstractEntity* e) : IfcPresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTextureVertexList)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double > > v1_TexCoordsList) : IfcPresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_TexCoordsList)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimePeriod
std::string IfcTimePeriod::StartTime() const { return *data_->getArgument(0); }
void IfcTimePeriod::setStartTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
std::string IfcTimePeriod::EndTime() const { return *data_->getArgument(1); }
void IfcTimePeriod::setEndTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcTimePeriod::declaration() const { return *IfcTimePeriod_type; }
Type::Enum IfcTimePeriod::Class() { return Type::IfcTimePeriod; }
IfcTimePeriod::IfcTimePeriod(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTimePeriod)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_EndTime) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_StartTime)); e->setArgument(1,(v2_EndTime)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimeSeries
std::string IfcTimeSeries::Name() const { return *data_->getArgument(0); }
void IfcTimeSeries::setName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
bool IfcTimeSeries::hasDescription() const { return !data_->getArgument(1)->isNull(); }
std::string IfcTimeSeries::Description() const { return *data_->getArgument(1); }
void IfcTimeSeries::setDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
std::string IfcTimeSeries::StartTime() const { return *data_->getArgument(2); }
void IfcTimeSeries::setStartTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::string IfcTimeSeries::EndTime() const { return *data_->getArgument(3); }
void IfcTimeSeries::setEndTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum IfcTimeSeries::TimeSeriesDataType() const { return IfcTimeSeriesDataTypeEnum::FromString(*data_->getArgument(4)); }
void IfcTimeSeries::setTimeSeriesDataType(IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcTimeSeriesDataTypeEnum::ToString(v)); }
IfcDataOriginEnum::IfcDataOriginEnum IfcTimeSeries::DataOrigin() const { return IfcDataOriginEnum::FromString(*data_->getArgument(5)); }
void IfcTimeSeries::setDataOrigin(IfcDataOriginEnum::IfcDataOriginEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcDataOriginEnum::ToString(v)); }
bool IfcTimeSeries::hasUserDefinedDataOrigin() const { return !data_->getArgument(6)->isNull(); }
std::string IfcTimeSeries::UserDefinedDataOrigin() const { return *data_->getArgument(6); }
void IfcTimeSeries::setUserDefinedDataOrigin(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTimeSeries::hasUnit() const { return !data_->getArgument(7)->isNull(); }
IfcUnit* IfcTimeSeries::Unit() const { return (IfcUnit*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(7))); }
void IfcTimeSeries::setUnit(IfcUnit* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcExternalReferenceRelationship::list::ptr IfcTimeSeries::HasExternalReference() const { return data_->getInverse(Type::IfcExternalReferenceRelationship, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& IfcTimeSeries::declaration() const { return *IfcTimeSeries_type; }
Type::Enum IfcTimeSeries::Class() { return Type::IfcTimeSeries; }
IfcTimeSeries::IfcTimeSeries(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTimeSeries)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimeSeries::IfcTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum v5_TimeSeriesDataType, IfcDataOriginEnum::IfcDataOriginEnum v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, IfcUnit* v8_Unit) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Name)); if (v2_Description) { e->setArgument(1,(*v2_Description)); } else { e->setArgument(1); } e->setArgument(2,(v3_StartTime)); e->setArgument(3,(v4_EndTime)); e->setArgument(4,v5_TimeSeriesDataType,IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType)); e->setArgument(5,v6_DataOrigin,IfcDataOriginEnum::ToString(v6_DataOrigin)); if (v7_UserDefinedDataOrigin) { e->setArgument(6,(*v7_UserDefinedDataOrigin)); } else { e->setArgument(6); } e->setArgument(7,(v8_Unit)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTimeSeriesValue
IfcEntityList::ptr IfcTimeSeriesValue::ListValues() const { return *data_->getArgument(0); }
void IfcTimeSeriesValue::setListValues(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcTimeSeriesValue::declaration() const { return *IfcTimeSeriesValue_type; }
Type::Enum IfcTimeSeriesValue::Class() { return Type::IfcTimeSeriesValue; }
IfcTimeSeriesValue::IfcTimeSeriesValue(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcTimeSeriesValue)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTimeSeriesValue::IfcTimeSeriesValue(IfcEntityList::ptr v1_ListValues) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ListValues)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTopologicalRepresentationItem


const IfcParse::entity& IfcTopologicalRepresentationItem::declaration() const { return *IfcTopologicalRepresentationItem_type; }
Type::Enum IfcTopologicalRepresentationItem::Class() { return Type::IfcTopologicalRepresentationItem; }
IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem(IfcAbstractEntity* e) : IfcRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTopologicalRepresentationItem)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem() : IfcRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTopologyRepresentation


const IfcParse::entity& IfcTopologyRepresentation::declaration() const { return *IfcTopologyRepresentation_type; }
Type::Enum IfcTopologyRepresentation::Class() { return Type::IfcTopologyRepresentation; }
IfcTopologyRepresentation::IfcTopologyRepresentation(IfcAbstractEntity* e) : IfcShapeModel((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTopologyRepresentation)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTopologyRepresentation::IfcTopologyRepresentation(IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, IfcTemplatedEntityList< IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_ContextOfItems)); if (v2_RepresentationIdentifier) { e->setArgument(1,(*v2_RepresentationIdentifier)); } else { e->setArgument(1); } if (v3_RepresentationType) { e->setArgument(2,(*v3_RepresentationType)); } else { e->setArgument(2); } e->setArgument(3,(v4_Items)->generalize()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcToroidalSurface
double IfcToroidalSurface::MajorRadius() const { return *data_->getArgument(1); }
void IfcToroidalSurface::setMajorRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
double IfcToroidalSurface::MinorRadius() const { return *data_->getArgument(2); }
void IfcToroidalSurface::setMinorRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }


const IfcParse::entity& IfcToroidalSurface::declaration() const { return *IfcToroidalSurface_type; }
Type::Enum IfcToroidalSurface::Class() { return Type::IfcToroidalSurface; }
IfcToroidalSurface::IfcToroidalSurface(IfcAbstractEntity* e) : IfcElementarySurface((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcToroidalSurface)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcToroidalSurface::IfcToroidalSurface(IfcAxis2Placement3D* v1_Position, double v2_MajorRadius, double v3_MinorRadius) : IfcElementarySurface((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Position)); e->setArgument(1,(v2_MajorRadius)); e->setArgument(2,(v3_MinorRadius)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransformer
bool IfcTransformer::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcTransformerTypeEnum::IfcTransformerTypeEnum IfcTransformer::PredefinedType() const { return IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); }
void IfcTransformer::setPredefinedType(IfcTransformerTypeEnum::IfcTransformerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcTransformerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTransformer::declaration() const { return *IfcTransformer_type; }
Type::Enum IfcTransformer::Class() { return Type::IfcTransformer; }
IfcTransformer::IfcTransformer(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransformer)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransformer::IfcTransformer(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcTransformerTypeEnum::IfcTransformerTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcTransformerTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransformerType
IfcTransformerTypeEnum::IfcTransformerTypeEnum IfcTransformerType::PredefinedType() const { return IfcTransformerTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTransformerType::setPredefinedType(IfcTransformerTypeEnum::IfcTransformerTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTransformerTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTransformerType::declaration() const { return *IfcTransformerType_type; }
Type::Enum IfcTransformerType::Class() { return Type::IfcTransformerType; }
IfcTransformerType::IfcTransformerType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransformerType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTransformerTypeEnum::IfcTransformerTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTransformerTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransportElement
bool IfcTransportElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcTransportElementTypeEnum::IfcTransportElementTypeEnum IfcTransportElement::PredefinedType() const { return IfcTransportElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcTransportElement::setPredefinedType(IfcTransportElementTypeEnum::IfcTransportElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcTransportElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTransportElement::declaration() const { return *IfcTransportElement_type; }
Type::Enum IfcTransportElement::Class() { return Type::IfcTransportElement; }
IfcTransportElement::IfcTransportElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransportElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransportElement::IfcTransportElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcTransportElementTypeEnum::IfcTransportElementTypeEnum > v9_PredefinedType) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcTransportElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTransportElementType
IfcTransportElementTypeEnum::IfcTransportElementTypeEnum IfcTransportElementType::PredefinedType() const { return IfcTransportElementTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTransportElementType::setPredefinedType(IfcTransportElementTypeEnum::IfcTransportElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTransportElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTransportElementType::declaration() const { return *IfcTransportElementType_type; }
Type::Enum IfcTransportElementType::Class() { return Type::IfcTransportElementType; }
IfcTransportElementType::IfcTransportElementType(IfcAbstractEntity* e) : IfcElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTransportElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTransportElementType::IfcTransportElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTransportElementTypeEnum::IfcTransportElementTypeEnum v10_PredefinedType) : IfcElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTransportElementTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTrapeziumProfileDef
double IfcTrapeziumProfileDef::BottomXDim() const { return *data_->getArgument(3); }
void IfcTrapeziumProfileDef::setBottomXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcTrapeziumProfileDef::TopXDim() const { return *data_->getArgument(4); }
void IfcTrapeziumProfileDef::setTopXDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcTrapeziumProfileDef::YDim() const { return *data_->getArgument(5); }
void IfcTrapeziumProfileDef::setYDim(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcTrapeziumProfileDef::TopXOffset() const { return *data_->getArgument(6); }
void IfcTrapeziumProfileDef::setTopXOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }


const IfcParse::entity& IfcTrapeziumProfileDef::declaration() const { return *IfcTrapeziumProfileDef_type; }
Type::Enum IfcTrapeziumProfileDef::Class() { return Type::IfcTrapeziumProfileDef; }
IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTrapeziumProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_BottomXDim)); e->setArgument(4,(v5_TopXDim)); e->setArgument(5,(v6_YDim)); e->setArgument(6,(v7_TopXOffset)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTriangulatedFaceSet
bool IfcTriangulatedFaceSet::hasNormals() const { return !data_->getArgument(1)->isNull(); }
std::vector< std::vector< double > > IfcTriangulatedFaceSet::Normals() const { return *data_->getArgument(1); }
void IfcTriangulatedFaceSet::setNormals(std::vector< std::vector< double > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
bool IfcTriangulatedFaceSet::hasClosed() const { return !data_->getArgument(2)->isNull(); }
bool IfcTriangulatedFaceSet::Closed() const { return *data_->getArgument(2); }
void IfcTriangulatedFaceSet::setClosed(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
std::vector< std::vector< int > > IfcTriangulatedFaceSet::CoordIndex() const { return *data_->getArgument(3); }
void IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcTriangulatedFaceSet::hasPnIndex() const { return !data_->getArgument(4)->isNull(); }
std::vector< int > /*[1:?]*/ IfcTriangulatedFaceSet::PnIndex() const { return *data_->getArgument(4); }
void IfcTriangulatedFaceSet::setPnIndex(std::vector< int > /*[1:?]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }


const IfcParse::entity& IfcTriangulatedFaceSet::declaration() const { return *IfcTriangulatedFaceSet_type; }
Type::Enum IfcTriangulatedFaceSet::Class() { return Type::IfcTriangulatedFaceSet; }
IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(IfcAbstractEntity* e) : IfcTessellatedFaceSet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTriangulatedFaceSet)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(IfcCartesianPointList3D* v1_Coordinates, boost::optional< std::vector< std::vector< double > > > v2_Normals, boost::optional< bool > v3_Closed, std::vector< std::vector< int > > v4_CoordIndex, boost::optional< std::vector< int > /*[1:?]*/ > v5_PnIndex) : IfcTessellatedFaceSet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Coordinates)); if (v2_Normals) { e->setArgument(1,(*v2_Normals)); } else { e->setArgument(1); } if (v3_Closed) { e->setArgument(2,(*v3_Closed)); } else { e->setArgument(2); } e->setArgument(3,(v4_CoordIndex)); if (v5_PnIndex) { e->setArgument(4,(*v5_PnIndex)); } else { e->setArgument(4); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTrimmedCurve
IfcCurve* IfcTrimmedCurve::BasisCurve() const { return (IfcCurve*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcTrimmedCurve::setBasisCurve(IfcCurve* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
IfcEntityList::ptr IfcTrimmedCurve::Trim1() const { return *data_->getArgument(1); }
void IfcTrimmedCurve::setTrim1(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }
IfcEntityList::ptr IfcTrimmedCurve::Trim2() const { return *data_->getArgument(2); }
void IfcTrimmedCurve::setTrim2(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(2,v); }
bool IfcTrimmedCurve::SenseAgreement() const { return *data_->getArgument(3); }
void IfcTrimmedCurve::setSenseAgreement(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
IfcTrimmingPreference::IfcTrimmingPreference IfcTrimmedCurve::MasterRepresentation() const { return IfcTrimmingPreference::FromString(*data_->getArgument(4)); }
void IfcTrimmedCurve::setMasterRepresentation(IfcTrimmingPreference::IfcTrimmingPreference v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcTrimmingPreference::ToString(v)); }


const IfcParse::entity& IfcTrimmedCurve::declaration() const { return *IfcTrimmedCurve_type; }
Type::Enum IfcTrimmedCurve::Class() { return Type::IfcTrimmedCurve; }
IfcTrimmedCurve::IfcTrimmedCurve(IfcAbstractEntity* e) : IfcBoundedCurve((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTrimmedCurve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTrimmedCurve::IfcTrimmedCurve(IfcCurve* v1_BasisCurve, IfcEntityList::ptr v2_Trim1, IfcEntityList::ptr v3_Trim2, bool v4_SenseAgreement, IfcTrimmingPreference::IfcTrimmingPreference v5_MasterRepresentation) : IfcBoundedCurve((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_BasisCurve)); e->setArgument(1,(v2_Trim1)); e->setArgument(2,(v3_Trim2)); e->setArgument(3,(v4_SenseAgreement)); e->setArgument(4,v5_MasterRepresentation,IfcTrimmingPreference::ToString(v5_MasterRepresentation)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTubeBundle
bool IfcTubeBundle::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum IfcTubeBundle::PredefinedType() const { return IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); }
void IfcTubeBundle::setPredefinedType(IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcTubeBundleTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTubeBundle::declaration() const { return *IfcTubeBundle_type; }
Type::Enum IfcTubeBundle::Class() { return Type::IfcTubeBundle; }
IfcTubeBundle::IfcTubeBundle(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTubeBundle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTubeBundle::IfcTubeBundle(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcTubeBundleTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTubeBundleType
IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum IfcTubeBundleType::PredefinedType() const { return IfcTubeBundleTypeEnum::FromString(*data_->getArgument(9)); }
void IfcTubeBundleType::setPredefinedType(IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcTubeBundleTypeEnum::ToString(v)); }


const IfcParse::entity& IfcTubeBundleType::declaration() const { return *IfcTubeBundleType_type; }
Type::Enum IfcTubeBundleType::Class() { return Type::IfcTubeBundleType; }
IfcTubeBundleType::IfcTubeBundleType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTubeBundleType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcTubeBundleTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTypeObject
bool IfcTypeObject::hasApplicableOccurrence() const { return !data_->getArgument(4)->isNull(); }
std::string IfcTypeObject::ApplicableOccurrence() const { return *data_->getArgument(4); }
void IfcTypeObject::setApplicableOccurrence(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcTypeObject::hasHasPropertySets() const { return !data_->getArgument(5)->isNull(); }
IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr IfcTypeObject::HasPropertySets() const { IfcEntityList::ptr es = *data_->getArgument(5); return es->as<IfcPropertySetDefinition>(); }
void IfcTypeObject::setHasPropertySets(IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v->generalize()); }

IfcRelDefinesByType::list::ptr IfcTypeObject::Types() const { return data_->getInverse(Type::IfcRelDefinesByType, 5)->as<IfcRelDefinesByType>(); }

const IfcParse::entity& IfcTypeObject::declaration() const { return *IfcTypeObject_type; }
Type::Enum IfcTypeObject::Class() { return Type::IfcTypeObject; }
IfcTypeObject::IfcTypeObject(IfcAbstractEntity* e) : IfcObjectDefinition((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTypeObject)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets) : IfcObjectDefinition((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTypeProcess
bool IfcTypeProcess::hasIdentification() const { return !data_->getArgument(6)->isNull(); }
std::string IfcTypeProcess::Identification() const { return *data_->getArgument(6); }
void IfcTypeProcess::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTypeProcess::hasLongDescription() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTypeProcess::LongDescription() const { return *data_->getArgument(7); }
void IfcTypeProcess::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTypeProcess::hasProcessType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcTypeProcess::ProcessType() const { return *data_->getArgument(8); }
void IfcTypeProcess::setProcessType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }

IfcRelAssignsToProcess::list::ptr IfcTypeProcess::OperatesOn() const { return data_->getInverse(Type::IfcRelAssignsToProcess, 6)->as<IfcRelAssignsToProcess>(); }

const IfcParse::entity& IfcTypeProcess::declaration() const { return *IfcTypeProcess_type; }
Type::Enum IfcTypeProcess::Class() { return Type::IfcTypeProcess; }
IfcTypeProcess::IfcTypeProcess(IfcAbstractEntity* e) : IfcTypeObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTypeProcess)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType) : IfcTypeObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ProcessType) { e->setArgument(8,(*v9_ProcessType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTypeProduct
bool IfcTypeProduct::hasRepresentationMaps() const { return !data_->getArgument(6)->isNull(); }
IfcTemplatedEntityList< IfcRepresentationMap >::ptr IfcTypeProduct::RepresentationMaps() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcRepresentationMap>(); }
void IfcTypeProduct::setRepresentationMaps(IfcTemplatedEntityList< IfcRepresentationMap >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }
bool IfcTypeProduct::hasTag() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTypeProduct::Tag() const { return *data_->getArgument(7); }
void IfcTypeProduct::setTag(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }

IfcRelAssignsToProduct::list::ptr IfcTypeProduct::ReferencedBy() const { return data_->getInverse(Type::IfcRelAssignsToProduct, 6)->as<IfcRelAssignsToProduct>(); }

const IfcParse::entity& IfcTypeProduct::declaration() const { return *IfcTypeProduct_type; }
Type::Enum IfcTypeProduct::Class() { return Type::IfcTypeProduct; }
IfcTypeProduct::IfcTypeProduct(IfcAbstractEntity* e) : IfcTypeObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTypeProduct)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag) : IfcTypeObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcTypeResource
bool IfcTypeResource::hasIdentification() const { return !data_->getArgument(6)->isNull(); }
std::string IfcTypeResource::Identification() const { return *data_->getArgument(6); }
void IfcTypeResource::setIdentification(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcTypeResource::hasLongDescription() const { return !data_->getArgument(7)->isNull(); }
std::string IfcTypeResource::LongDescription() const { return *data_->getArgument(7); }
void IfcTypeResource::setLongDescription(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcTypeResource::hasResourceType() const { return !data_->getArgument(8)->isNull(); }
std::string IfcTypeResource::ResourceType() const { return *data_->getArgument(8); }
void IfcTypeResource::setResourceType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }

IfcRelAssignsToResource::list::ptr IfcTypeResource::ResourceOf() const { return data_->getInverse(Type::IfcRelAssignsToResource, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& IfcTypeResource::declaration() const { return *IfcTypeResource_type; }
Type::Enum IfcTypeResource::Class() { return Type::IfcTypeResource; }
IfcTypeResource::IfcTypeResource(IfcAbstractEntity* e) : IfcTypeObject((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcTypeResource)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcTypeResource::IfcTypeResource(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType) : IfcTypeObject((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_Identification) { e->setArgument(6,(*v7_Identification)); } else { e->setArgument(6); } if (v8_LongDescription) { e->setArgument(7,(*v8_LongDescription)); } else { e->setArgument(7); } if (v9_ResourceType) { e->setArgument(8,(*v9_ResourceType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUShapeProfileDef
double IfcUShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcUShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcUShapeProfileDef::FlangeWidth() const { return *data_->getArgument(4); }
void IfcUShapeProfileDef::setFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcUShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcUShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcUShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcUShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcUShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcUShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcUShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcUShapeProfileDef::hasEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcUShapeProfileDef::EdgeRadius() const { return *data_->getArgument(8); }
void IfcUShapeProfileDef::setEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcUShapeProfileDef::hasFlangeSlope() const { return !data_->getArgument(9)->isNull(); }
double IfcUShapeProfileDef::FlangeSlope() const { return *data_->getArgument(9); }
void IfcUShapeProfileDef::setFlangeSlope(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }


const IfcParse::entity& IfcUShapeProfileDef::declaration() const { return *IfcUShapeProfileDef_type; }
Type::Enum IfcUShapeProfileDef::Class() { return Type::IfcUShapeProfileDef; }
IfcUShapeProfileDef::IfcUShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUShapeProfileDef::IfcUShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius, boost::optional< double > v10_FlangeSlope) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_FlangeWidth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_EdgeRadius) { e->setArgument(8,(*v9_EdgeRadius)); } else { e->setArgument(8); } if (v10_FlangeSlope) { e->setArgument(9,(*v10_FlangeSlope)); } else { e->setArgument(9); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitAssignment
IfcEntityList::ptr IfcUnitAssignment::Units() const { return *data_->getArgument(0); }
void IfcUnitAssignment::setUnits(IfcEntityList::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcUnitAssignment::declaration() const { return *IfcUnitAssignment_type; }
Type::Enum IfcUnitAssignment::Class() { return Type::IfcUnitAssignment; }
IfcUnitAssignment::IfcUnitAssignment(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcUnitAssignment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitAssignment::IfcUnitAssignment(IfcEntityList::ptr v1_Units) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Units)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitaryControlElement
bool IfcUnitaryControlElement::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum IfcUnitaryControlElement::PredefinedType() const { return IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); }
void IfcUnitaryControlElement::setPredefinedType(IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcUnitaryControlElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcUnitaryControlElement::declaration() const { return *IfcUnitaryControlElement_type; }
Type::Enum IfcUnitaryControlElement::Class() { return Type::IfcUnitaryControlElement; }
IfcUnitaryControlElement::IfcUnitaryControlElement(IfcAbstractEntity* e) : IfcDistributionControlElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUnitaryControlElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitaryControlElement::IfcUnitaryControlElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum > v9_PredefinedType) : IfcDistributionControlElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcUnitaryControlElementTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitaryControlElementType
IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum IfcUnitaryControlElementType::PredefinedType() const { return IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(9)); }
void IfcUnitaryControlElementType::setPredefinedType(IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcUnitaryControlElementTypeEnum::ToString(v)); }


const IfcParse::entity& IfcUnitaryControlElementType::declaration() const { return *IfcUnitaryControlElementType_type; }
Type::Enum IfcUnitaryControlElementType::Class() { return Type::IfcUnitaryControlElementType; }
IfcUnitaryControlElementType::IfcUnitaryControlElementType(IfcAbstractEntity* e) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUnitaryControlElementType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum v10_PredefinedType) : IfcDistributionControlElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcUnitaryControlElementTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitaryEquipment
bool IfcUnitaryEquipment::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum IfcUnitaryEquipment::PredefinedType() const { return IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); }
void IfcUnitaryEquipment::setPredefinedType(IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcUnitaryEquipmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcUnitaryEquipment::declaration() const { return *IfcUnitaryEquipment_type; }
Type::Enum IfcUnitaryEquipment::Class() { return Type::IfcUnitaryEquipment; }
IfcUnitaryEquipment::IfcUnitaryEquipment(IfcAbstractEntity* e) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUnitaryEquipment)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitaryEquipment::IfcUnitaryEquipment(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum > v9_PredefinedType) : IfcEnergyConversionDevice((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcUnitaryEquipmentTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcUnitaryEquipmentType
IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum IfcUnitaryEquipmentType::PredefinedType() const { return IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(9)); }
void IfcUnitaryEquipmentType::setPredefinedType(IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcUnitaryEquipmentTypeEnum::ToString(v)); }


const IfcParse::entity& IfcUnitaryEquipmentType::declaration() const { return *IfcUnitaryEquipmentType_type; }
Type::Enum IfcUnitaryEquipmentType::Class() { return Type::IfcUnitaryEquipmentType; }
IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(IfcAbstractEntity* e) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcUnitaryEquipmentType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcUnitaryEquipmentTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcValve
bool IfcValve::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcValveTypeEnum::IfcValveTypeEnum IfcValve::PredefinedType() const { return IfcValveTypeEnum::FromString(*data_->getArgument(8)); }
void IfcValve::setPredefinedType(IfcValveTypeEnum::IfcValveTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcValveTypeEnum::ToString(v)); }


const IfcParse::entity& IfcValve::declaration() const { return *IfcValve_type; }
Type::Enum IfcValve::Class() { return Type::IfcValve; }
IfcValve::IfcValve(IfcAbstractEntity* e) : IfcFlowController((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcValve)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcValve::IfcValve(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcValveTypeEnum::IfcValveTypeEnum > v9_PredefinedType) : IfcFlowController((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcValveTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcValveType
IfcValveTypeEnum::IfcValveTypeEnum IfcValveType::PredefinedType() const { return IfcValveTypeEnum::FromString(*data_->getArgument(9)); }
void IfcValveType::setPredefinedType(IfcValveTypeEnum::IfcValveTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcValveTypeEnum::ToString(v)); }


const IfcParse::entity& IfcValveType::declaration() const { return *IfcValveType_type; }
Type::Enum IfcValveType::Class() { return Type::IfcValveType; }
IfcValveType::IfcValveType(IfcAbstractEntity* e) : IfcFlowControllerType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcValveType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcValveType::IfcValveType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcValveTypeEnum::IfcValveTypeEnum v10_PredefinedType) : IfcFlowControllerType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcValveTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVector
IfcDirection* IfcVector::Orientation() const { return (IfcDirection*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcVector::setOrientation(IfcDirection* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }
double IfcVector::Magnitude() const { return *data_->getArgument(1); }
void IfcVector::setMagnitude(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcVector::declaration() const { return *IfcVector_type; }
Type::Enum IfcVector::Class() { return Type::IfcVector; }
IfcVector::IfcVector(IfcAbstractEntity* e) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVector)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVector::IfcVector(IfcDirection* v1_Orientation, double v2_Magnitude) : IfcGeometricRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_Orientation)); e->setArgument(1,(v2_Magnitude)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertex


const IfcParse::entity& IfcVertex::declaration() const { return *IfcVertex_type; }
Type::Enum IfcVertex::Class() { return Type::IfcVertex; }
IfcVertex::IfcVertex(IfcAbstractEntity* e) : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVertex)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertex::IfcVertex() : IfcTopologicalRepresentationItem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertexLoop
IfcVertex* IfcVertexLoop::LoopVertex() const { return (IfcVertex*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcVertexLoop::setLoopVertex(IfcVertex* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcVertexLoop::declaration() const { return *IfcVertexLoop_type; }
Type::Enum IfcVertexLoop::Class() { return Type::IfcVertexLoop; }
IfcVertexLoop::IfcVertexLoop(IfcAbstractEntity* e) : IfcLoop((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVertexLoop)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertexLoop::IfcVertexLoop(IfcVertex* v1_LoopVertex) : IfcLoop((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_LoopVertex)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVertexPoint
IfcPoint* IfcVertexPoint::VertexGeometry() const { return (IfcPoint*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(0))); }
void IfcVertexPoint::setVertexGeometry(IfcPoint* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v); }


const IfcParse::entity& IfcVertexPoint::declaration() const { return *IfcVertexPoint_type; }
Type::Enum IfcVertexPoint::Class() { return Type::IfcVertexPoint; }
IfcVertexPoint::IfcVertexPoint(IfcAbstractEntity* e) : IfcVertex((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVertexPoint)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVertexPoint::IfcVertexPoint(IfcPoint* v1_VertexGeometry) : IfcVertex((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_VertexGeometry)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVibrationIsolator
bool IfcVibrationIsolator::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum IfcVibrationIsolator::PredefinedType() const { return IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); }
void IfcVibrationIsolator::setPredefinedType(IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcVibrationIsolatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcVibrationIsolator::declaration() const { return *IfcVibrationIsolator_type; }
Type::Enum IfcVibrationIsolator::Class() { return Type::IfcVibrationIsolator; }
IfcVibrationIsolator::IfcVibrationIsolator(IfcAbstractEntity* e) : IfcElementComponent((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVibrationIsolator)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVibrationIsolator::IfcVibrationIsolator(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum > v9_PredefinedType) : IfcElementComponent((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcVibrationIsolatorTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVibrationIsolatorType
IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum IfcVibrationIsolatorType::PredefinedType() const { return IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(9)); }
void IfcVibrationIsolatorType::setPredefinedType(IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcVibrationIsolatorTypeEnum::ToString(v)); }


const IfcParse::entity& IfcVibrationIsolatorType::declaration() const { return *IfcVibrationIsolatorType_type; }
Type::Enum IfcVibrationIsolatorType::Class() { return Type::IfcVibrationIsolatorType; }
IfcVibrationIsolatorType::IfcVibrationIsolatorType(IfcAbstractEntity* e) : IfcElementComponentType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVibrationIsolatorType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVibrationIsolatorType::IfcVibrationIsolatorType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum v10_PredefinedType) : IfcElementComponentType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcVibrationIsolatorTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVirtualElement


const IfcParse::entity& IfcVirtualElement::declaration() const { return *IfcVirtualElement_type; }
Type::Enum IfcVirtualElement::Class() { return Type::IfcVirtualElement; }
IfcVirtualElement::IfcVirtualElement(IfcAbstractEntity* e) : IfcElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVirtualElement)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVirtualElement::IfcVirtualElement(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVirtualGridIntersection
IfcTemplatedEntityList< IfcGridAxis >::ptr IfcVirtualGridIntersection::IntersectingAxes() const { IfcEntityList::ptr es = *data_->getArgument(0); return es->as<IfcGridAxis>(); }
void IfcVirtualGridIntersection::setIntersectingAxes(IfcTemplatedEntityList< IfcGridAxis >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(0,v->generalize()); }
std::vector< double > /*[2:3]*/ IfcVirtualGridIntersection::OffsetDistances() const { return *data_->getArgument(1); }
void IfcVirtualGridIntersection::setOffsetDistances(std::vector< double > /*[2:3]*/ v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(1,v); }


const IfcParse::entity& IfcVirtualGridIntersection::declaration() const { return *IfcVirtualGridIntersection_type; }
Type::Enum IfcVirtualGridIntersection::Class() { return Type::IfcVirtualGridIntersection; }
IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcAbstractEntity* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (!e->is(Type::IfcVirtualGridIntersection)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcTemplatedEntityList< IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances) : IfcUtil::IfcBaseEntity() { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_IntersectingAxes)->generalize()); e->setArgument(1,(v2_OffsetDistances)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcVoidingFeature
bool IfcVoidingFeature::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum IfcVoidingFeature::PredefinedType() const { return IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); }
void IfcVoidingFeature::setPredefinedType(IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcVoidingFeatureTypeEnum::ToString(v)); }


const IfcParse::entity& IfcVoidingFeature::declaration() const { return *IfcVoidingFeature_type; }
Type::Enum IfcVoidingFeature::Class() { return Type::IfcVoidingFeature; }
IfcVoidingFeature::IfcVoidingFeature(IfcAbstractEntity* e) : IfcFeatureElementSubtraction((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcVoidingFeature)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcVoidingFeatureTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWall
bool IfcWall::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcWallTypeEnum::IfcWallTypeEnum IfcWall::PredefinedType() const { return IfcWallTypeEnum::FromString(*data_->getArgument(8)); }
void IfcWall::setPredefinedType(IfcWallTypeEnum::IfcWallTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcWallTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWall::declaration() const { return *IfcWall_type; }
Type::Enum IfcWall::Class() { return Type::IfcWall; }
IfcWall::IfcWall(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWall)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWall::IfcWall(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcWallTypeEnum::IfcWallTypeEnum > v9_PredefinedType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcWallTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWallElementedCase


const IfcParse::entity& IfcWallElementedCase::declaration() const { return *IfcWallElementedCase_type; }
Type::Enum IfcWallElementedCase::Class() { return Type::IfcWallElementedCase; }
IfcWallElementedCase::IfcWallElementedCase(IfcAbstractEntity* e) : IfcWall((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWallElementedCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWallElementedCase::IfcWallElementedCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcWallTypeEnum::IfcWallTypeEnum > v9_PredefinedType) : IfcWall((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcWallTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWallStandardCase


const IfcParse::entity& IfcWallStandardCase::declaration() const { return *IfcWallStandardCase_type; }
Type::Enum IfcWallStandardCase::Class() { return Type::IfcWallStandardCase; }
IfcWallStandardCase::IfcWallStandardCase(IfcAbstractEntity* e) : IfcWall((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWallStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWallStandardCase::IfcWallStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcWallTypeEnum::IfcWallTypeEnum > v9_PredefinedType) : IfcWall((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcWallTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWallType
IfcWallTypeEnum::IfcWallTypeEnum IfcWallType::PredefinedType() const { return IfcWallTypeEnum::FromString(*data_->getArgument(9)); }
void IfcWallType::setPredefinedType(IfcWallTypeEnum::IfcWallTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWallTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWallType::declaration() const { return *IfcWallType_type; }
Type::Enum IfcWallType::Class() { return Type::IfcWallType; }
IfcWallType::IfcWallType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWallType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWallType::IfcWallType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcWallTypeEnum::IfcWallTypeEnum v10_PredefinedType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcWallTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWasteTerminal
bool IfcWasteTerminal::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum IfcWasteTerminal::PredefinedType() const { return IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void IfcWasteTerminal::setPredefinedType(IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcWasteTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWasteTerminal::declaration() const { return *IfcWasteTerminal_type; }
Type::Enum IfcWasteTerminal::Class() { return Type::IfcWasteTerminal; }
IfcWasteTerminal::IfcWasteTerminal(IfcAbstractEntity* e) : IfcFlowTerminal((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWasteTerminal)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWasteTerminal::IfcWasteTerminal(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum > v9_PredefinedType) : IfcFlowTerminal((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcWasteTerminalTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWasteTerminalType
IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum IfcWasteTerminalType::PredefinedType() const { return IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void IfcWasteTerminalType::setPredefinedType(IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWasteTerminalTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWasteTerminalType::declaration() const { return *IfcWasteTerminalType_type; }
Type::Enum IfcWasteTerminalType::Class() { return Type::IfcWasteTerminalType; }
IfcWasteTerminalType::IfcWasteTerminalType(IfcAbstractEntity* e) : IfcFlowTerminalType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWasteTerminalType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum v10_PredefinedType) : IfcFlowTerminalType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcWasteTerminalTypeEnum::ToString(v10_PredefinedType)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindow
bool IfcWindow::hasOverallHeight() const { return !data_->getArgument(8)->isNull(); }
double IfcWindow::OverallHeight() const { return *data_->getArgument(8); }
void IfcWindow::setOverallHeight(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcWindow::hasOverallWidth() const { return !data_->getArgument(9)->isNull(); }
double IfcWindow::OverallWidth() const { return *data_->getArgument(9); }
void IfcWindow::setOverallWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcWindow::hasPredefinedType() const { return !data_->getArgument(10)->isNull(); }
IfcWindowTypeEnum::IfcWindowTypeEnum IfcWindow::PredefinedType() const { return IfcWindowTypeEnum::FromString(*data_->getArgument(10)); }
void IfcWindow::setPredefinedType(IfcWindowTypeEnum::IfcWindowTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcWindowTypeEnum::ToString(v)); }
bool IfcWindow::hasPartitioningType() const { return !data_->getArgument(11)->isNull(); }
IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum IfcWindow::PartitioningType() const { return IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); }
void IfcWindow::setPartitioningType(IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v,IfcWindowTypePartitioningEnum::ToString(v)); }
bool IfcWindow::hasUserDefinedPartitioningType() const { return !data_->getArgument(12)->isNull(); }
std::string IfcWindow::UserDefinedPartitioningType() const { return *data_->getArgument(12); }
void IfcWindow::setUserDefinedPartitioningType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcWindow::declaration() const { return *IfcWindow_type; }
Type::Enum IfcWindow::Class() { return Type::IfcWindow; }
IfcWindow::IfcWindow(IfcAbstractEntity* e) : IfcBuildingElement((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindow)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindow::IfcWindow(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< IfcWindowTypeEnum::IfcWindowTypeEnum > v11_PredefinedType, boost::optional< IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuildingElement((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_OverallHeight) { e->setArgument(8,(*v9_OverallHeight)); } else { e->setArgument(8); } if (v10_OverallWidth) { e->setArgument(9,(*v10_OverallWidth)); } else { e->setArgument(9); } if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcWindowTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } if (v12_PartitioningType) { e->setArgument(11,*v12_PartitioningType,IfcWindowTypePartitioningEnum::ToString(*v12_PartitioningType)); } else { e->setArgument(11); } if (v13_UserDefinedPartitioningType) { e->setArgument(12,(*v13_UserDefinedPartitioningType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowLiningProperties
bool IfcWindowLiningProperties::hasLiningDepth() const { return !data_->getArgument(4)->isNull(); }
double IfcWindowLiningProperties::LiningDepth() const { return *data_->getArgument(4); }
void IfcWindowLiningProperties::setLiningDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcWindowLiningProperties::hasLiningThickness() const { return !data_->getArgument(5)->isNull(); }
double IfcWindowLiningProperties::LiningThickness() const { return *data_->getArgument(5); }
void IfcWindowLiningProperties::setLiningThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
bool IfcWindowLiningProperties::hasTransomThickness() const { return !data_->getArgument(6)->isNull(); }
double IfcWindowLiningProperties::TransomThickness() const { return *data_->getArgument(6); }
void IfcWindowLiningProperties::setTransomThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWindowLiningProperties::hasMullionThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcWindowLiningProperties::MullionThickness() const { return *data_->getArgument(7); }
void IfcWindowLiningProperties::setMullionThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcWindowLiningProperties::hasFirstTransomOffset() const { return !data_->getArgument(8)->isNull(); }
double IfcWindowLiningProperties::FirstTransomOffset() const { return *data_->getArgument(8); }
void IfcWindowLiningProperties::setFirstTransomOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcWindowLiningProperties::hasSecondTransomOffset() const { return !data_->getArgument(9)->isNull(); }
double IfcWindowLiningProperties::SecondTransomOffset() const { return *data_->getArgument(9); }
void IfcWindowLiningProperties::setSecondTransomOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcWindowLiningProperties::hasFirstMullionOffset() const { return !data_->getArgument(10)->isNull(); }
double IfcWindowLiningProperties::FirstMullionOffset() const { return *data_->getArgument(10); }
void IfcWindowLiningProperties::setFirstMullionOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcWindowLiningProperties::hasSecondMullionOffset() const { return !data_->getArgument(11)->isNull(); }
double IfcWindowLiningProperties::SecondMullionOffset() const { return *data_->getArgument(11); }
void IfcWindowLiningProperties::setSecondMullionOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcWindowLiningProperties::hasShapeAspectStyle() const { return !data_->getArgument(12)->isNull(); }
IfcShapeAspect* IfcWindowLiningProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(12))); }
void IfcWindowLiningProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }
bool IfcWindowLiningProperties::hasLiningOffset() const { return !data_->getArgument(13)->isNull(); }
double IfcWindowLiningProperties::LiningOffset() const { return *data_->getArgument(13); }
void IfcWindowLiningProperties::setLiningOffset(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v); }
bool IfcWindowLiningProperties::hasLiningToPanelOffsetX() const { return !data_->getArgument(14)->isNull(); }
double IfcWindowLiningProperties::LiningToPanelOffsetX() const { return *data_->getArgument(14); }
void IfcWindowLiningProperties::setLiningToPanelOffsetX(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(14,v); }
bool IfcWindowLiningProperties::hasLiningToPanelOffsetY() const { return !data_->getArgument(15)->isNull(); }
double IfcWindowLiningProperties::LiningToPanelOffsetY() const { return *data_->getArgument(15); }
void IfcWindowLiningProperties::setLiningToPanelOffsetY(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(15,v); }


const IfcParse::entity& IfcWindowLiningProperties::declaration() const { return *IfcWindowLiningProperties_type; }
Type::Enum IfcWindowLiningProperties::Class() { return Type::IfcWindowLiningProperties; }
IfcWindowLiningProperties::IfcWindowLiningProperties(IfcAbstractEntity* e) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowLiningProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowLiningProperties::IfcWindowLiningProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_LiningDepth, boost::optional< double > v6_LiningThickness, boost::optional< double > v7_TransomThickness, boost::optional< double > v8_MullionThickness, boost::optional< double > v9_FirstTransomOffset, boost::optional< double > v10_SecondTransomOffset, boost::optional< double > v11_FirstMullionOffset, boost::optional< double > v12_SecondMullionOffset, IfcShapeAspect* v13_ShapeAspectStyle, boost::optional< double > v14_LiningOffset, boost::optional< double > v15_LiningToPanelOffsetX, boost::optional< double > v16_LiningToPanelOffsetY) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_LiningDepth) { e->setArgument(4,(*v5_LiningDepth)); } else { e->setArgument(4); } if (v6_LiningThickness) { e->setArgument(5,(*v6_LiningThickness)); } else { e->setArgument(5); } if (v7_TransomThickness) { e->setArgument(6,(*v7_TransomThickness)); } else { e->setArgument(6); } if (v8_MullionThickness) { e->setArgument(7,(*v8_MullionThickness)); } else { e->setArgument(7); } if (v9_FirstTransomOffset) { e->setArgument(8,(*v9_FirstTransomOffset)); } else { e->setArgument(8); } if (v10_SecondTransomOffset) { e->setArgument(9,(*v10_SecondTransomOffset)); } else { e->setArgument(9); } if (v11_FirstMullionOffset) { e->setArgument(10,(*v11_FirstMullionOffset)); } else { e->setArgument(10); } if (v12_SecondMullionOffset) { e->setArgument(11,(*v12_SecondMullionOffset)); } else { e->setArgument(11); } e->setArgument(12,(v13_ShapeAspectStyle)); if (v14_LiningOffset) { e->setArgument(13,(*v14_LiningOffset)); } else { e->setArgument(13); } if (v15_LiningToPanelOffsetX) { e->setArgument(14,(*v15_LiningToPanelOffsetX)); } else { e->setArgument(14); } if (v16_LiningToPanelOffsetY) { e->setArgument(15,(*v16_LiningToPanelOffsetY)); } else { e->setArgument(15); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowPanelProperties
IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum IfcWindowPanelProperties::OperationType() const { return IfcWindowPanelOperationEnum::FromString(*data_->getArgument(4)); }
void IfcWindowPanelProperties::setOperationType(IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v,IfcWindowPanelOperationEnum::ToString(v)); }
IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum IfcWindowPanelProperties::PanelPosition() const { return IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void IfcWindowPanelProperties::setPanelPosition(IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v,IfcWindowPanelPositionEnum::ToString(v)); }
bool IfcWindowPanelProperties::hasFrameDepth() const { return !data_->getArgument(6)->isNull(); }
double IfcWindowPanelProperties::FrameDepth() const { return *data_->getArgument(6); }
void IfcWindowPanelProperties::setFrameDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWindowPanelProperties::hasFrameThickness() const { return !data_->getArgument(7)->isNull(); }
double IfcWindowPanelProperties::FrameThickness() const { return *data_->getArgument(7); }
void IfcWindowPanelProperties::setFrameThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcWindowPanelProperties::hasShapeAspectStyle() const { return !data_->getArgument(8)->isNull(); }
IfcShapeAspect* IfcWindowPanelProperties::ShapeAspectStyle() const { return (IfcShapeAspect*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(8))); }
void IfcWindowPanelProperties::setShapeAspectStyle(IfcShapeAspect* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcWindowPanelProperties::declaration() const { return *IfcWindowPanelProperties_type; }
Type::Enum IfcWindowPanelProperties::Class() { return Type::IfcWindowPanelProperties; }
IfcWindowPanelProperties::IfcWindowPanelProperties(IfcAbstractEntity* e) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowPanelProperties)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowPanelProperties::IfcWindowPanelProperties(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum v5_OperationType, IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } e->setArgument(4,v5_OperationType,IfcWindowPanelOperationEnum::ToString(v5_OperationType)); e->setArgument(5,v6_PanelPosition,IfcWindowPanelPositionEnum::ToString(v6_PanelPosition)); if (v7_FrameDepth) { e->setArgument(6,(*v7_FrameDepth)); } else { e->setArgument(6); } if (v8_FrameThickness) { e->setArgument(7,(*v8_FrameThickness)); } else { e->setArgument(7); } e->setArgument(8,(v9_ShapeAspectStyle)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowStandardCase


const IfcParse::entity& IfcWindowStandardCase::declaration() const { return *IfcWindowStandardCase_type; }
Type::Enum IfcWindowStandardCase::Class() { return Type::IfcWindowStandardCase; }
IfcWindowStandardCase::IfcWindowStandardCase(IfcAbstractEntity* e) : IfcWindow((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowStandardCase)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowStandardCase::IfcWindowStandardCase(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, IfcObjectPlacement* v6_ObjectPlacement, IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< IfcWindowTypeEnum::IfcWindowTypeEnum > v11_PredefinedType, boost::optional< IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcWindow((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } e->setArgument(5,(v6_ObjectPlacement)); e->setArgument(6,(v7_Representation)); if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_OverallHeight) { e->setArgument(8,(*v9_OverallHeight)); } else { e->setArgument(8); } if (v10_OverallWidth) { e->setArgument(9,(*v10_OverallWidth)); } else { e->setArgument(9); } if (v11_PredefinedType) { e->setArgument(10,*v11_PredefinedType,IfcWindowTypeEnum::ToString(*v11_PredefinedType)); } else { e->setArgument(10); } if (v12_PartitioningType) { e->setArgument(11,*v12_PartitioningType,IfcWindowTypePartitioningEnum::ToString(*v12_PartitioningType)); } else { e->setArgument(11); } if (v13_UserDefinedPartitioningType) { e->setArgument(12,(*v13_UserDefinedPartitioningType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowStyle
IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum IfcWindowStyle::ConstructionType() const { return IfcWindowStyleConstructionEnum::FromString(*data_->getArgument(8)); }
void IfcWindowStyle::setConstructionType(IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcWindowStyleConstructionEnum::ToString(v)); }
IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum IfcWindowStyle::OperationType() const { return IfcWindowStyleOperationEnum::FromString(*data_->getArgument(9)); }
void IfcWindowStyle::setOperationType(IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWindowStyleOperationEnum::ToString(v)); }
bool IfcWindowStyle::ParameterTakesPrecedence() const { return *data_->getArgument(10); }
void IfcWindowStyle::setParameterTakesPrecedence(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
bool IfcWindowStyle::Sizeable() const { return *data_->getArgument(11); }
void IfcWindowStyle::setSizeable(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }


const IfcParse::entity& IfcWindowStyle::declaration() const { return *IfcWindowStyle_type; }
Type::Enum IfcWindowStyle::Class() { return Type::IfcWindowStyle; }
IfcWindowStyle::IfcWindowStyle(IfcAbstractEntity* e) : IfcTypeProduct((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowStyle)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowStyle::IfcWindowStyle(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum v9_ConstructionType, IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum v10_OperationType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } e->setArgument(8,v9_ConstructionType,IfcWindowStyleConstructionEnum::ToString(v9_ConstructionType)); e->setArgument(9,v10_OperationType,IfcWindowStyleOperationEnum::ToString(v10_OperationType)); e->setArgument(10,(v11_ParameterTakesPrecedence)); e->setArgument(11,(v12_Sizeable)); data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWindowType
IfcWindowTypeEnum::IfcWindowTypeEnum IfcWindowType::PredefinedType() const { return IfcWindowTypeEnum::FromString(*data_->getArgument(9)); }
void IfcWindowType::setPredefinedType(IfcWindowTypeEnum::IfcWindowTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v,IfcWindowTypeEnum::ToString(v)); }
IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum IfcWindowType::PartitioningType() const { return IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); }
void IfcWindowType::setPartitioningType(IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v,IfcWindowTypePartitioningEnum::ToString(v)); }
bool IfcWindowType::hasParameterTakesPrecedence() const { return !data_->getArgument(11)->isNull(); }
bool IfcWindowType::ParameterTakesPrecedence() const { return *data_->getArgument(11); }
void IfcWindowType::setParameterTakesPrecedence(bool v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcWindowType::hasUserDefinedPartitioningType() const { return !data_->getArgument(12)->isNull(); }
std::string IfcWindowType::UserDefinedPartitioningType() const { return *data_->getArgument(12); }
void IfcWindowType::setUserDefinedPartitioningType(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcWindowType::declaration() const { return *IfcWindowType_type; }
Type::Enum IfcWindowType::Class() { return Type::IfcWindowType; }
IfcWindowType::IfcWindowType(IfcAbstractEntity* e) : IfcBuildingElementType((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWindowType)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWindowType::IfcWindowType(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< IfcTemplatedEntityList< IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< IfcTemplatedEntityList< IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, IfcWindowTypeEnum::IfcWindowTypeEnum v10_PredefinedType, IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum v11_PartitioningType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuildingElementType((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ApplicableOccurrence) { e->setArgument(4,(*v5_ApplicableOccurrence)); } else { e->setArgument(4); } if (v6_HasPropertySets) { e->setArgument(5,(*v6_HasPropertySets)->generalize()); } else { e->setArgument(5); } if (v7_RepresentationMaps) { e->setArgument(6,(*v7_RepresentationMaps)->generalize()); } else { e->setArgument(6); } if (v8_Tag) { e->setArgument(7,(*v8_Tag)); } else { e->setArgument(7); } if (v9_ElementType) { e->setArgument(8,(*v9_ElementType)); } else { e->setArgument(8); } e->setArgument(9,v10_PredefinedType,IfcWindowTypeEnum::ToString(v10_PredefinedType)); e->setArgument(10,v11_PartitioningType,IfcWindowTypePartitioningEnum::ToString(v11_PartitioningType)); if (v12_ParameterTakesPrecedence) { e->setArgument(11,(*v12_ParameterTakesPrecedence)); } else { e->setArgument(11); } if (v13_UserDefinedPartitioningType) { e->setArgument(12,(*v13_UserDefinedPartitioningType)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkCalendar
bool IfcWorkCalendar::hasWorkingTimes() const { return !data_->getArgument(6)->isNull(); }
IfcTemplatedEntityList< IfcWorkTime >::ptr IfcWorkCalendar::WorkingTimes() const { IfcEntityList::ptr es = *data_->getArgument(6); return es->as<IfcWorkTime>(); }
void IfcWorkCalendar::setWorkingTimes(IfcTemplatedEntityList< IfcWorkTime >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v->generalize()); }
bool IfcWorkCalendar::hasExceptionTimes() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcWorkTime >::ptr IfcWorkCalendar::ExceptionTimes() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcWorkTime>(); }
void IfcWorkCalendar::setExceptionTimes(IfcTemplatedEntityList< IfcWorkTime >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcWorkCalendar::hasPredefinedType() const { return !data_->getArgument(8)->isNull(); }
IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum IfcWorkCalendar::PredefinedType() const { return IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); }
void IfcWorkCalendar::setPredefinedType(IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v,IfcWorkCalendarTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWorkCalendar::declaration() const { return *IfcWorkCalendar_type; }
Type::Enum IfcWorkCalendar::Class() { return Type::IfcWorkCalendar; }
IfcWorkCalendar::IfcWorkCalendar(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkCalendar)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, boost::optional< IfcTemplatedEntityList< IfcWorkTime >::ptr > v7_WorkingTimes, boost::optional< IfcTemplatedEntityList< IfcWorkTime >::ptr > v8_ExceptionTimes, boost::optional< IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum > v9_PredefinedType) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } if (v7_WorkingTimes) { e->setArgument(6,(*v7_WorkingTimes)->generalize()); } else { e->setArgument(6); } if (v8_ExceptionTimes) { e->setArgument(7,(*v8_ExceptionTimes)->generalize()); } else { e->setArgument(7); } if (v9_PredefinedType) { e->setArgument(8,*v9_PredefinedType,IfcWorkCalendarTypeEnum::ToString(*v9_PredefinedType)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkControl
std::string IfcWorkControl::CreationDate() const { return *data_->getArgument(6); }
void IfcWorkControl::setCreationDate(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcWorkControl::hasCreators() const { return !data_->getArgument(7)->isNull(); }
IfcTemplatedEntityList< IfcPerson >::ptr IfcWorkControl::Creators() const { IfcEntityList::ptr es = *data_->getArgument(7); return es->as<IfcPerson>(); }
void IfcWorkControl::setCreators(IfcTemplatedEntityList< IfcPerson >::ptr v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v->generalize()); }
bool IfcWorkControl::hasPurpose() const { return !data_->getArgument(8)->isNull(); }
std::string IfcWorkControl::Purpose() const { return *data_->getArgument(8); }
void IfcWorkControl::setPurpose(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }
bool IfcWorkControl::hasDuration() const { return !data_->getArgument(9)->isNull(); }
std::string IfcWorkControl::Duration() const { return *data_->getArgument(9); }
void IfcWorkControl::setDuration(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(9,v); }
bool IfcWorkControl::hasTotalFloat() const { return !data_->getArgument(10)->isNull(); }
std::string IfcWorkControl::TotalFloat() const { return *data_->getArgument(10); }
void IfcWorkControl::setTotalFloat(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(10,v); }
std::string IfcWorkControl::StartTime() const { return *data_->getArgument(11); }
void IfcWorkControl::setStartTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(11,v); }
bool IfcWorkControl::hasFinishTime() const { return !data_->getArgument(12)->isNull(); }
std::string IfcWorkControl::FinishTime() const { return *data_->getArgument(12); }
void IfcWorkControl::setFinishTime(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(12,v); }


const IfcParse::entity& IfcWorkControl::declaration() const { return *IfcWorkControl_type; }
Type::Enum IfcWorkControl::Class() { return Type::IfcWorkControl; }
IfcWorkControl::IfcWorkControl(IfcAbstractEntity* e) : IfcControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkControl)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime) : IfcControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } e->setArgument(6,(v7_CreationDate)); if (v8_Creators) { e->setArgument(7,(*v8_Creators)->generalize()); } else { e->setArgument(7); } if (v9_Purpose) { e->setArgument(8,(*v9_Purpose)); } else { e->setArgument(8); } if (v10_Duration) { e->setArgument(9,(*v10_Duration)); } else { e->setArgument(9); } if (v11_TotalFloat) { e->setArgument(10,(*v11_TotalFloat)); } else { e->setArgument(10); } e->setArgument(11,(v12_StartTime)); if (v13_FinishTime) { e->setArgument(12,(*v13_FinishTime)); } else { e->setArgument(12); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkPlan
bool IfcWorkPlan::hasPredefinedType() const { return !data_->getArgument(13)->isNull(); }
IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum IfcWorkPlan::PredefinedType() const { return IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); }
void IfcWorkPlan::setPredefinedType(IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcWorkPlanTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWorkPlan::declaration() const { return *IfcWorkPlan_type; }
Type::Enum IfcWorkPlan::Class() { return Type::IfcWorkPlan; }
IfcWorkPlan::IfcWorkPlan(IfcAbstractEntity* e) : IfcWorkControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkPlan)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum > v14_PredefinedType) : IfcWorkControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } e->setArgument(6,(v7_CreationDate)); if (v8_Creators) { e->setArgument(7,(*v8_Creators)->generalize()); } else { e->setArgument(7); } if (v9_Purpose) { e->setArgument(8,(*v9_Purpose)); } else { e->setArgument(8); } if (v10_Duration) { e->setArgument(9,(*v10_Duration)); } else { e->setArgument(9); } if (v11_TotalFloat) { e->setArgument(10,(*v11_TotalFloat)); } else { e->setArgument(10); } e->setArgument(11,(v12_StartTime)); if (v13_FinishTime) { e->setArgument(12,(*v13_FinishTime)); } else { e->setArgument(12); } if (v14_PredefinedType) { e->setArgument(13,*v14_PredefinedType,IfcWorkPlanTypeEnum::ToString(*v14_PredefinedType)); } else { e->setArgument(13); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkSchedule
bool IfcWorkSchedule::hasPredefinedType() const { return !data_->getArgument(13)->isNull(); }
IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum IfcWorkSchedule::PredefinedType() const { return IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); }
void IfcWorkSchedule::setPredefinedType(IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(13,v,IfcWorkScheduleTypeEnum::ToString(v)); }


const IfcParse::entity& IfcWorkSchedule::declaration() const { return *IfcWorkSchedule_type; }
Type::Enum IfcWorkSchedule::Class() { return Type::IfcWorkSchedule; }
IfcWorkSchedule::IfcWorkSchedule(IfcAbstractEntity* e) : IfcWorkControl((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkSchedule)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_Identification, std::string v7_CreationDate, boost::optional< IfcTemplatedEntityList< IfcPerson >::ptr > v8_Creators, boost::optional< std::string > v9_Purpose, boost::optional< std::string > v10_Duration, boost::optional< std::string > v11_TotalFloat, std::string v12_StartTime, boost::optional< std::string > v13_FinishTime, boost::optional< IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum > v14_PredefinedType) : IfcWorkControl((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_Identification) { e->setArgument(5,(*v6_Identification)); } else { e->setArgument(5); } e->setArgument(6,(v7_CreationDate)); if (v8_Creators) { e->setArgument(7,(*v8_Creators)->generalize()); } else { e->setArgument(7); } if (v9_Purpose) { e->setArgument(8,(*v9_Purpose)); } else { e->setArgument(8); } if (v10_Duration) { e->setArgument(9,(*v10_Duration)); } else { e->setArgument(9); } if (v11_TotalFloat) { e->setArgument(10,(*v11_TotalFloat)); } else { e->setArgument(10); } e->setArgument(11,(v12_StartTime)); if (v13_FinishTime) { e->setArgument(12,(*v13_FinishTime)); } else { e->setArgument(12); } if (v14_PredefinedType) { e->setArgument(13,*v14_PredefinedType,IfcWorkScheduleTypeEnum::ToString(*v14_PredefinedType)); } else { e->setArgument(13); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcWorkTime
bool IfcWorkTime::hasRecurrencePattern() const { return !data_->getArgument(3)->isNull(); }
IfcRecurrencePattern* IfcWorkTime::RecurrencePattern() const { return (IfcRecurrencePattern*)((IfcUtil::IfcBaseClass*)(*data_->getArgument(3))); }
void IfcWorkTime::setRecurrencePattern(IfcRecurrencePattern* v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
bool IfcWorkTime::hasStart() const { return !data_->getArgument(4)->isNull(); }
std::string IfcWorkTime::Start() const { return *data_->getArgument(4); }
void IfcWorkTime::setStart(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
bool IfcWorkTime::hasFinish() const { return !data_->getArgument(5)->isNull(); }
std::string IfcWorkTime::Finish() const { return *data_->getArgument(5); }
void IfcWorkTime::setFinish(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcWorkTime::declaration() const { return *IfcWorkTime_type; }
Type::Enum IfcWorkTime::Class() { return Type::IfcWorkTime; }
IfcWorkTime::IfcWorkTime(IfcAbstractEntity* e) : IfcSchedulingTime((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcWorkTime)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcWorkTime::IfcWorkTime(boost::optional< std::string > v1_Name, boost::optional< IfcDataOriginEnum::IfcDataOriginEnum > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, IfcRecurrencePattern* v4_RecurrencePattern, boost::optional< std::string > v5_Start, boost::optional< std::string > v6_Finish) : IfcSchedulingTime((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); if (v1_Name) { e->setArgument(0,(*v1_Name)); } else { e->setArgument(0); } if (v2_DataOrigin) { e->setArgument(1,*v2_DataOrigin,IfcDataOriginEnum::ToString(*v2_DataOrigin)); } else { e->setArgument(1); } if (v3_UserDefinedDataOrigin) { e->setArgument(2,(*v3_UserDefinedDataOrigin)); } else { e->setArgument(2); } e->setArgument(3,(v4_RecurrencePattern)); if (v5_Start) { e->setArgument(4,(*v5_Start)); } else { e->setArgument(4); } if (v6_Finish) { e->setArgument(5,(*v6_Finish)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcZShapeProfileDef
double IfcZShapeProfileDef::Depth() const { return *data_->getArgument(3); }
void IfcZShapeProfileDef::setDepth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(3,v); }
double IfcZShapeProfileDef::FlangeWidth() const { return *data_->getArgument(4); }
void IfcZShapeProfileDef::setFlangeWidth(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(4,v); }
double IfcZShapeProfileDef::WebThickness() const { return *data_->getArgument(5); }
void IfcZShapeProfileDef::setWebThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }
double IfcZShapeProfileDef::FlangeThickness() const { return *data_->getArgument(6); }
void IfcZShapeProfileDef::setFlangeThickness(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(6,v); }
bool IfcZShapeProfileDef::hasFilletRadius() const { return !data_->getArgument(7)->isNull(); }
double IfcZShapeProfileDef::FilletRadius() const { return *data_->getArgument(7); }
void IfcZShapeProfileDef::setFilletRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(7,v); }
bool IfcZShapeProfileDef::hasEdgeRadius() const { return !data_->getArgument(8)->isNull(); }
double IfcZShapeProfileDef::EdgeRadius() const { return *data_->getArgument(8); }
void IfcZShapeProfileDef::setEdgeRadius(double v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(8,v); }


const IfcParse::entity& IfcZShapeProfileDef::declaration() const { return *IfcZShapeProfileDef_type; }
Type::Enum IfcZShapeProfileDef::Class() { return Type::IfcZShapeProfileDef; }
IfcZShapeProfileDef::IfcZShapeProfileDef(IfcAbstractEntity* e) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcZShapeProfileDef)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcZShapeProfileDef::IfcZShapeProfileDef(IfcProfileTypeEnum::IfcProfileTypeEnum v1_ProfileType, boost::optional< std::string > v2_ProfileName, IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_FlangeWidth, double v6_WebThickness, double v7_FlangeThickness, boost::optional< double > v8_FilletRadius, boost::optional< double > v9_EdgeRadius) : IfcParameterizedProfileDef((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,v1_ProfileType,IfcProfileTypeEnum::ToString(v1_ProfileType)); if (v2_ProfileName) { e->setArgument(1,(*v2_ProfileName)); } else { e->setArgument(1); } e->setArgument(2,(v3_Position)); e->setArgument(3,(v4_Depth)); e->setArgument(4,(v5_FlangeWidth)); e->setArgument(5,(v6_WebThickness)); e->setArgument(6,(v7_FlangeThickness)); if (v8_FilletRadius) { e->setArgument(7,(*v8_FilletRadius)); } else { e->setArgument(7); } if (v9_EdgeRadius) { e->setArgument(8,(*v9_EdgeRadius)); } else { e->setArgument(8); } data_ = e; EntityBuffer::Add(this); }

// Function implementations for IfcZone
bool IfcZone::hasLongName() const { return !data_->getArgument(5)->isNull(); }
std::string IfcZone::LongName() const { return *data_->getArgument(5); }
void IfcZone::setLongName(std::string v) { if ( ! data_->isWritable() ) { data_ = new IfcWritableEntity(data_); } ((IfcWritableEntity*)data_)->setArgument(5,v); }


const IfcParse::entity& IfcZone::declaration() const { return *IfcZone_type; }
Type::Enum IfcZone::Class() { return Type::IfcZone; }
IfcZone::IfcZone(IfcAbstractEntity* e) : IfcSystem((IfcAbstractEntity*)0) { if (!e) return; if (!e->is(Type::IfcZone)) throw IfcException("Unable to find find keyword in schema"); data_ = e; }
IfcZone::IfcZone(std::string v1_GlobalId, IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< std::string > v6_LongName) : IfcSystem((IfcAbstractEntity*)0) { IfcWritableEntity* e = new IfcWritableEntity(Class()); e->setArgument(0,(v1_GlobalId)); e->setArgument(1,(v2_OwnerHistory)); if (v3_Name) { e->setArgument(2,(*v3_Name)); } else { e->setArgument(2); } if (v4_Description) { e->setArgument(3,(*v4_Description)); } else { e->setArgument(3); } if (v5_ObjectType) { e->setArgument(4,(*v5_ObjectType)); } else { e->setArgument(4); } if (v6_LongName) { e->setArgument(5,(*v6_LongName)); } else { e->setArgument(5); } data_ = e; EntityBuffer::Add(this); }

#endif
