/********************************************************************************
 *                                                                              *
 * 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 IFC4x3_RC1.exp. Do not make modifications  *
 * but instead modify the python script that has been used to generate this.    *
 *                                                                              *
 ********************************************************************************/

#include "../ifcparse/Ifc4x3_rc1.h"
#include "../ifcparse/IfcSchema.h"
#include "../ifcparse/IfcException.h"
#include "../ifcparse/IfcWrite.h"

#include <map>

const char* const Ifc4x3_rc1::Identifier = "IFC4X3_RC1";

using namespace IfcParse;
using namespace IfcWrite;

// External definitions
extern entity* IFC4X3_RC1_IfcActionRequest_type;
extern entity* IFC4X3_RC1_IfcActor_type;
extern entity* IFC4X3_RC1_IfcActorRole_type;
extern entity* IFC4X3_RC1_IfcActuator_type;
extern entity* IFC4X3_RC1_IfcActuatorType_type;
extern entity* IFC4X3_RC1_IfcAddress_type;
extern entity* IFC4X3_RC1_IfcAdvancedBrep_type;
extern entity* IFC4X3_RC1_IfcAdvancedBrepWithVoids_type;
extern entity* IFC4X3_RC1_IfcAdvancedFace_type;
extern entity* IFC4X3_RC1_IfcAirTerminal_type;
extern entity* IFC4X3_RC1_IfcAirTerminalBox_type;
extern entity* IFC4X3_RC1_IfcAirTerminalBoxType_type;
extern entity* IFC4X3_RC1_IfcAirTerminalType_type;
extern entity* IFC4X3_RC1_IfcAirToAirHeatRecovery_type;
extern entity* IFC4X3_RC1_IfcAirToAirHeatRecoveryType_type;
extern entity* IFC4X3_RC1_IfcAlarm_type;
extern entity* IFC4X3_RC1_IfcAlarmType_type;
extern entity* IFC4X3_RC1_IfcAlignment_type;
extern entity* IFC4X3_RC1_IfcAlignment2DCant_type;
extern entity* IFC4X3_RC1_IfcAlignment2DCantSegLine_type;
extern entity* IFC4X3_RC1_IfcAlignment2DCantSegTransition_type;
extern entity* IFC4X3_RC1_IfcAlignment2DCantSegment_type;
extern entity* IFC4X3_RC1_IfcAlignment2DHorizontal_type;
extern entity* IFC4X3_RC1_IfcAlignment2DHorizontalSegment_type;
extern entity* IFC4X3_RC1_IfcAlignment2DSegment_type;
extern entity* IFC4X3_RC1_IfcAlignment2DVerSegCircularArc_type;
extern entity* IFC4X3_RC1_IfcAlignment2DVerSegLine_type;
extern entity* IFC4X3_RC1_IfcAlignment2DVerSegParabolicArc_type;
extern entity* IFC4X3_RC1_IfcAlignment2DVerSegTransition_type;
extern entity* IFC4X3_RC1_IfcAlignment2DVertical_type;
extern entity* IFC4X3_RC1_IfcAlignment2DVerticalSegment_type;
extern entity* IFC4X3_RC1_IfcAlignmentCurve_type;
extern entity* IFC4X3_RC1_IfcAnnotation_type;
extern entity* IFC4X3_RC1_IfcAnnotationFillArea_type;
extern entity* IFC4X3_RC1_IfcApplication_type;
extern entity* IFC4X3_RC1_IfcAppliedValue_type;
extern entity* IFC4X3_RC1_IfcApproval_type;
extern entity* IFC4X3_RC1_IfcApprovalRelationship_type;
extern entity* IFC4X3_RC1_IfcArbitraryClosedProfileDef_type;
extern entity* IFC4X3_RC1_IfcArbitraryOpenProfileDef_type;
extern entity* IFC4X3_RC1_IfcArbitraryProfileDefWithVoids_type;
extern entity* IFC4X3_RC1_IfcAsset_type;
extern entity* IFC4X3_RC1_IfcAsymmetricIShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcAudioVisualAppliance_type;
extern entity* IFC4X3_RC1_IfcAudioVisualApplianceType_type;
extern entity* IFC4X3_RC1_IfcAxis1Placement_type;
extern entity* IFC4X3_RC1_IfcAxis2Placement2D_type;
extern entity* IFC4X3_RC1_IfcAxis2Placement3D_type;
extern entity* IFC4X3_RC1_IfcAxisLateralInclination_type;
extern entity* IFC4X3_RC1_IfcBSplineCurve_type;
extern entity* IFC4X3_RC1_IfcBSplineCurveWithKnots_type;
extern entity* IFC4X3_RC1_IfcBSplineSurface_type;
extern entity* IFC4X3_RC1_IfcBSplineSurfaceWithKnots_type;
extern entity* IFC4X3_RC1_IfcBeam_type;
extern entity* IFC4X3_RC1_IfcBeamStandardCase_type;
extern entity* IFC4X3_RC1_IfcBeamType_type;
extern entity* IFC4X3_RC1_IfcBearing_type;
extern entity* IFC4X3_RC1_IfcBearingType_type;
extern entity* IFC4X3_RC1_IfcBlobTexture_type;
extern entity* IFC4X3_RC1_IfcBlock_type;
extern entity* IFC4X3_RC1_IfcBoiler_type;
extern entity* IFC4X3_RC1_IfcBoilerType_type;
extern entity* IFC4X3_RC1_IfcBooleanClippingResult_type;
extern entity* IFC4X3_RC1_IfcBooleanResult_type;
extern entity* IFC4X3_RC1_IfcBorehole_type;
extern entity* IFC4X3_RC1_IfcBoundaryCondition_type;
extern entity* IFC4X3_RC1_IfcBoundaryCurve_type;
extern entity* IFC4X3_RC1_IfcBoundaryEdgeCondition_type;
extern entity* IFC4X3_RC1_IfcBoundaryFaceCondition_type;
extern entity* IFC4X3_RC1_IfcBoundaryNodeCondition_type;
extern entity* IFC4X3_RC1_IfcBoundaryNodeConditionWarping_type;
extern entity* IFC4X3_RC1_IfcBoundedCurve_type;
extern entity* IFC4X3_RC1_IfcBoundedSurface_type;
extern entity* IFC4X3_RC1_IfcBoundingBox_type;
extern entity* IFC4X3_RC1_IfcBoxedHalfSpace_type;
extern entity* IFC4X3_RC1_IfcBridge_type;
extern entity* IFC4X3_RC1_IfcBridgePart_type;
extern entity* IFC4X3_RC1_IfcBuilding_type;
extern entity* IFC4X3_RC1_IfcBuildingElementPart_type;
extern entity* IFC4X3_RC1_IfcBuildingElementPartType_type;
extern entity* IFC4X3_RC1_IfcBuildingElementProxy_type;
extern entity* IFC4X3_RC1_IfcBuildingElementProxyType_type;
extern entity* IFC4X3_RC1_IfcBuildingStorey_type;
extern entity* IFC4X3_RC1_IfcBuildingSystem_type;
extern entity* IFC4X3_RC1_IfcBuiltElement_type;
extern entity* IFC4X3_RC1_IfcBuiltElementType_type;
extern entity* IFC4X3_RC1_IfcBuiltSystem_type;
extern entity* IFC4X3_RC1_IfcBurner_type;
extern entity* IFC4X3_RC1_IfcBurnerType_type;
extern entity* IFC4X3_RC1_IfcCShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcCableCarrierFitting_type;
extern entity* IFC4X3_RC1_IfcCableCarrierFittingType_type;
extern entity* IFC4X3_RC1_IfcCableCarrierSegment_type;
extern entity* IFC4X3_RC1_IfcCableCarrierSegmentType_type;
extern entity* IFC4X3_RC1_IfcCableFitting_type;
extern entity* IFC4X3_RC1_IfcCableFittingType_type;
extern entity* IFC4X3_RC1_IfcCableSegment_type;
extern entity* IFC4X3_RC1_IfcCableSegmentType_type;
extern entity* IFC4X3_RC1_IfcCaissonFoundation_type;
extern entity* IFC4X3_RC1_IfcCaissonFoundationType_type;
extern entity* IFC4X3_RC1_IfcCartesianPoint_type;
extern entity* IFC4X3_RC1_IfcCartesianPointList_type;
extern entity* IFC4X3_RC1_IfcCartesianPointList2D_type;
extern entity* IFC4X3_RC1_IfcCartesianPointList3D_type;
extern entity* IFC4X3_RC1_IfcCartesianTransformationOperator_type;
extern entity* IFC4X3_RC1_IfcCartesianTransformationOperator2D_type;
extern entity* IFC4X3_RC1_IfcCartesianTransformationOperator2DnonUniform_type;
extern entity* IFC4X3_RC1_IfcCartesianTransformationOperator3D_type;
extern entity* IFC4X3_RC1_IfcCartesianTransformationOperator3DnonUniform_type;
extern entity* IFC4X3_RC1_IfcCenterLineProfileDef_type;
extern entity* IFC4X3_RC1_IfcChiller_type;
extern entity* IFC4X3_RC1_IfcChillerType_type;
extern entity* IFC4X3_RC1_IfcChimney_type;
extern entity* IFC4X3_RC1_IfcChimneyType_type;
extern entity* IFC4X3_RC1_IfcCircle_type;
extern entity* IFC4X3_RC1_IfcCircleHollowProfileDef_type;
extern entity* IFC4X3_RC1_IfcCircleProfileDef_type;
extern entity* IFC4X3_RC1_IfcCircularArcSegment2D_type;
extern entity* IFC4X3_RC1_IfcCivilElement_type;
extern entity* IFC4X3_RC1_IfcCivilElementType_type;
extern entity* IFC4X3_RC1_IfcClassification_type;
extern entity* IFC4X3_RC1_IfcClassificationReference_type;
extern entity* IFC4X3_RC1_IfcClosedShell_type;
extern entity* IFC4X3_RC1_IfcCoil_type;
extern entity* IFC4X3_RC1_IfcCoilType_type;
extern entity* IFC4X3_RC1_IfcColourRgb_type;
extern entity* IFC4X3_RC1_IfcColourRgbList_type;
extern entity* IFC4X3_RC1_IfcColourSpecification_type;
extern entity* IFC4X3_RC1_IfcColumn_type;
extern entity* IFC4X3_RC1_IfcColumnStandardCase_type;
extern entity* IFC4X3_RC1_IfcColumnType_type;
extern entity* IFC4X3_RC1_IfcCommunicationsAppliance_type;
extern entity* IFC4X3_RC1_IfcCommunicationsApplianceType_type;
extern entity* IFC4X3_RC1_IfcComplexProperty_type;
extern entity* IFC4X3_RC1_IfcComplexPropertyTemplate_type;
extern entity* IFC4X3_RC1_IfcCompositeCurve_type;
extern entity* IFC4X3_RC1_IfcCompositeCurveOnSurface_type;
extern entity* IFC4X3_RC1_IfcCompositeCurveSegment_type;
extern entity* IFC4X3_RC1_IfcCompositeProfileDef_type;
extern entity* IFC4X3_RC1_IfcCompressor_type;
extern entity* IFC4X3_RC1_IfcCompressorType_type;
extern entity* IFC4X3_RC1_IfcCondenser_type;
extern entity* IFC4X3_RC1_IfcCondenserType_type;
extern entity* IFC4X3_RC1_IfcConic_type;
extern entity* IFC4X3_RC1_IfcConnectedFaceSet_type;
extern entity* IFC4X3_RC1_IfcConnectionCurveGeometry_type;
extern entity* IFC4X3_RC1_IfcConnectionGeometry_type;
extern entity* IFC4X3_RC1_IfcConnectionPointEccentricity_type;
extern entity* IFC4X3_RC1_IfcConnectionPointGeometry_type;
extern entity* IFC4X3_RC1_IfcConnectionSurfaceGeometry_type;
extern entity* IFC4X3_RC1_IfcConnectionVolumeGeometry_type;
extern entity* IFC4X3_RC1_IfcConstraint_type;
extern entity* IFC4X3_RC1_IfcConstructionEquipmentResource_type;
extern entity* IFC4X3_RC1_IfcConstructionEquipmentResourceType_type;
extern entity* IFC4X3_RC1_IfcConstructionMaterialResource_type;
extern entity* IFC4X3_RC1_IfcConstructionMaterialResourceType_type;
extern entity* IFC4X3_RC1_IfcConstructionProductResource_type;
extern entity* IFC4X3_RC1_IfcConstructionProductResourceType_type;
extern entity* IFC4X3_RC1_IfcConstructionResource_type;
extern entity* IFC4X3_RC1_IfcConstructionResourceType_type;
extern entity* IFC4X3_RC1_IfcContext_type;
extern entity* IFC4X3_RC1_IfcContextDependentUnit_type;
extern entity* IFC4X3_RC1_IfcControl_type;
extern entity* IFC4X3_RC1_IfcController_type;
extern entity* IFC4X3_RC1_IfcControllerType_type;
extern entity* IFC4X3_RC1_IfcConversionBasedUnit_type;
extern entity* IFC4X3_RC1_IfcConversionBasedUnitWithOffset_type;
extern entity* IFC4X3_RC1_IfcConveyorSegment_type;
extern entity* IFC4X3_RC1_IfcConveyorSegmentType_type;
extern entity* IFC4X3_RC1_IfcCooledBeam_type;
extern entity* IFC4X3_RC1_IfcCooledBeamType_type;
extern entity* IFC4X3_RC1_IfcCoolingTower_type;
extern entity* IFC4X3_RC1_IfcCoolingTowerType_type;
extern entity* IFC4X3_RC1_IfcCoordinateOperation_type;
extern entity* IFC4X3_RC1_IfcCoordinateReferenceSystem_type;
extern entity* IFC4X3_RC1_IfcCostItem_type;
extern entity* IFC4X3_RC1_IfcCostSchedule_type;
extern entity* IFC4X3_RC1_IfcCostValue_type;
extern entity* IFC4X3_RC1_IfcCourse_type;
extern entity* IFC4X3_RC1_IfcCourseType_type;
extern entity* IFC4X3_RC1_IfcCovering_type;
extern entity* IFC4X3_RC1_IfcCoveringType_type;
extern entity* IFC4X3_RC1_IfcCrewResource_type;
extern entity* IFC4X3_RC1_IfcCrewResourceType_type;
extern entity* IFC4X3_RC1_IfcCsgPrimitive3D_type;
extern entity* IFC4X3_RC1_IfcCsgSolid_type;
extern entity* IFC4X3_RC1_IfcCurrencyRelationship_type;
extern entity* IFC4X3_RC1_IfcCurtainWall_type;
extern entity* IFC4X3_RC1_IfcCurtainWallType_type;
extern entity* IFC4X3_RC1_IfcCurve_type;
extern entity* IFC4X3_RC1_IfcCurveBoundedPlane_type;
extern entity* IFC4X3_RC1_IfcCurveBoundedSurface_type;
extern entity* IFC4X3_RC1_IfcCurveSegment2D_type;
extern entity* IFC4X3_RC1_IfcCurveStyle_type;
extern entity* IFC4X3_RC1_IfcCurveStyleFont_type;
extern entity* IFC4X3_RC1_IfcCurveStyleFontAndScaling_type;
extern entity* IFC4X3_RC1_IfcCurveStyleFontPattern_type;
extern entity* IFC4X3_RC1_IfcCylindricalSurface_type;
extern entity* IFC4X3_RC1_IfcDamper_type;
extern entity* IFC4X3_RC1_IfcDamperType_type;
extern entity* IFC4X3_RC1_IfcDeepFoundation_type;
extern entity* IFC4X3_RC1_IfcDeepFoundationType_type;
extern entity* IFC4X3_RC1_IfcDerivedProfileDef_type;
extern entity* IFC4X3_RC1_IfcDerivedUnit_type;
extern entity* IFC4X3_RC1_IfcDerivedUnitElement_type;
extern entity* IFC4X3_RC1_IfcDimensionalExponents_type;
extern entity* IFC4X3_RC1_IfcDirection_type;
extern entity* IFC4X3_RC1_IfcDirectrixCurveSweptAreaSolid_type;
extern entity* IFC4X3_RC1_IfcDirectrixDistanceSweptAreaSolid_type;
extern entity* IFC4X3_RC1_IfcDiscreteAccessory_type;
extern entity* IFC4X3_RC1_IfcDiscreteAccessoryType_type;
extern entity* IFC4X3_RC1_IfcDistanceExpression_type;
extern entity* IFC4X3_RC1_IfcDistributionBoard_type;
extern entity* IFC4X3_RC1_IfcDistributionBoardType_type;
extern entity* IFC4X3_RC1_IfcDistributionChamberElement_type;
extern entity* IFC4X3_RC1_IfcDistributionChamberElementType_type;
extern entity* IFC4X3_RC1_IfcDistributionCircuit_type;
extern entity* IFC4X3_RC1_IfcDistributionControlElement_type;
extern entity* IFC4X3_RC1_IfcDistributionControlElementType_type;
extern entity* IFC4X3_RC1_IfcDistributionElement_type;
extern entity* IFC4X3_RC1_IfcDistributionElementType_type;
extern entity* IFC4X3_RC1_IfcDistributionFlowElement_type;
extern entity* IFC4X3_RC1_IfcDistributionFlowElementType_type;
extern entity* IFC4X3_RC1_IfcDistributionPort_type;
extern entity* IFC4X3_RC1_IfcDistributionSystem_type;
extern entity* IFC4X3_RC1_IfcDocumentInformation_type;
extern entity* IFC4X3_RC1_IfcDocumentInformationRelationship_type;
extern entity* IFC4X3_RC1_IfcDocumentReference_type;
extern entity* IFC4X3_RC1_IfcDoor_type;
extern entity* IFC4X3_RC1_IfcDoorLiningProperties_type;
extern entity* IFC4X3_RC1_IfcDoorPanelProperties_type;
extern entity* IFC4X3_RC1_IfcDoorStandardCase_type;
extern entity* IFC4X3_RC1_IfcDoorStyle_type;
extern entity* IFC4X3_RC1_IfcDoorType_type;
extern entity* IFC4X3_RC1_IfcDraughtingPreDefinedColour_type;
extern entity* IFC4X3_RC1_IfcDraughtingPreDefinedCurveFont_type;
extern entity* IFC4X3_RC1_IfcDuctFitting_type;
extern entity* IFC4X3_RC1_IfcDuctFittingType_type;
extern entity* IFC4X3_RC1_IfcDuctSegment_type;
extern entity* IFC4X3_RC1_IfcDuctSegmentType_type;
extern entity* IFC4X3_RC1_IfcDuctSilencer_type;
extern entity* IFC4X3_RC1_IfcDuctSilencerType_type;
extern entity* IFC4X3_RC1_IfcEarthworksCut_type;
extern entity* IFC4X3_RC1_IfcEarthworksElement_type;
extern entity* IFC4X3_RC1_IfcEarthworksFill_type;
extern entity* IFC4X3_RC1_IfcEdge_type;
extern entity* IFC4X3_RC1_IfcEdgeCurve_type;
extern entity* IFC4X3_RC1_IfcEdgeLoop_type;
extern entity* IFC4X3_RC1_IfcElectricAppliance_type;
extern entity* IFC4X3_RC1_IfcElectricApplianceType_type;
extern entity* IFC4X3_RC1_IfcElectricDistributionBoard_type;
extern entity* IFC4X3_RC1_IfcElectricDistributionBoardType_type;
extern entity* IFC4X3_RC1_IfcElectricFlowStorageDevice_type;
extern entity* IFC4X3_RC1_IfcElectricFlowStorageDeviceType_type;
extern entity* IFC4X3_RC1_IfcElectricFlowTreatmentDevice_type;
extern entity* IFC4X3_RC1_IfcElectricFlowTreatmentDeviceType_type;
extern entity* IFC4X3_RC1_IfcElectricGenerator_type;
extern entity* IFC4X3_RC1_IfcElectricGeneratorType_type;
extern entity* IFC4X3_RC1_IfcElectricMotor_type;
extern entity* IFC4X3_RC1_IfcElectricMotorType_type;
extern entity* IFC4X3_RC1_IfcElectricTimeControl_type;
extern entity* IFC4X3_RC1_IfcElectricTimeControlType_type;
extern entity* IFC4X3_RC1_IfcElement_type;
extern entity* IFC4X3_RC1_IfcElementAssembly_type;
extern entity* IFC4X3_RC1_IfcElementAssemblyType_type;
extern entity* IFC4X3_RC1_IfcElementComponent_type;
extern entity* IFC4X3_RC1_IfcElementComponentType_type;
extern entity* IFC4X3_RC1_IfcElementQuantity_type;
extern entity* IFC4X3_RC1_IfcElementType_type;
extern entity* IFC4X3_RC1_IfcElementarySurface_type;
extern entity* IFC4X3_RC1_IfcEllipse_type;
extern entity* IFC4X3_RC1_IfcEllipseProfileDef_type;
extern entity* IFC4X3_RC1_IfcEnergyConversionDevice_type;
extern entity* IFC4X3_RC1_IfcEnergyConversionDeviceType_type;
extern entity* IFC4X3_RC1_IfcEngine_type;
extern entity* IFC4X3_RC1_IfcEngineType_type;
extern entity* IFC4X3_RC1_IfcEvaporativeCooler_type;
extern entity* IFC4X3_RC1_IfcEvaporativeCoolerType_type;
extern entity* IFC4X3_RC1_IfcEvaporator_type;
extern entity* IFC4X3_RC1_IfcEvaporatorType_type;
extern entity* IFC4X3_RC1_IfcEvent_type;
extern entity* IFC4X3_RC1_IfcEventTime_type;
extern entity* IFC4X3_RC1_IfcEventType_type;
extern entity* IFC4X3_RC1_IfcExtendedProperties_type;
extern entity* IFC4X3_RC1_IfcExternalInformation_type;
extern entity* IFC4X3_RC1_IfcExternalReference_type;
extern entity* IFC4X3_RC1_IfcExternalReferenceRelationship_type;
extern entity* IFC4X3_RC1_IfcExternalSpatialElement_type;
extern entity* IFC4X3_RC1_IfcExternalSpatialStructureElement_type;
extern entity* IFC4X3_RC1_IfcExternallyDefinedHatchStyle_type;
extern entity* IFC4X3_RC1_IfcExternallyDefinedSurfaceStyle_type;
extern entity* IFC4X3_RC1_IfcExternallyDefinedTextFont_type;
extern entity* IFC4X3_RC1_IfcExtrudedAreaSolid_type;
extern entity* IFC4X3_RC1_IfcExtrudedAreaSolidTapered_type;
extern entity* IFC4X3_RC1_IfcFace_type;
extern entity* IFC4X3_RC1_IfcFaceBasedSurfaceModel_type;
extern entity* IFC4X3_RC1_IfcFaceBound_type;
extern entity* IFC4X3_RC1_IfcFaceOuterBound_type;
extern entity* IFC4X3_RC1_IfcFaceSurface_type;
extern entity* IFC4X3_RC1_IfcFacetedBrep_type;
extern entity* IFC4X3_RC1_IfcFacetedBrepWithVoids_type;
extern entity* IFC4X3_RC1_IfcFacility_type;
extern entity* IFC4X3_RC1_IfcFacilityPart_type;
extern entity* IFC4X3_RC1_IfcFailureConnectionCondition_type;
extern entity* IFC4X3_RC1_IfcFan_type;
extern entity* IFC4X3_RC1_IfcFanType_type;
extern entity* IFC4X3_RC1_IfcFastener_type;
extern entity* IFC4X3_RC1_IfcFastenerType_type;
extern entity* IFC4X3_RC1_IfcFeatureElement_type;
extern entity* IFC4X3_RC1_IfcFeatureElementAddition_type;
extern entity* IFC4X3_RC1_IfcFeatureElementSubtraction_type;
extern entity* IFC4X3_RC1_IfcFillAreaStyle_type;
extern entity* IFC4X3_RC1_IfcFillAreaStyleHatching_type;
extern entity* IFC4X3_RC1_IfcFillAreaStyleTiles_type;
extern entity* IFC4X3_RC1_IfcFilter_type;
extern entity* IFC4X3_RC1_IfcFilterType_type;
extern entity* IFC4X3_RC1_IfcFireSuppressionTerminal_type;
extern entity* IFC4X3_RC1_IfcFireSuppressionTerminalType_type;
extern entity* IFC4X3_RC1_IfcFixedReferenceSweptAreaSolid_type;
extern entity* IFC4X3_RC1_IfcFlowController_type;
extern entity* IFC4X3_RC1_IfcFlowControllerType_type;
extern entity* IFC4X3_RC1_IfcFlowFitting_type;
extern entity* IFC4X3_RC1_IfcFlowFittingType_type;
extern entity* IFC4X3_RC1_IfcFlowInstrument_type;
extern entity* IFC4X3_RC1_IfcFlowInstrumentType_type;
extern entity* IFC4X3_RC1_IfcFlowMeter_type;
extern entity* IFC4X3_RC1_IfcFlowMeterType_type;
extern entity* IFC4X3_RC1_IfcFlowMovingDevice_type;
extern entity* IFC4X3_RC1_IfcFlowMovingDeviceType_type;
extern entity* IFC4X3_RC1_IfcFlowSegment_type;
extern entity* IFC4X3_RC1_IfcFlowSegmentType_type;
extern entity* IFC4X3_RC1_IfcFlowStorageDevice_type;
extern entity* IFC4X3_RC1_IfcFlowStorageDeviceType_type;
extern entity* IFC4X3_RC1_IfcFlowTerminal_type;
extern entity* IFC4X3_RC1_IfcFlowTerminalType_type;
extern entity* IFC4X3_RC1_IfcFlowTreatmentDevice_type;
extern entity* IFC4X3_RC1_IfcFlowTreatmentDeviceType_type;
extern entity* IFC4X3_RC1_IfcFooting_type;
extern entity* IFC4X3_RC1_IfcFootingType_type;
extern entity* IFC4X3_RC1_IfcFurnishingElement_type;
extern entity* IFC4X3_RC1_IfcFurnishingElementType_type;
extern entity* IFC4X3_RC1_IfcFurniture_type;
extern entity* IFC4X3_RC1_IfcFurnitureType_type;
extern entity* IFC4X3_RC1_IfcGeographicElement_type;
extern entity* IFC4X3_RC1_IfcGeographicElementType_type;
extern entity* IFC4X3_RC1_IfcGeometricCurveSet_type;
extern entity* IFC4X3_RC1_IfcGeometricRepresentationContext_type;
extern entity* IFC4X3_RC1_IfcGeometricRepresentationItem_type;
extern entity* IFC4X3_RC1_IfcGeometricRepresentationSubContext_type;
extern entity* IFC4X3_RC1_IfcGeometricSet_type;
extern entity* IFC4X3_RC1_IfcGeomodel_type;
extern entity* IFC4X3_RC1_IfcGeoslice_type;
extern entity* IFC4X3_RC1_IfcGeotechnicalAssembly_type;
extern entity* IFC4X3_RC1_IfcGeotechnicalElement_type;
extern entity* IFC4X3_RC1_IfcGeotechnicalStratum_type;
extern entity* IFC4X3_RC1_IfcGrid_type;
extern entity* IFC4X3_RC1_IfcGridAxis_type;
extern entity* IFC4X3_RC1_IfcGridPlacement_type;
extern entity* IFC4X3_RC1_IfcGroup_type;
extern entity* IFC4X3_RC1_IfcHalfSpaceSolid_type;
extern entity* IFC4X3_RC1_IfcHeatExchanger_type;
extern entity* IFC4X3_RC1_IfcHeatExchangerType_type;
extern entity* IFC4X3_RC1_IfcHumidifier_type;
extern entity* IFC4X3_RC1_IfcHumidifierType_type;
extern entity* IFC4X3_RC1_IfcIShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcImageTexture_type;
extern entity* IFC4X3_RC1_IfcImpactProtectionDevice_type;
extern entity* IFC4X3_RC1_IfcImpactProtectionDeviceType_type;
extern entity* IFC4X3_RC1_IfcInclinedReferenceSweptAreaSolid_type;
extern entity* IFC4X3_RC1_IfcIndexedColourMap_type;
extern entity* IFC4X3_RC1_IfcIndexedPolyCurve_type;
extern entity* IFC4X3_RC1_IfcIndexedPolygonalFace_type;
extern entity* IFC4X3_RC1_IfcIndexedPolygonalFaceWithVoids_type;
extern entity* IFC4X3_RC1_IfcIndexedTextureMap_type;
extern entity* IFC4X3_RC1_IfcIndexedTriangleTextureMap_type;
extern entity* IFC4X3_RC1_IfcInterceptor_type;
extern entity* IFC4X3_RC1_IfcInterceptorType_type;
extern entity* IFC4X3_RC1_IfcIntersectionCurve_type;
extern entity* IFC4X3_RC1_IfcInventory_type;
extern entity* IFC4X3_RC1_IfcIrregularTimeSeries_type;
extern entity* IFC4X3_RC1_IfcIrregularTimeSeriesValue_type;
extern entity* IFC4X3_RC1_IfcJunctionBox_type;
extern entity* IFC4X3_RC1_IfcJunctionBoxType_type;
extern entity* IFC4X3_RC1_IfcKerb_type;
extern entity* IFC4X3_RC1_IfcKerbType_type;
extern entity* IFC4X3_RC1_IfcLShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcLaborResource_type;
extern entity* IFC4X3_RC1_IfcLaborResourceType_type;
extern entity* IFC4X3_RC1_IfcLagTime_type;
extern entity* IFC4X3_RC1_IfcLamp_type;
extern entity* IFC4X3_RC1_IfcLampType_type;
extern entity* IFC4X3_RC1_IfcLibraryInformation_type;
extern entity* IFC4X3_RC1_IfcLibraryReference_type;
extern entity* IFC4X3_RC1_IfcLightDistributionData_type;
extern entity* IFC4X3_RC1_IfcLightFixture_type;
extern entity* IFC4X3_RC1_IfcLightFixtureType_type;
extern entity* IFC4X3_RC1_IfcLightIntensityDistribution_type;
extern entity* IFC4X3_RC1_IfcLightSource_type;
extern entity* IFC4X3_RC1_IfcLightSourceAmbient_type;
extern entity* IFC4X3_RC1_IfcLightSourceDirectional_type;
extern entity* IFC4X3_RC1_IfcLightSourceGoniometric_type;
extern entity* IFC4X3_RC1_IfcLightSourcePositional_type;
extern entity* IFC4X3_RC1_IfcLightSourceSpot_type;
extern entity* IFC4X3_RC1_IfcLine_type;
extern entity* IFC4X3_RC1_IfcLineSegment2D_type;
extern entity* IFC4X3_RC1_IfcLinearAxisWithInclination_type;
extern entity* IFC4X3_RC1_IfcLinearPlacement_type;
extern entity* IFC4X3_RC1_IfcLinearPlacementWithInclination_type;
extern entity* IFC4X3_RC1_IfcLinearPositioningElement_type;
extern entity* IFC4X3_RC1_IfcLinearSpanPlacement_type;
extern entity* IFC4X3_RC1_IfcLiquidTerminal_type;
extern entity* IFC4X3_RC1_IfcLiquidTerminalType_type;
extern entity* IFC4X3_RC1_IfcLocalPlacement_type;
extern entity* IFC4X3_RC1_IfcLoop_type;
extern entity* IFC4X3_RC1_IfcManifoldSolidBrep_type;
extern entity* IFC4X3_RC1_IfcMapConversion_type;
extern entity* IFC4X3_RC1_IfcMappedItem_type;
extern entity* IFC4X3_RC1_IfcMarineFacility_type;
extern entity* IFC4X3_RC1_IfcMaterial_type;
extern entity* IFC4X3_RC1_IfcMaterialClassificationRelationship_type;
extern entity* IFC4X3_RC1_IfcMaterialConstituent_type;
extern entity* IFC4X3_RC1_IfcMaterialConstituentSet_type;
extern entity* IFC4X3_RC1_IfcMaterialDefinition_type;
extern entity* IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type;
extern entity* IFC4X3_RC1_IfcMaterialLayer_type;
extern entity* IFC4X3_RC1_IfcMaterialLayerSet_type;
extern entity* IFC4X3_RC1_IfcMaterialLayerSetUsage_type;
extern entity* IFC4X3_RC1_IfcMaterialLayerWithOffsets_type;
extern entity* IFC4X3_RC1_IfcMaterialList_type;
extern entity* IFC4X3_RC1_IfcMaterialProfile_type;
extern entity* IFC4X3_RC1_IfcMaterialProfileSet_type;
extern entity* IFC4X3_RC1_IfcMaterialProfileSetUsage_type;
extern entity* IFC4X3_RC1_IfcMaterialProfileSetUsageTapering_type;
extern entity* IFC4X3_RC1_IfcMaterialProfileWithOffsets_type;
extern entity* IFC4X3_RC1_IfcMaterialProperties_type;
extern entity* IFC4X3_RC1_IfcMaterialRelationship_type;
extern entity* IFC4X3_RC1_IfcMaterialUsageDefinition_type;
extern entity* IFC4X3_RC1_IfcMeasureWithUnit_type;
extern entity* IFC4X3_RC1_IfcMechanicalFastener_type;
extern entity* IFC4X3_RC1_IfcMechanicalFastenerType_type;
extern entity* IFC4X3_RC1_IfcMedicalDevice_type;
extern entity* IFC4X3_RC1_IfcMedicalDeviceType_type;
extern entity* IFC4X3_RC1_IfcMember_type;
extern entity* IFC4X3_RC1_IfcMemberStandardCase_type;
extern entity* IFC4X3_RC1_IfcMemberType_type;
extern entity* IFC4X3_RC1_IfcMetric_type;
extern entity* IFC4X3_RC1_IfcMirroredProfileDef_type;
extern entity* IFC4X3_RC1_IfcMobileTelecommunicationsAppliance_type;
extern entity* IFC4X3_RC1_IfcMobileTelecommunicationsApplianceType_type;
extern entity* IFC4X3_RC1_IfcMonetaryUnit_type;
extern entity* IFC4X3_RC1_IfcMooringDevice_type;
extern entity* IFC4X3_RC1_IfcMooringDeviceType_type;
extern entity* IFC4X3_RC1_IfcMotorConnection_type;
extern entity* IFC4X3_RC1_IfcMotorConnectionType_type;
extern entity* IFC4X3_RC1_IfcNamedUnit_type;
extern entity* IFC4X3_RC1_IfcNavigationElement_type;
extern entity* IFC4X3_RC1_IfcNavigationElementType_type;
extern entity* IFC4X3_RC1_IfcObject_type;
extern entity* IFC4X3_RC1_IfcObjectDefinition_type;
extern entity* IFC4X3_RC1_IfcObjectPlacement_type;
extern entity* IFC4X3_RC1_IfcObjective_type;
extern entity* IFC4X3_RC1_IfcOccupant_type;
extern entity* IFC4X3_RC1_IfcOffsetCurve_type;
extern entity* IFC4X3_RC1_IfcOffsetCurve2D_type;
extern entity* IFC4X3_RC1_IfcOffsetCurve3D_type;
extern entity* IFC4X3_RC1_IfcOffsetCurveByDistances_type;
extern entity* IFC4X3_RC1_IfcOpenCrossProfileDef_type;
extern entity* IFC4X3_RC1_IfcOpenShell_type;
extern entity* IFC4X3_RC1_IfcOpeningElement_type;
extern entity* IFC4X3_RC1_IfcOpeningStandardCase_type;
extern entity* IFC4X3_RC1_IfcOrganization_type;
extern entity* IFC4X3_RC1_IfcOrganizationRelationship_type;
extern entity* IFC4X3_RC1_IfcOrientationExpression_type;
extern entity* IFC4X3_RC1_IfcOrientedEdge_type;
extern entity* IFC4X3_RC1_IfcOuterBoundaryCurve_type;
extern entity* IFC4X3_RC1_IfcOutlet_type;
extern entity* IFC4X3_RC1_IfcOutletType_type;
extern entity* IFC4X3_RC1_IfcOwnerHistory_type;
extern entity* IFC4X3_RC1_IfcParameterizedProfileDef_type;
extern entity* IFC4X3_RC1_IfcPath_type;
extern entity* IFC4X3_RC1_IfcPavement_type;
extern entity* IFC4X3_RC1_IfcPavementType_type;
extern entity* IFC4X3_RC1_IfcPcurve_type;
extern entity* IFC4X3_RC1_IfcPerformanceHistory_type;
extern entity* IFC4X3_RC1_IfcPermeableCoveringProperties_type;
extern entity* IFC4X3_RC1_IfcPermit_type;
extern entity* IFC4X3_RC1_IfcPerson_type;
extern entity* IFC4X3_RC1_IfcPersonAndOrganization_type;
extern entity* IFC4X3_RC1_IfcPhysicalComplexQuantity_type;
extern entity* IFC4X3_RC1_IfcPhysicalQuantity_type;
extern entity* IFC4X3_RC1_IfcPhysicalSimpleQuantity_type;
extern entity* IFC4X3_RC1_IfcPile_type;
extern entity* IFC4X3_RC1_IfcPileType_type;
extern entity* IFC4X3_RC1_IfcPipeFitting_type;
extern entity* IFC4X3_RC1_IfcPipeFittingType_type;
extern entity* IFC4X3_RC1_IfcPipeSegment_type;
extern entity* IFC4X3_RC1_IfcPipeSegmentType_type;
extern entity* IFC4X3_RC1_IfcPixelTexture_type;
extern entity* IFC4X3_RC1_IfcPlacement_type;
extern entity* IFC4X3_RC1_IfcPlanarBox_type;
extern entity* IFC4X3_RC1_IfcPlanarExtent_type;
extern entity* IFC4X3_RC1_IfcPlane_type;
extern entity* IFC4X3_RC1_IfcPlant_type;
extern entity* IFC4X3_RC1_IfcPlate_type;
extern entity* IFC4X3_RC1_IfcPlateStandardCase_type;
extern entity* IFC4X3_RC1_IfcPlateType_type;
extern entity* IFC4X3_RC1_IfcPoint_type;
extern entity* IFC4X3_RC1_IfcPointOnCurve_type;
extern entity* IFC4X3_RC1_IfcPointOnSurface_type;
extern entity* IFC4X3_RC1_IfcPolyLoop_type;
extern entity* IFC4X3_RC1_IfcPolygonalBoundedHalfSpace_type;
extern entity* IFC4X3_RC1_IfcPolygonalFaceSet_type;
extern entity* IFC4X3_RC1_IfcPolyline_type;
extern entity* IFC4X3_RC1_IfcPort_type;
extern entity* IFC4X3_RC1_IfcPositioningElement_type;
extern entity* IFC4X3_RC1_IfcPostalAddress_type;
extern entity* IFC4X3_RC1_IfcPreDefinedColour_type;
extern entity* IFC4X3_RC1_IfcPreDefinedCurveFont_type;
extern entity* IFC4X3_RC1_IfcPreDefinedItem_type;
extern entity* IFC4X3_RC1_IfcPreDefinedProperties_type;
extern entity* IFC4X3_RC1_IfcPreDefinedPropertySet_type;
extern entity* IFC4X3_RC1_IfcPreDefinedTextFont_type;
extern entity* IFC4X3_RC1_IfcPresentationItem_type;
extern entity* IFC4X3_RC1_IfcPresentationLayerAssignment_type;
extern entity* IFC4X3_RC1_IfcPresentationLayerWithStyle_type;
extern entity* IFC4X3_RC1_IfcPresentationStyle_type;
extern entity* IFC4X3_RC1_IfcPresentationStyleAssignment_type;
extern entity* IFC4X3_RC1_IfcProcedure_type;
extern entity* IFC4X3_RC1_IfcProcedureType_type;
extern entity* IFC4X3_RC1_IfcProcess_type;
extern entity* IFC4X3_RC1_IfcProduct_type;
extern entity* IFC4X3_RC1_IfcProductDefinitionShape_type;
extern entity* IFC4X3_RC1_IfcProductRepresentation_type;
extern entity* IFC4X3_RC1_IfcProfileDef_type;
extern entity* IFC4X3_RC1_IfcProfileProperties_type;
extern entity* IFC4X3_RC1_IfcProject_type;
extern entity* IFC4X3_RC1_IfcProjectLibrary_type;
extern entity* IFC4X3_RC1_IfcProjectOrder_type;
extern entity* IFC4X3_RC1_IfcProjectedCRS_type;
extern entity* IFC4X3_RC1_IfcProjectionElement_type;
extern entity* IFC4X3_RC1_IfcProperty_type;
extern entity* IFC4X3_RC1_IfcPropertyAbstraction_type;
extern entity* IFC4X3_RC1_IfcPropertyBoundedValue_type;
extern entity* IFC4X3_RC1_IfcPropertyDefinition_type;
extern entity* IFC4X3_RC1_IfcPropertyDependencyRelationship_type;
extern entity* IFC4X3_RC1_IfcPropertyEnumeratedValue_type;
extern entity* IFC4X3_RC1_IfcPropertyEnumeration_type;
extern entity* IFC4X3_RC1_IfcPropertyListValue_type;
extern entity* IFC4X3_RC1_IfcPropertyReferenceValue_type;
extern entity* IFC4X3_RC1_IfcPropertySet_type;
extern entity* IFC4X3_RC1_IfcPropertySetDefinition_type;
extern entity* IFC4X3_RC1_IfcPropertySetTemplate_type;
extern entity* IFC4X3_RC1_IfcPropertySingleValue_type;
extern entity* IFC4X3_RC1_IfcPropertyTableValue_type;
extern entity* IFC4X3_RC1_IfcPropertyTemplate_type;
extern entity* IFC4X3_RC1_IfcPropertyTemplateDefinition_type;
extern entity* IFC4X3_RC1_IfcProtectiveDevice_type;
extern entity* IFC4X3_RC1_IfcProtectiveDeviceTrippingUnit_type;
extern entity* IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitType_type;
extern entity* IFC4X3_RC1_IfcProtectiveDeviceType_type;
extern entity* IFC4X3_RC1_IfcProxy_type;
extern entity* IFC4X3_RC1_IfcPump_type;
extern entity* IFC4X3_RC1_IfcPumpType_type;
extern entity* IFC4X3_RC1_IfcQuantityArea_type;
extern entity* IFC4X3_RC1_IfcQuantityCount_type;
extern entity* IFC4X3_RC1_IfcQuantityLength_type;
extern entity* IFC4X3_RC1_IfcQuantitySet_type;
extern entity* IFC4X3_RC1_IfcQuantityTime_type;
extern entity* IFC4X3_RC1_IfcQuantityVolume_type;
extern entity* IFC4X3_RC1_IfcQuantityWeight_type;
extern entity* IFC4X3_RC1_IfcRail_type;
extern entity* IFC4X3_RC1_IfcRailType_type;
extern entity* IFC4X3_RC1_IfcRailing_type;
extern entity* IFC4X3_RC1_IfcRailingType_type;
extern entity* IFC4X3_RC1_IfcRailway_type;
extern entity* IFC4X3_RC1_IfcRamp_type;
extern entity* IFC4X3_RC1_IfcRampFlight_type;
extern entity* IFC4X3_RC1_IfcRampFlightType_type;
extern entity* IFC4X3_RC1_IfcRampType_type;
extern entity* IFC4X3_RC1_IfcRationalBSplineCurveWithKnots_type;
extern entity* IFC4X3_RC1_IfcRationalBSplineSurfaceWithKnots_type;
extern entity* IFC4X3_RC1_IfcRectangleHollowProfileDef_type;
extern entity* IFC4X3_RC1_IfcRectangleProfileDef_type;
extern entity* IFC4X3_RC1_IfcRectangularPyramid_type;
extern entity* IFC4X3_RC1_IfcRectangularTrimmedSurface_type;
extern entity* IFC4X3_RC1_IfcRecurrencePattern_type;
extern entity* IFC4X3_RC1_IfcReference_type;
extern entity* IFC4X3_RC1_IfcReferent_type;
extern entity* IFC4X3_RC1_IfcRegularTimeSeries_type;
extern entity* IFC4X3_RC1_IfcReinforcedSoil_type;
extern entity* IFC4X3_RC1_IfcReinforcementBarProperties_type;
extern entity* IFC4X3_RC1_IfcReinforcementDefinitionProperties_type;
extern entity* IFC4X3_RC1_IfcReinforcingBar_type;
extern entity* IFC4X3_RC1_IfcReinforcingBarType_type;
extern entity* IFC4X3_RC1_IfcReinforcingElement_type;
extern entity* IFC4X3_RC1_IfcReinforcingElementType_type;
extern entity* IFC4X3_RC1_IfcReinforcingMesh_type;
extern entity* IFC4X3_RC1_IfcReinforcingMeshType_type;
extern entity* IFC4X3_RC1_IfcRelAggregates_type;
extern entity* IFC4X3_RC1_IfcRelAssigns_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToActor_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToControl_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToGroup_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToGroupByFactor_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToProcess_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToProduct_type;
extern entity* IFC4X3_RC1_IfcRelAssignsToResource_type;
extern entity* IFC4X3_RC1_IfcRelAssociates_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesApproval_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesClassification_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesConstraint_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesDocument_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesLibrary_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesMaterial_type;
extern entity* IFC4X3_RC1_IfcRelAssociatesProfileDef_type;
extern entity* IFC4X3_RC1_IfcRelConnects_type;
extern entity* IFC4X3_RC1_IfcRelConnectsElements_type;
extern entity* IFC4X3_RC1_IfcRelConnectsPathElements_type;
extern entity* IFC4X3_RC1_IfcRelConnectsPortToElement_type;
extern entity* IFC4X3_RC1_IfcRelConnectsPorts_type;
extern entity* IFC4X3_RC1_IfcRelConnectsStructuralActivity_type;
extern entity* IFC4X3_RC1_IfcRelConnectsStructuralMember_type;
extern entity* IFC4X3_RC1_IfcRelConnectsWithEccentricity_type;
extern entity* IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type;
extern entity* IFC4X3_RC1_IfcRelContainedInSpatialStructure_type;
extern entity* IFC4X3_RC1_IfcRelCoversBldgElements_type;
extern entity* IFC4X3_RC1_IfcRelCoversSpaces_type;
extern entity* IFC4X3_RC1_IfcRelDeclares_type;
extern entity* IFC4X3_RC1_IfcRelDecomposes_type;
extern entity* IFC4X3_RC1_IfcRelDefines_type;
extern entity* IFC4X3_RC1_IfcRelDefinesByObject_type;
extern entity* IFC4X3_RC1_IfcRelDefinesByProperties_type;
extern entity* IFC4X3_RC1_IfcRelDefinesByTemplate_type;
extern entity* IFC4X3_RC1_IfcRelDefinesByType_type;
extern entity* IFC4X3_RC1_IfcRelFillsElement_type;
extern entity* IFC4X3_RC1_IfcRelFlowControlElements_type;
extern entity* IFC4X3_RC1_IfcRelInterferesElements_type;
extern entity* IFC4X3_RC1_IfcRelNests_type;
extern entity* IFC4X3_RC1_IfcRelPositions_type;
extern entity* IFC4X3_RC1_IfcRelProjectsElement_type;
extern entity* IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type;
extern entity* IFC4X3_RC1_IfcRelSequence_type;
extern entity* IFC4X3_RC1_IfcRelServicesBuildings_type;
extern entity* IFC4X3_RC1_IfcRelSpaceBoundary_type;
extern entity* IFC4X3_RC1_IfcRelSpaceBoundary1stLevel_type;
extern entity* IFC4X3_RC1_IfcRelSpaceBoundary2ndLevel_type;
extern entity* IFC4X3_RC1_IfcRelVoidsElement_type;
extern entity* IFC4X3_RC1_IfcRelationship_type;
extern entity* IFC4X3_RC1_IfcReparametrisedCompositeCurveSegment_type;
extern entity* IFC4X3_RC1_IfcRepresentation_type;
extern entity* IFC4X3_RC1_IfcRepresentationContext_type;
extern entity* IFC4X3_RC1_IfcRepresentationItem_type;
extern entity* IFC4X3_RC1_IfcRepresentationMap_type;
extern entity* IFC4X3_RC1_IfcResource_type;
extern entity* IFC4X3_RC1_IfcResourceApprovalRelationship_type;
extern entity* IFC4X3_RC1_IfcResourceConstraintRelationship_type;
extern entity* IFC4X3_RC1_IfcResourceLevelRelationship_type;
extern entity* IFC4X3_RC1_IfcResourceTime_type;
extern entity* IFC4X3_RC1_IfcRevolvedAreaSolid_type;
extern entity* IFC4X3_RC1_IfcRevolvedAreaSolidTapered_type;
extern entity* IFC4X3_RC1_IfcRightCircularCone_type;
extern entity* IFC4X3_RC1_IfcRightCircularCylinder_type;
extern entity* IFC4X3_RC1_IfcRoad_type;
extern entity* IFC4X3_RC1_IfcRoof_type;
extern entity* IFC4X3_RC1_IfcRoofType_type;
extern entity* IFC4X3_RC1_IfcRoot_type;
extern entity* IFC4X3_RC1_IfcRoundedRectangleProfileDef_type;
extern entity* IFC4X3_RC1_IfcSIUnit_type;
extern entity* IFC4X3_RC1_IfcSanitaryTerminal_type;
extern entity* IFC4X3_RC1_IfcSanitaryTerminalType_type;
extern entity* IFC4X3_RC1_IfcSchedulingTime_type;
extern entity* IFC4X3_RC1_IfcSeamCurve_type;
extern entity* IFC4X3_RC1_IfcSectionProperties_type;
extern entity* IFC4X3_RC1_IfcSectionReinforcementProperties_type;
extern entity* IFC4X3_RC1_IfcSectionedSolid_type;
extern entity* IFC4X3_RC1_IfcSectionedSolidHorizontal_type;
extern entity* IFC4X3_RC1_IfcSectionedSpine_type;
extern entity* IFC4X3_RC1_IfcSectionedSurface_type;
extern entity* IFC4X3_RC1_IfcSensor_type;
extern entity* IFC4X3_RC1_IfcSensorType_type;
extern entity* IFC4X3_RC1_IfcShadingDevice_type;
extern entity* IFC4X3_RC1_IfcShadingDeviceType_type;
extern entity* IFC4X3_RC1_IfcShapeAspect_type;
extern entity* IFC4X3_RC1_IfcShapeModel_type;
extern entity* IFC4X3_RC1_IfcShapeRepresentation_type;
extern entity* IFC4X3_RC1_IfcShellBasedSurfaceModel_type;
extern entity* IFC4X3_RC1_IfcSign_type;
extern entity* IFC4X3_RC1_IfcSignType_type;
extern entity* IFC4X3_RC1_IfcSignal_type;
extern entity* IFC4X3_RC1_IfcSignalType_type;
extern entity* IFC4X3_RC1_IfcSimpleProperty_type;
extern entity* IFC4X3_RC1_IfcSimplePropertyTemplate_type;
extern entity* IFC4X3_RC1_IfcSite_type;
extern entity* IFC4X3_RC1_IfcSlab_type;
extern entity* IFC4X3_RC1_IfcSlabElementedCase_type;
extern entity* IFC4X3_RC1_IfcSlabStandardCase_type;
extern entity* IFC4X3_RC1_IfcSlabType_type;
extern entity* IFC4X3_RC1_IfcSlippageConnectionCondition_type;
extern entity* IFC4X3_RC1_IfcSolarDevice_type;
extern entity* IFC4X3_RC1_IfcSolarDeviceType_type;
extern entity* IFC4X3_RC1_IfcSolidModel_type;
extern entity* IFC4X3_RC1_IfcSolidStratum_type;
extern entity* IFC4X3_RC1_IfcSpace_type;
extern entity* IFC4X3_RC1_IfcSpaceHeater_type;
extern entity* IFC4X3_RC1_IfcSpaceHeaterType_type;
extern entity* IFC4X3_RC1_IfcSpaceType_type;
extern entity* IFC4X3_RC1_IfcSpatialElement_type;
extern entity* IFC4X3_RC1_IfcSpatialElementType_type;
extern entity* IFC4X3_RC1_IfcSpatialStructureElement_type;
extern entity* IFC4X3_RC1_IfcSpatialStructureElementType_type;
extern entity* IFC4X3_RC1_IfcSpatialZone_type;
extern entity* IFC4X3_RC1_IfcSpatialZoneType_type;
extern entity* IFC4X3_RC1_IfcSphere_type;
extern entity* IFC4X3_RC1_IfcSphericalSurface_type;
extern entity* IFC4X3_RC1_IfcStackTerminal_type;
extern entity* IFC4X3_RC1_IfcStackTerminalType_type;
extern entity* IFC4X3_RC1_IfcStair_type;
extern entity* IFC4X3_RC1_IfcStairFlight_type;
extern entity* IFC4X3_RC1_IfcStairFlightType_type;
extern entity* IFC4X3_RC1_IfcStairType_type;
extern entity* IFC4X3_RC1_IfcStructuralAction_type;
extern entity* IFC4X3_RC1_IfcStructuralActivity_type;
extern entity* IFC4X3_RC1_IfcStructuralAnalysisModel_type;
extern entity* IFC4X3_RC1_IfcStructuralConnection_type;
extern entity* IFC4X3_RC1_IfcStructuralConnectionCondition_type;
extern entity* IFC4X3_RC1_IfcStructuralCurveAction_type;
extern entity* IFC4X3_RC1_IfcStructuralCurveConnection_type;
extern entity* IFC4X3_RC1_IfcStructuralCurveMember_type;
extern entity* IFC4X3_RC1_IfcStructuralCurveMemberVarying_type;
extern entity* IFC4X3_RC1_IfcStructuralCurveReaction_type;
extern entity* IFC4X3_RC1_IfcStructuralItem_type;
extern entity* IFC4X3_RC1_IfcStructuralLinearAction_type;
extern entity* IFC4X3_RC1_IfcStructuralLoad_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadCase_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadConfiguration_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadGroup_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadLinearForce_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadOrResult_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadPlanarForce_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadSingleDisplacement_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadSingleDisplacementDistortion_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadSingleForce_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadSingleForceWarping_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadStatic_type;
extern entity* IFC4X3_RC1_IfcStructuralLoadTemperature_type;
extern entity* IFC4X3_RC1_IfcStructuralMember_type;
extern entity* IFC4X3_RC1_IfcStructuralPlanarAction_type;
extern entity* IFC4X3_RC1_IfcStructuralPointAction_type;
extern entity* IFC4X3_RC1_IfcStructuralPointConnection_type;
extern entity* IFC4X3_RC1_IfcStructuralPointReaction_type;
extern entity* IFC4X3_RC1_IfcStructuralReaction_type;
extern entity* IFC4X3_RC1_IfcStructuralResultGroup_type;
extern entity* IFC4X3_RC1_IfcStructuralSurfaceAction_type;
extern entity* IFC4X3_RC1_IfcStructuralSurfaceConnection_type;
extern entity* IFC4X3_RC1_IfcStructuralSurfaceMember_type;
extern entity* IFC4X3_RC1_IfcStructuralSurfaceMemberVarying_type;
extern entity* IFC4X3_RC1_IfcStructuralSurfaceReaction_type;
extern entity* IFC4X3_RC1_IfcStyleModel_type;
extern entity* IFC4X3_RC1_IfcStyledItem_type;
extern entity* IFC4X3_RC1_IfcStyledRepresentation_type;
extern entity* IFC4X3_RC1_IfcSubContractResource_type;
extern entity* IFC4X3_RC1_IfcSubContractResourceType_type;
extern entity* IFC4X3_RC1_IfcSubedge_type;
extern entity* IFC4X3_RC1_IfcSurface_type;
extern entity* IFC4X3_RC1_IfcSurfaceCurve_type;
extern entity* IFC4X3_RC1_IfcSurfaceCurveSweptAreaSolid_type;
extern entity* IFC4X3_RC1_IfcSurfaceFeature_type;
extern entity* IFC4X3_RC1_IfcSurfaceOfLinearExtrusion_type;
extern entity* IFC4X3_RC1_IfcSurfaceOfRevolution_type;
extern entity* IFC4X3_RC1_IfcSurfaceReinforcementArea_type;
extern entity* IFC4X3_RC1_IfcSurfaceStyle_type;
extern entity* IFC4X3_RC1_IfcSurfaceStyleLighting_type;
extern entity* IFC4X3_RC1_IfcSurfaceStyleRefraction_type;
extern entity* IFC4X3_RC1_IfcSurfaceStyleRendering_type;
extern entity* IFC4X3_RC1_IfcSurfaceStyleShading_type;
extern entity* IFC4X3_RC1_IfcSurfaceStyleWithTextures_type;
extern entity* IFC4X3_RC1_IfcSurfaceTexture_type;
extern entity* IFC4X3_RC1_IfcSweptAreaSolid_type;
extern entity* IFC4X3_RC1_IfcSweptDiskSolid_type;
extern entity* IFC4X3_RC1_IfcSweptDiskSolidPolygonal_type;
extern entity* IFC4X3_RC1_IfcSweptSurface_type;
extern entity* IFC4X3_RC1_IfcSwitchingDevice_type;
extern entity* IFC4X3_RC1_IfcSwitchingDeviceType_type;
extern entity* IFC4X3_RC1_IfcSystem_type;
extern entity* IFC4X3_RC1_IfcSystemFurnitureElement_type;
extern entity* IFC4X3_RC1_IfcSystemFurnitureElementType_type;
extern entity* IFC4X3_RC1_IfcTShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcTable_type;
extern entity* IFC4X3_RC1_IfcTableColumn_type;
extern entity* IFC4X3_RC1_IfcTableRow_type;
extern entity* IFC4X3_RC1_IfcTank_type;
extern entity* IFC4X3_RC1_IfcTankType_type;
extern entity* IFC4X3_RC1_IfcTask_type;
extern entity* IFC4X3_RC1_IfcTaskTime_type;
extern entity* IFC4X3_RC1_IfcTaskTimeRecurring_type;
extern entity* IFC4X3_RC1_IfcTaskType_type;
extern entity* IFC4X3_RC1_IfcTelecomAddress_type;
extern entity* IFC4X3_RC1_IfcTendon_type;
extern entity* IFC4X3_RC1_IfcTendonAnchor_type;
extern entity* IFC4X3_RC1_IfcTendonAnchorType_type;
extern entity* IFC4X3_RC1_IfcTendonConduit_type;
extern entity* IFC4X3_RC1_IfcTendonConduitType_type;
extern entity* IFC4X3_RC1_IfcTendonType_type;
extern entity* IFC4X3_RC1_IfcTessellatedFaceSet_type;
extern entity* IFC4X3_RC1_IfcTessellatedItem_type;
extern entity* IFC4X3_RC1_IfcTextLiteral_type;
extern entity* IFC4X3_RC1_IfcTextLiteralWithExtent_type;
extern entity* IFC4X3_RC1_IfcTextStyle_type;
extern entity* IFC4X3_RC1_IfcTextStyleFontModel_type;
extern entity* IFC4X3_RC1_IfcTextStyleForDefinedFont_type;
extern entity* IFC4X3_RC1_IfcTextStyleTextModel_type;
extern entity* IFC4X3_RC1_IfcTextureCoordinate_type;
extern entity* IFC4X3_RC1_IfcTextureCoordinateGenerator_type;
extern entity* IFC4X3_RC1_IfcTextureMap_type;
extern entity* IFC4X3_RC1_IfcTextureVertex_type;
extern entity* IFC4X3_RC1_IfcTextureVertexList_type;
extern entity* IFC4X3_RC1_IfcTimePeriod_type;
extern entity* IFC4X3_RC1_IfcTimeSeries_type;
extern entity* IFC4X3_RC1_IfcTimeSeriesValue_type;
extern entity* IFC4X3_RC1_IfcTopologicalRepresentationItem_type;
extern entity* IFC4X3_RC1_IfcTopologyRepresentation_type;
extern entity* IFC4X3_RC1_IfcToroidalSurface_type;
extern entity* IFC4X3_RC1_IfcTrackElement_type;
extern entity* IFC4X3_RC1_IfcTrackElementType_type;
extern entity* IFC4X3_RC1_IfcTransformer_type;
extern entity* IFC4X3_RC1_IfcTransformerType_type;
extern entity* IFC4X3_RC1_IfcTransitionCurveSegment2D_type;
extern entity* IFC4X3_RC1_IfcTransportElement_type;
extern entity* IFC4X3_RC1_IfcTransportElementType_type;
extern entity* IFC4X3_RC1_IfcTrapeziumProfileDef_type;
extern entity* IFC4X3_RC1_IfcTriangulatedFaceSet_type;
extern entity* IFC4X3_RC1_IfcTriangulatedIrregularNetwork_type;
extern entity* IFC4X3_RC1_IfcTrimmedCurve_type;
extern entity* IFC4X3_RC1_IfcTubeBundle_type;
extern entity* IFC4X3_RC1_IfcTubeBundleType_type;
extern entity* IFC4X3_RC1_IfcTypeObject_type;
extern entity* IFC4X3_RC1_IfcTypeProcess_type;
extern entity* IFC4X3_RC1_IfcTypeProduct_type;
extern entity* IFC4X3_RC1_IfcTypeResource_type;
extern entity* IFC4X3_RC1_IfcUShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcUnitAssignment_type;
extern entity* IFC4X3_RC1_IfcUnitaryControlElement_type;
extern entity* IFC4X3_RC1_IfcUnitaryControlElementType_type;
extern entity* IFC4X3_RC1_IfcUnitaryEquipment_type;
extern entity* IFC4X3_RC1_IfcUnitaryEquipmentType_type;
extern entity* IFC4X3_RC1_IfcValve_type;
extern entity* IFC4X3_RC1_IfcValveType_type;
extern entity* IFC4X3_RC1_IfcVector_type;
extern entity* IFC4X3_RC1_IfcVertex_type;
extern entity* IFC4X3_RC1_IfcVertexLoop_type;
extern entity* IFC4X3_RC1_IfcVertexPoint_type;
extern entity* IFC4X3_RC1_IfcVibrationDamper_type;
extern entity* IFC4X3_RC1_IfcVibrationDamperType_type;
extern entity* IFC4X3_RC1_IfcVibrationIsolator_type;
extern entity* IFC4X3_RC1_IfcVibrationIsolatorType_type;
extern entity* IFC4X3_RC1_IfcVirtualElement_type;
extern entity* IFC4X3_RC1_IfcVirtualGridIntersection_type;
extern entity* IFC4X3_RC1_IfcVoidStratum_type;
extern entity* IFC4X3_RC1_IfcVoidingFeature_type;
extern entity* IFC4X3_RC1_IfcWall_type;
extern entity* IFC4X3_RC1_IfcWallElementedCase_type;
extern entity* IFC4X3_RC1_IfcWallStandardCase_type;
extern entity* IFC4X3_RC1_IfcWallType_type;
extern entity* IFC4X3_RC1_IfcWasteTerminal_type;
extern entity* IFC4X3_RC1_IfcWasteTerminalType_type;
extern entity* IFC4X3_RC1_IfcWaterStratum_type;
extern entity* IFC4X3_RC1_IfcWindow_type;
extern entity* IFC4X3_RC1_IfcWindowLiningProperties_type;
extern entity* IFC4X3_RC1_IfcWindowPanelProperties_type;
extern entity* IFC4X3_RC1_IfcWindowStandardCase_type;
extern entity* IFC4X3_RC1_IfcWindowStyle_type;
extern entity* IFC4X3_RC1_IfcWindowType_type;
extern entity* IFC4X3_RC1_IfcWorkCalendar_type;
extern entity* IFC4X3_RC1_IfcWorkControl_type;
extern entity* IFC4X3_RC1_IfcWorkPlan_type;
extern entity* IFC4X3_RC1_IfcWorkSchedule_type;
extern entity* IFC4X3_RC1_IfcWorkTime_type;
extern entity* IFC4X3_RC1_IfcZShapeProfileDef_type;
extern entity* IFC4X3_RC1_IfcZone_type;
extern type_declaration* IFC4X3_RC1_IfcAbsorbedDoseMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcAccelerationMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcAmountOfSubstanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcAngularVelocityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcArcIndex_type;
extern type_declaration* IFC4X3_RC1_IfcAreaDensityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcAreaMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcBinary_type;
extern type_declaration* IFC4X3_RC1_IfcBoolean_type;
extern type_declaration* IFC4X3_RC1_IfcBoxAlignment_type;
extern type_declaration* IFC4X3_RC1_IfcCardinalPointReference_type;
extern type_declaration* IFC4X3_RC1_IfcComplexNumber_type;
extern type_declaration* IFC4X3_RC1_IfcCompoundPlaneAngleMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcContextDependentMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcCountMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcCurvatureMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcDate_type;
extern type_declaration* IFC4X3_RC1_IfcDateTime_type;
extern type_declaration* IFC4X3_RC1_IfcDayInMonthNumber_type;
extern type_declaration* IFC4X3_RC1_IfcDayInWeekNumber_type;
extern type_declaration* IFC4X3_RC1_IfcDescriptiveMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcDimensionCount_type;
extern type_declaration* IFC4X3_RC1_IfcDoseEquivalentMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcDuration_type;
extern type_declaration* IFC4X3_RC1_IfcDynamicViscosityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcElectricCapacitanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcElectricChargeMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcElectricConductanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcElectricCurrentMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcElectricResistanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcElectricVoltageMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcEnergyMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcFontStyle_type;
extern type_declaration* IFC4X3_RC1_IfcFontVariant_type;
extern type_declaration* IFC4X3_RC1_IfcFontWeight_type;
extern type_declaration* IFC4X3_RC1_IfcForceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcFrequencyMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcGloballyUniqueId_type;
extern type_declaration* IFC4X3_RC1_IfcHeatFluxDensityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcHeatingValueMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcIdentifier_type;
extern type_declaration* IFC4X3_RC1_IfcIlluminanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcInductanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcInteger_type;
extern type_declaration* IFC4X3_RC1_IfcIntegerCountRateMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcIonConcentrationMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcIsothermalMoistureCapacityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcKinematicViscosityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLabel_type;
extern type_declaration* IFC4X3_RC1_IfcLanguageId_type;
extern type_declaration* IFC4X3_RC1_IfcLengthMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLineIndex_type;
extern type_declaration* IFC4X3_RC1_IfcLinearForceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLinearMomentMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLinearStiffnessMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLinearVelocityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLogical_type;
extern type_declaration* IFC4X3_RC1_IfcLuminousFluxMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLuminousIntensityDistributionMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcLuminousIntensityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMagneticFluxDensityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMagneticFluxMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMassDensityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMassFlowRateMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMassMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMassPerLengthMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcModulusOfElasticityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcModulusOfLinearSubgradeReactionMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcModulusOfRotationalSubgradeReactionMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcModulusOfSubgradeReactionMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMoistureDiffusivityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMolecularWeightMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMomentOfInertiaMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMonetaryMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcMonthInYearNumber_type;
extern type_declaration* IFC4X3_RC1_IfcNonNegativeLengthMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcNormalisedRatioMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcNumericMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPHMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcParameterValue_type;
extern type_declaration* IFC4X3_RC1_IfcPlanarForceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPlaneAngleMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPositiveInteger_type;
extern type_declaration* IFC4X3_RC1_IfcPositiveLengthMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPositivePlaneAngleMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPositiveRatioMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPowerMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPresentableText_type;
extern type_declaration* IFC4X3_RC1_IfcPressureMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcPropertySetDefinitionSet_type;
extern type_declaration* IFC4X3_RC1_IfcRadioActivityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcRatioMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcReal_type;
extern type_declaration* IFC4X3_RC1_IfcRotationalFrequencyMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcRotationalMassMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcRotationalStiffnessMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSectionModulusMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSectionalAreaIntegralMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcShearModulusMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSolidAngleMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSoundPowerLevelMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSoundPowerMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSoundPressureLevelMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSoundPressureMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSpecificHeatCapacityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcSpecularExponent_type;
extern type_declaration* IFC4X3_RC1_IfcSpecularRoughness_type;
extern type_declaration* IFC4X3_RC1_IfcTemperatureGradientMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcTemperatureRateOfChangeMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcText_type;
extern type_declaration* IFC4X3_RC1_IfcTextAlignment_type;
extern type_declaration* IFC4X3_RC1_IfcTextDecoration_type;
extern type_declaration* IFC4X3_RC1_IfcTextFontName_type;
extern type_declaration* IFC4X3_RC1_IfcTextTransformation_type;
extern type_declaration* IFC4X3_RC1_IfcThermalAdmittanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcThermalConductivityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcThermalExpansionCoefficientMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcThermalResistanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcThermalTransmittanceMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcThermodynamicTemperatureMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcTime_type;
extern type_declaration* IFC4X3_RC1_IfcTimeMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcTimeStamp_type;
extern type_declaration* IFC4X3_RC1_IfcTorqueMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcURIReference_type;
extern type_declaration* IFC4X3_RC1_IfcVaporPermeabilityMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcVolumeMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcVolumetricFlowRateMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcWarpingConstantMeasure_type;
extern type_declaration* IFC4X3_RC1_IfcWarpingMomentMeasure_type;
extern enumeration_type* IFC4X3_RC1_IfcActionRequestTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcActionSourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcActionTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcActuatorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAddressTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAirTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAlarmTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAlignmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAnalysisModelTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAnnotationTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcArithmeticOperatorEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAssemblyPlaceEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBSplineCurveForm_type;
extern enumeration_type* IFC4X3_RC1_IfcBSplineSurfaceForm_type;
extern enumeration_type* IFC4X3_RC1_IfcBeamTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBearingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBenchmarkEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBoilerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBooleanOperator_type;
extern enumeration_type* IFC4X3_RC1_IfcBridgePartTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBridgeTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBuildingSystemTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBuiltSystemTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcBurnerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCableFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCableSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcChangeActionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcChillerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcChimneyTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCoilTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcColumnTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCompressorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCondenserTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcConnectionTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcConstraintEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcControllerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCooledBeamTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCoolingTowerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCostItemTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCostScheduleTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCourseTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCoveringTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCrewResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCurtainWallTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcCurveInterpolationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDamperTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDataOriginEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDerivedUnitEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDirectionSenseEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDistributionBoardTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDistributionPortTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDistributionSystemEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDocumentConfidentialityEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDocumentStatusEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDoorPanelOperationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDoorPanelPositionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDoorStyleConstructionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDoorStyleOperationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDoorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDoorTypeOperationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDuctFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDuctSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcDuctSilencerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEarthworksCutTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEarthworksFillTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricMotorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElementAssemblyTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcElementCompositionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEngineTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEvaporatorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEventTriggerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcEventTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFacilityUsageEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFanTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFastenerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFilterTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFlowDirectionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFlowMeterTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFootingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcFurnitureTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcGeographicElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcGeometricProjectionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcGlobalOrLocalEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcGridTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcHeatExchangerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcHumidifierTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcInterceptorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcInternalOrExternalEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcInventoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcJunctionBoxTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcKnotType_type;
extern enumeration_type* IFC4X3_RC1_IfcLaborResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLampTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLayerSetDirectionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLightDistributionCurveEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLightEmissionSourceEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLightFixtureTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLoadGroupTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcLogicalOperatorEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMarineFacilityTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMarinePartTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMemberTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMooringDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcMotorConnectionTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcNavigationElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcNullStyle_type;
extern enumeration_type* IFC4X3_RC1_IfcObjectTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcObjectiveEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcOccupantTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcOpeningElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcOutletTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPermitTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPileConstructionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPileTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPipeFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPipeSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPlateTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type;
extern enumeration_type* IFC4X3_RC1_IfcProcedureTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcProfileTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcProjectOrderTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcProjectionElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcPumpTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRailTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRailingTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRailwayPartTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRampFlightTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRampTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRecurrenceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReferentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReflectanceMethodEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReinforcingBarRoleEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReinforcingBarTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRoadPartTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRoleEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcRoofTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSIPrefix_type;
extern enumeration_type* IFC4X3_RC1_IfcSIUnitName_type;
extern enumeration_type* IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSectionTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSensorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSequenceEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcShadingDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSignTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSignalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSlabTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSolarDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSpaceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSpatialZoneTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStackTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStairFlightTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStairTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStateEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSubContractResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSurfaceSide_type;
extern enumeration_type* IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTankTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTaskDurationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTaskTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTendonAnchorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTendonConduitTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTendonTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTextPath_type;
extern enumeration_type* IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTrackElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTransformerTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTransitionCode_type;
extern enumeration_type* IFC4X3_RC1_IfcTransitionCurveType_type;
extern enumeration_type* IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcTrimmingPreference_type;
extern enumeration_type* IFC4X3_RC1_IfcTubeBundleTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcUnitEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcValveTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcVibrationDamperTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWallTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWasteTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWindowPanelOperationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWindowPanelPositionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWindowStyleConstructionEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWindowStyleOperationEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWindowTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWindowTypePartitioningEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWorkCalendarTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWorkPlanTypeEnum_type;
extern enumeration_type* IFC4X3_RC1_IfcWorkScheduleTypeEnum_type;


const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActionRequestTypeEnum::declaration() const { return *IFC4X3_RC1_IfcActionRequestTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActionRequestTypeEnum::Class() { return *IFC4X3_RC1_IfcActionRequestTypeEnum_type; }

Ifc4x3_rc1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionRequestTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionRequestTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcActionRequestTypeEnum::operator Ifc4x3_rc1::IfcActionRequestTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActionSourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcActionSourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActionSourceTypeEnum::Class() { return *IFC4X3_RC1_IfcActionSourceTypeEnum_type; }

Ifc4x3_rc1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionSourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcActionSourceTypeEnum::IfcActionSourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionSourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcActionSourceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 27 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcActionSourceTypeEnum::operator Ifc4x3_rc1::IfcActionSourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActionTypeEnum::declaration() const { return *IFC4X3_RC1_IfcActionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActionTypeEnum::Class() { return *IFC4X3_RC1_IfcActionTypeEnum_type; }

Ifc4x3_rc1::IfcActionTypeEnum::IfcActionTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcActionTypeEnum::IfcActionTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcActionTypeEnum::operator Ifc4x3_rc1::IfcActionTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActuatorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcActuatorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcActuatorTypeEnum::Class() { return *IFC4X3_RC1_IfcActuatorTypeEnum_type; }

Ifc4x3_rc1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActuatorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActuatorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcActuatorTypeEnum::operator Ifc4x3_rc1::IfcActuatorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAddressTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAddressTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAddressTypeEnum::Class() { return *IFC4X3_RC1_IfcAddressTypeEnum_type; }

Ifc4x3_rc1::IfcAddressTypeEnum::IfcAddressTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAddressTypeEnum::IfcAddressTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAddressTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAddressTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAddressTypeEnum::operator Ifc4x3_rc1::IfcAddressTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Class() { return *IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type; }

Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalBoxTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::operator Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAirTerminalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAirTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAirTerminalTypeEnum::Class() { return *IFC4X3_RC1_IfcAirTerminalTypeEnum_type; }

Ifc4x3_rc1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAirTerminalTypeEnum::operator Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Class() { return *IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type; }

Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirToAirHeatRecoveryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::operator Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAlarmTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAlarmTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAlarmTypeEnum::Class() { return *IFC4X3_RC1_IfcAlarmTypeEnum_type; }

Ifc4x3_rc1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlarmTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlarmTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAlarmTypeEnum::operator Ifc4x3_rc1::IfcAlarmTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAlignmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAlignmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAlignmentTypeEnum::Class() { return *IFC4X3_RC1_IfcAlignmentTypeEnum_type; }

Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcAlignmentTypeEnum::Value Ifc4x3_rc1::IfcAlignmentTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcAlignmentTypeEnum::IfcAlignmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcAlignmentTypeEnum::operator Ifc4x3_rc1::IfcAlignmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAnalysisModelTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAnalysisModelTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAnalysisModelTypeEnum::Class() { return *IFC4X3_RC1_IfcAnalysisModelTypeEnum_type; }

Ifc4x3_rc1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisModelTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisModelTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAnalysisModelTypeEnum::operator Ifc4x3_rc1::IfcAnalysisModelTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::Class() { return *IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type; }

Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnalysisTheoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::operator Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAnnotationTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAnnotationTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAnnotationTypeEnum::Class() { return *IFC4X3_RC1_IfcAnnotationTypeEnum_type; }

Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnnotationTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnnotationTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcAnnotationTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ASSUMEDPOINT", "ASBUILTAREA", "ASBUILTLINE", "NON_PHYSICAL_SIGNAL", "ASSUMEDLINE", "WIDTHEVENT", "ASSUMEDAREA", "SUPERELEVATIONEVENT", "ASBUILTPOINT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcAnnotationTypeEnum::Value Ifc4x3_rc1::IfcAnnotationTypeEnum::FromString(const std::string& s) {
    if (s == "ASSUMEDPOINT") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_ASSUMEDPOINT;
    if (s == "ASBUILTAREA") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_ASBUILTAREA;
    if (s == "ASBUILTLINE") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_ASBUILTLINE;
    if (s == "NON_PHYSICAL_SIGNAL") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_NON_PHYSICAL_SIGNAL;
    if (s == "ASSUMEDLINE") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_ASSUMEDLINE;
    if (s == "WIDTHEVENT") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_WIDTHEVENT;
    if (s == "ASSUMEDAREA") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_ASSUMEDAREA;
    if (s == "SUPERELEVATIONEVENT") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_SUPERELEVATIONEVENT;
    if (s == "ASBUILTPOINT") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_ASBUILTPOINT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::IfcAnnotationType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcAnnotationTypeEnum::operator Ifc4x3_rc1::IfcAnnotationTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcArithmeticOperatorEnum::declaration() const { return *IFC4X3_RC1_IfcArithmeticOperatorEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcArithmeticOperatorEnum::Class() { return *IFC4X3_RC1_IfcArithmeticOperatorEnum_type; }

Ifc4x3_rc1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArithmeticOperatorEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArithmeticOperatorEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcArithmeticOperatorEnum::operator Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAssemblyPlaceEnum::declaration() const { return *IFC4X3_RC1_IfcAssemblyPlaceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAssemblyPlaceEnum::Class() { return *IFC4X3_RC1_IfcAssemblyPlaceEnum_type; }

Ifc4x3_rc1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAssemblyPlaceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAssemblyPlaceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAssemblyPlaceEnum::operator Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Class() { return *IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type; }

Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAudioVisualApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::operator Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBSplineCurveForm::declaration() const { return *IFC4X3_RC1_IfcBSplineCurveForm_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBSplineCurveForm::Class() { return *IFC4X3_RC1_IfcBSplineCurveForm_type; }

Ifc4x3_rc1::IfcBSplineCurveForm::IfcBSplineCurveForm(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBSplineCurveForm::IfcBSplineCurveForm(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineCurveForm_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineCurveForm_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBSplineCurveForm::operator Ifc4x3_rc1::IfcBSplineCurveForm::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBSplineSurfaceForm::declaration() const { return *IFC4X3_RC1_IfcBSplineSurfaceForm_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBSplineSurfaceForm::Class() { return *IFC4X3_RC1_IfcBSplineSurfaceForm_type; }

Ifc4x3_rc1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineSurfaceForm_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineSurfaceForm_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcBSplineSurfaceForm::ToString(Value v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcBSplineSurfaceForm::operator Ifc4x3_rc1::IfcBSplineSurfaceForm::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBeamTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBeamTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBeamTypeEnum::Class() { return *IFC4X3_RC1_IfcBeamTypeEnum_type; }

Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeamTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeamTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcBeamTypeEnum::Value Ifc4x3_rc1::IfcBeamTypeEnum::FromString(const std::string& s) {
    if (s == "BEAM") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_BEAM;
    if (s == "JOIST") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_JOIST;
    if (s == "HOLLOWCORE") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_HOLLOWCORE;
    if (s == "LINTEL") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_LINTEL;
    if (s == "SPANDREL") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_SPANDREL;
    if (s == "T_BEAM") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_T_BEAM;
    if (s == "GIRDER_SEGMENT") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_GIRDER_SEGMENT;
    if (s == "DIAPHRAGM") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_DIAPHRAGM;
    if (s == "PIERCAP") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_PIERCAP;
    if (s == "HATSTONE") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_HATSTONE;
    if (s == "CORNICE") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_CORNICE;
    if (s == "EDGEBEAM") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_EDGEBEAM;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBeamTypeEnum::IfcBeamType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBeamTypeEnum::operator Ifc4x3_rc1::IfcBeamTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::declaration() const { return *IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::Class() { return *IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type; }

Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeDisplacementEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::ToString(Value v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "FIXED_MOVEMENT", "GUIDED_LONGITUDINAL", "GUIDED_TRANSVERSAL", "FREE_MOVEMENT", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::Value Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::FromString(const std::string& s) {
    if (s == "FIXED_MOVEMENT") return ::Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_FIXED_MOVEMENT;
    if (s == "GUIDED_LONGITUDINAL") return ::Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_GUIDED_LONGITUDINAL;
    if (s == "GUIDED_TRANSVERSAL") return ::Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_GUIDED_TRANSVERSAL;
    if (s == "FREE_MOVEMENT") return ::Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_FREE_MOVEMENT;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::operator Ifc4x3_rc1::IfcBearingTypeDisplacementEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBearingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBearingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBearingTypeEnum::Class() { return *IFC4X3_RC1_IfcBearingTypeEnum_type; }

Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcBearingTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CYLINDRICAL", "SPHERICAL", "ELASTOMERIC", "POT", "GUIDE", "ROCKER", "ROLLER", "DISK", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcBearingTypeEnum::Value Ifc4x3_rc1::IfcBearingTypeEnum::FromString(const std::string& s) {
    if (s == "CYLINDRICAL") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_CYLINDRICAL;
    if (s == "SPHERICAL") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_SPHERICAL;
    if (s == "ELASTOMERIC") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_ELASTOMERIC;
    if (s == "POT") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_POT;
    if (s == "GUIDE") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_GUIDE;
    if (s == "ROCKER") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_ROCKER;
    if (s == "ROLLER") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_ROLLER;
    if (s == "DISK") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_DISK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBearingTypeEnum::IfcBearingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBearingTypeEnum::operator Ifc4x3_rc1::IfcBearingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBenchmarkEnum::declaration() const { return *IFC4X3_RC1_IfcBenchmarkEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBenchmarkEnum::Class() { return *IFC4X3_RC1_IfcBenchmarkEnum_type; }

Ifc4x3_rc1::IfcBenchmarkEnum::IfcBenchmarkEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBenchmarkEnum::IfcBenchmarkEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBenchmarkEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBenchmarkEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBenchmarkEnum::operator Ifc4x3_rc1::IfcBenchmarkEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBoilerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBoilerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBoilerTypeEnum::Class() { return *IFC4X3_RC1_IfcBoilerTypeEnum_type; }

Ifc4x3_rc1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoilerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoilerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBoilerTypeEnum::operator Ifc4x3_rc1::IfcBoilerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBooleanOperator::declaration() const { return *IFC4X3_RC1_IfcBooleanOperator_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBooleanOperator::Class() { return *IFC4X3_RC1_IfcBooleanOperator_type; }

Ifc4x3_rc1::IfcBooleanOperator::IfcBooleanOperator(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBooleanOperator::IfcBooleanOperator(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBooleanOperator_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBooleanOperator_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBooleanOperator::operator Ifc4x3_rc1::IfcBooleanOperator::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBridgePartTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBridgePartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBridgePartTypeEnum::Class() { return *IFC4X3_RC1_IfcBridgePartTypeEnum_type; }

Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgePartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgePartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcBridgePartTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ABUTMENT", "DECK", "DECK_SEGMENT", "FOUNDATION", "PIER", "PIER_SEGMENT", "PYLON", "SUBSTRUCTURE", "SUPERSTRUCTURE", "SURFACESTRUCTURE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcBridgePartTypeEnum::Value Ifc4x3_rc1::IfcBridgePartTypeEnum::FromString(const std::string& s) {
    if (s == "ABUTMENT") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_ABUTMENT;
    if (s == "DECK") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_DECK;
    if (s == "DECK_SEGMENT") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_DECK_SEGMENT;
    if (s == "FOUNDATION") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_FOUNDATION;
    if (s == "PIER") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_PIER;
    if (s == "PIER_SEGMENT") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_PIER_SEGMENT;
    if (s == "PYLON") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_PYLON;
    if (s == "SUBSTRUCTURE") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_SUBSTRUCTURE;
    if (s == "SUPERSTRUCTURE") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_SUPERSTRUCTURE;
    if (s == "SURFACESTRUCTURE") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_SURFACESTRUCTURE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBridgePartTypeEnum::IfcBridgePartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBridgePartTypeEnum::operator Ifc4x3_rc1::IfcBridgePartTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBridgeTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBridgeTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBridgeTypeEnum::Class() { return *IFC4X3_RC1_IfcBridgeTypeEnum_type; }

Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgeTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgeTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcBridgeTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ARCHED", "CABLE_STAYED", "CANTILEVER", "CULVERT", "FRAMEWORK", "GIRDER", "SUSPENSION", "TRUSS", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcBridgeTypeEnum::Value Ifc4x3_rc1::IfcBridgeTypeEnum::FromString(const std::string& s) {
    if (s == "ARCHED") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_ARCHED;
    if (s == "CABLE_STAYED") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_CABLE_STAYED;
    if (s == "CANTILEVER") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_CANTILEVER;
    if (s == "CULVERT") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_CULVERT;
    if (s == "FRAMEWORK") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_FRAMEWORK;
    if (s == "GIRDER") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_GIRDER;
    if (s == "SUSPENSION") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_SUSPENSION;
    if (s == "TRUSS") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_TRUSS;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBridgeTypeEnum::IfcBridgeType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBridgeTypeEnum::operator Ifc4x3_rc1::IfcBridgeTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Class() { return *IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type; }

Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementPartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::FromString(const std::string& s) {
    if (s == "INSULATION") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_INSULATION;
    if (s == "PRECASTPANEL") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_PRECASTPANEL;
    if (s == "APRON") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_APRON;
    if (s == "ARMOURUNIT") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_ARMOURUNIT;
    if (s == "SAFETYCAGE") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_SAFETYCAGE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::operator Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Class() { return *IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type; }

Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementProxyTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::operator Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuildingSystemTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBuildingSystemTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Class() { return *IFC4X3_RC1_IfcBuildingSystemTypeEnum_type; }

Ifc4x3_rc1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingSystemTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingSystemTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBuildingSystemTypeEnum::operator Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuiltSystemTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBuiltSystemTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Class() { return *IFC4X3_RC1_IfcBuiltSystemTypeEnum_type; }

Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltSystemTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltSystemTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcBuiltSystemTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 14 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "REINFORCING", "MOORING", "OUTERSHELL", "TRACKCIRCUIT", "EROSIONPREVENTION", "FOUNDATION", "LOADBEARING", "SHADING", "FENESTRATION", "MOORINGSYSTEM", "TRANSPORT", "PRESTRESSING", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value Ifc4x3_rc1::IfcBuiltSystemTypeEnum::FromString(const std::string& s) {
    if (s == "REINFORCING") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_REINFORCING;
    if (s == "MOORING") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_MOORING;
    if (s == "OUTERSHELL") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_OUTERSHELL;
    if (s == "TRACKCIRCUIT") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_TRACKCIRCUIT;
    if (s == "EROSIONPREVENTION") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_EROSIONPREVENTION;
    if (s == "FOUNDATION") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_FOUNDATION;
    if (s == "LOADBEARING") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_LOADBEARING;
    if (s == "SHADING") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_SHADING;
    if (s == "FENESTRATION") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_FENESTRATION;
    if (s == "MOORINGSYSTEM") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_MOORINGSYSTEM;
    if (s == "TRANSPORT") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_TRANSPORT;
    if (s == "PRESTRESSING") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_PRESTRESSING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcBuiltSystemTypeEnum::operator Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBurnerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcBurnerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcBurnerTypeEnum::Class() { return *IFC4X3_RC1_IfcBurnerTypeEnum_type; }

Ifc4x3_rc1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBurnerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBurnerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcBurnerTypeEnum::operator Ifc4x3_rc1::IfcBurnerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Class() { return *IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type; }

Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::operator Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Class() { return *IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type; }

Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CABLELADDERSEGMENT") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLELADDERSEGMENT;
    if (s == "CABLETRAYSEGMENT") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLETRAYSEGMENT;
    if (s == "CABLETRUNKINGSEGMENT") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLETRUNKINGSEGMENT;
    if (s == "CONDUITSEGMENT") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CONDUITSEGMENT;
    if (s == "CABLEBRACKET") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLEBRACKET;
    if (s == "CATENARYWIRE") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CATENARYWIRE;
    if (s == "DROPPER") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_DROPPER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::operator Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableFittingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCableFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableFittingTypeEnum::Class() { return *IFC4X3_RC1_IfcCableFittingTypeEnum_type; }

Ifc4x3_rc1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCableFittingTypeEnum::operator Ifc4x3_rc1::IfcCableFittingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableSegmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCableSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCableSegmentTypeEnum::Class() { return *IFC4X3_RC1_IfcCableSegmentTypeEnum_type; }

Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "BUSBARSEGMENT", "CABLESEGMENT", "CONDUCTORSEGMENT", "CORESEGMENT", "CONTACTWIRESEGMENT", "FIBERSEGMENT", "FIBERTUBE", "OPTICALCABLESEGMENT", "STITCHWIRE", "WIREPAIRSEGMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value Ifc4x3_rc1::IfcCableSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "BUSBARSEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_BUSBARSEGMENT;
    if (s == "CABLESEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_CABLESEGMENT;
    if (s == "CONDUCTORSEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_CONDUCTORSEGMENT;
    if (s == "CORESEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_CORESEGMENT;
    if (s == "CONTACTWIRESEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_CONTACTWIRESEGMENT;
    if (s == "FIBERSEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_FIBERSEGMENT;
    if (s == "FIBERTUBE") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_FIBERTUBE;
    if (s == "OPTICALCABLESEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_OPTICALCABLESEGMENT;
    if (s == "STITCHWIRE") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_STITCHWIRE;
    if (s == "WIREPAIRSEGMENT") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_WIREPAIRSEGMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::IfcCableSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcCableSegmentTypeEnum::operator Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Class() { return *IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type; }

Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCaissonFoundationTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::FromString(const std::string& s) {
    if (s == "WELL") return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_WELL;
    if (s == "CAISSON") return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_CAISSON;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::operator Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcChangeActionEnum::declaration() const { return *IFC4X3_RC1_IfcChangeActionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcChangeActionEnum::Class() { return *IFC4X3_RC1_IfcChangeActionEnum_type; }

Ifc4x3_rc1::IfcChangeActionEnum::IfcChangeActionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcChangeActionEnum::IfcChangeActionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChangeActionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChangeActionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcChangeActionEnum::operator Ifc4x3_rc1::IfcChangeActionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcChillerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcChillerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcChillerTypeEnum::Class() { return *IFC4X3_RC1_IfcChillerTypeEnum_type; }

Ifc4x3_rc1::IfcChillerTypeEnum::IfcChillerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcChillerTypeEnum::IfcChillerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChillerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChillerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcChillerTypeEnum::operator Ifc4x3_rc1::IfcChillerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcChimneyTypeEnum::declaration() const { return *IFC4X3_RC1_IfcChimneyTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcChimneyTypeEnum::Class() { return *IFC4X3_RC1_IfcChimneyTypeEnum_type; }

Ifc4x3_rc1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChimneyTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChimneyTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcChimneyTypeEnum::operator Ifc4x3_rc1::IfcChimneyTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCoilTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCoilTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCoilTypeEnum::Class() { return *IFC4X3_RC1_IfcCoilTypeEnum_type; }

Ifc4x3_rc1::IfcCoilTypeEnum::IfcCoilTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCoilTypeEnum::IfcCoilTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoilTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoilTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCoilTypeEnum::operator Ifc4x3_rc1::IfcCoilTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcColumnTypeEnum::declaration() const { return *IFC4X3_RC1_IfcColumnTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcColumnTypeEnum::Class() { return *IFC4X3_RC1_IfcColumnTypeEnum_type; }

Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumnTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumnTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcColumnTypeEnum::Value Ifc4x3_rc1::IfcColumnTypeEnum::FromString(const std::string& s) {
    if (s == "COLUMN") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_COLUMN;
    if (s == "PILASTER") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_PILASTER;
    if (s == "PIERSTEM") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_PIERSTEM;
    if (s == "PIERSTEM_SEGMENT") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_PIERSTEM_SEGMENT;
    if (s == "STANDCOLUMN") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_STANDCOLUMN;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcColumnTypeEnum::IfcColumnType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcColumnTypeEnum::operator Ifc4x3_rc1::IfcColumnTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Class() { return *IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type; }

Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCommunicationsApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 23 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ANTENNA", "COMPUTER", "FAX", "GATEWAY", "MODEM", "NETWORKAPPLIANCE", "NETWORKBRIDGE", "NETWORKHUB", "PRINTER", "REPEATER", "ROUTER", "SCANNER", "AUTOMATON", "INTELLIGENT_PERIPHERAL", "IP_NETWORK_EQUIPMENT", "OPTICAL_NETWORK_UNIT", "TELECOMMAND", "TELEPHONYEXCHANGE", "TRANSITIONCOMPONENT", "TRANSPONDER", "TRANSPORTEQUIPMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "ANTENNA") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_ANTENNA;
    if (s == "COMPUTER") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_COMPUTER;
    if (s == "FAX") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_FAX;
    if (s == "GATEWAY") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_GATEWAY;
    if (s == "MODEM") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_MODEM;
    if (s == "NETWORKAPPLIANCE") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NETWORKAPPLIANCE;
    if (s == "NETWORKBRIDGE") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NETWORKBRIDGE;
    if (s == "NETWORKHUB") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NETWORKHUB;
    if (s == "PRINTER") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_PRINTER;
    if (s == "REPEATER") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_REPEATER;
    if (s == "ROUTER") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_ROUTER;
    if (s == "SCANNER") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_SCANNER;
    if (s == "AUTOMATON") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_AUTOMATON;
    if (s == "INTELLIGENT_PERIPHERAL") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_INTELLIGENT_PERIPHERAL;
    if (s == "IP_NETWORK_EQUIPMENT") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_IP_NETWORK_EQUIPMENT;
    if (s == "OPTICAL_NETWORK_UNIT") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_OPTICAL_NETWORK_UNIT;
    if (s == "TELECOMMAND") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_TELECOMMAND;
    if (s == "TELEPHONYEXCHANGE") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_TELEPHONYEXCHANGE;
    if (s == "TRANSITIONCOMPONENT") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_TRANSITIONCOMPONENT;
    if (s == "TRANSPONDER") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_TRANSPONDER;
    if (s == "TRANSPORTEQUIPMENT") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_TRANSPORTEQUIPMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::IfcCommunicationsApplianceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::operator Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::declaration() const { return *IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Class() { return *IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type; }

Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexPropertyTemplateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::operator Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCompressorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCompressorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCompressorTypeEnum::Class() { return *IFC4X3_RC1_IfcCompressorTypeEnum_type; }

Ifc4x3_rc1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompressorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompressorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 17 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcCompressorTypeEnum::operator Ifc4x3_rc1::IfcCompressorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCondenserTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCondenserTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCondenserTypeEnum::Class() { return *IFC4X3_RC1_IfcCondenserTypeEnum_type; }

Ifc4x3_rc1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCondenserTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCondenserTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCondenserTypeEnum::operator Ifc4x3_rc1::IfcCondenserTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConnectionTypeEnum::declaration() const { return *IFC4X3_RC1_IfcConnectionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConnectionTypeEnum::Class() { return *IFC4X3_RC1_IfcConnectionTypeEnum_type; }

Ifc4x3_rc1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcConnectionTypeEnum::operator Ifc4x3_rc1::IfcConnectionTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstraintEnum::declaration() const { return *IFC4X3_RC1_IfcConstraintEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstraintEnum::Class() { return *IFC4X3_RC1_IfcConstraintEnum_type; }

Ifc4x3_rc1::IfcConstraintEnum::IfcConstraintEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcConstraintEnum::IfcConstraintEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstraintEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstraintEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcConstraintEnum::operator Ifc4x3_rc1::IfcConstraintEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Class() { return *IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type; }

Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionEquipmentResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::operator Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Class() { return *IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type; }

Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionMaterialResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::operator Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Class() { return *IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type; }

Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionProductResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::operator Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcControllerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcControllerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcControllerTypeEnum::Class() { return *IFC4X3_RC1_IfcControllerTypeEnum_type; }

Ifc4x3_rc1::IfcControllerTypeEnum::IfcControllerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcControllerTypeEnum::IfcControllerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcControllerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcControllerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcControllerTypeEnum::operator Ifc4x3_rc1::IfcControllerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Class() { return *IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type; }

Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConveyorSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CHUTECONVEYOR", "BELTCONVEYOR", "SCREWCONVEYOR", "BUCKETCONVEYOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CHUTECONVEYOR") return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_CHUTECONVEYOR;
    if (s == "BELTCONVEYOR") return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_BELTCONVEYOR;
    if (s == "SCREWCONVEYOR") return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_SCREWCONVEYOR;
    if (s == "BUCKETCONVEYOR") return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_BUCKETCONVEYOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::operator Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCooledBeamTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCooledBeamTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCooledBeamTypeEnum::Class() { return *IFC4X3_RC1_IfcCooledBeamTypeEnum_type; }

Ifc4x3_rc1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCooledBeamTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCooledBeamTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCooledBeamTypeEnum::operator Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCoolingTowerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCoolingTowerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Class() { return *IFC4X3_RC1_IfcCoolingTowerTypeEnum_type; }

Ifc4x3_rc1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoolingTowerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoolingTowerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCoolingTowerTypeEnum::operator Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCostItemTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCostItemTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCostItemTypeEnum::Class() { return *IFC4X3_RC1_IfcCostItemTypeEnum_type; }

Ifc4x3_rc1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostItemTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostItemTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCostItemTypeEnum::operator Ifc4x3_rc1::IfcCostItemTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCostScheduleTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCostScheduleTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCostScheduleTypeEnum::Class() { return *IFC4X3_RC1_IfcCostScheduleTypeEnum_type; }

Ifc4x3_rc1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostScheduleTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostScheduleTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCostScheduleTypeEnum::operator Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCourseTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCourseTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCourseTypeEnum::Class() { return *IFC4X3_RC1_IfcCourseTypeEnum_type; }

Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCourseTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCourseTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcCourseTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ARMOUR", "FILTER", "BALLASTBED", "CORE", "PAVEMENT", "PROTECTION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcCourseTypeEnum::Value Ifc4x3_rc1::IfcCourseTypeEnum::FromString(const std::string& s) {
    if (s == "ARMOUR") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_ARMOUR;
    if (s == "FILTER") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_FILTER;
    if (s == "BALLASTBED") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_BALLASTBED;
    if (s == "CORE") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_CORE;
    if (s == "PAVEMENT") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_PAVEMENT;
    if (s == "PROTECTION") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_PROTECTION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcCourseTypeEnum::IfcCourseType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcCourseTypeEnum::operator Ifc4x3_rc1::IfcCourseTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCoveringTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCoveringTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCoveringTypeEnum::Class() { return *IFC4X3_RC1_IfcCoveringTypeEnum_type; }

Ifc4x3_rc1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoveringTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoveringTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCoveringTypeEnum::operator Ifc4x3_rc1::IfcCoveringTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCrewResourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCrewResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCrewResourceTypeEnum::Class() { return *IFC4X3_RC1_IfcCrewResourceTypeEnum_type; }

Ifc4x3_rc1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCrewResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCrewResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCrewResourceTypeEnum::operator Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCurtainWallTypeEnum::declaration() const { return *IFC4X3_RC1_IfcCurtainWallTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCurtainWallTypeEnum::Class() { return *IFC4X3_RC1_IfcCurtainWallTypeEnum_type; }

Ifc4x3_rc1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurtainWallTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurtainWallTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCurtainWallTypeEnum::operator Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCurveInterpolationEnum::declaration() const { return *IFC4X3_RC1_IfcCurveInterpolationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcCurveInterpolationEnum::Class() { return *IFC4X3_RC1_IfcCurveInterpolationEnum_type; }

Ifc4x3_rc1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveInterpolationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveInterpolationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcCurveInterpolationEnum::operator Ifc4x3_rc1::IfcCurveInterpolationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDamperTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDamperTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDamperTypeEnum::Class() { return *IFC4X3_RC1_IfcDamperTypeEnum_type; }

Ifc4x3_rc1::IfcDamperTypeEnum::IfcDamperTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDamperTypeEnum::IfcDamperTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDamperTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDamperTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDamperTypeEnum::operator Ifc4x3_rc1::IfcDamperTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDataOriginEnum::declaration() const { return *IFC4X3_RC1_IfcDataOriginEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDataOriginEnum::Class() { return *IFC4X3_RC1_IfcDataOriginEnum_type; }

Ifc4x3_rc1::IfcDataOriginEnum::IfcDataOriginEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDataOriginEnum::IfcDataOriginEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDataOriginEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDataOriginEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDataOriginEnum::operator Ifc4x3_rc1::IfcDataOriginEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDerivedUnitEnum::declaration() const { return *IFC4X3_RC1_IfcDerivedUnitEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDerivedUnitEnum::Class() { return *IFC4X3_RC1_IfcDerivedUnitEnum_type; }

Ifc4x3_rc1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedUnitEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDerivedUnitEnum::IfcDerivedUnitEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedUnitEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcDerivedUnitEnum::ToString(Value v) {
    if ( v < 0 || v >= 53 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcDerivedUnitEnum::operator Ifc4x3_rc1::IfcDerivedUnitEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDirectionSenseEnum::declaration() const { return *IFC4X3_RC1_IfcDirectionSenseEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDirectionSenseEnum::Class() { return *IFC4X3_RC1_IfcDirectionSenseEnum_type; }

Ifc4x3_rc1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirectionSenseEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirectionSenseEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDirectionSenseEnum::operator Ifc4x3_rc1::IfcDirectionSenseEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Class() { return *IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type; }

Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDiscreteAccessoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 19 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ANCHORPLATE", "BRACKET", "SHOE", "EXPANSION_JOINT_DEVICE", "BIRDPROTECTION", "CABLEARRANGER", "INSULATOR", "LOCK", "TENSIONINGEQUIPMENT", "RAILPAD", "SLIDINGCHAIR", "PANEL_STRENGTHENING", "RAILBRACE", "ELASTIC_CUSHION", "SOUNDABSORPTION", "RAIL_LUBRICATION", "RAIL_MECHANICAL_EQUIPMENT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORPLATE") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_ANCHORPLATE;
    if (s == "BRACKET") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_BRACKET;
    if (s == "SHOE") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_SHOE;
    if (s == "EXPANSION_JOINT_DEVICE") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_EXPANSION_JOINT_DEVICE;
    if (s == "BIRDPROTECTION") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_BIRDPROTECTION;
    if (s == "CABLEARRANGER") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_CABLEARRANGER;
    if (s == "INSULATOR") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_INSULATOR;
    if (s == "LOCK") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_LOCK;
    if (s == "TENSIONINGEQUIPMENT") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_TENSIONINGEQUIPMENT;
    if (s == "RAILPAD") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_RAILPAD;
    if (s == "SLIDINGCHAIR") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_SLIDINGCHAIR;
    if (s == "PANEL_STRENGTHENING") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_PANEL_STRENGTHENING;
    if (s == "RAILBRACE") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_RAILBRACE;
    if (s == "ELASTIC_CUSHION") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_ELASTIC_CUSHION;
    if (s == "SOUNDABSORPTION") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_SOUNDABSORPTION;
    if (s == "RAIL_LUBRICATION") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_RAIL_LUBRICATION;
    if (s == "RAIL_MECHANICAL_EQUIPMENT") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_RAIL_MECHANICAL_EQUIPMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::IfcDiscreteAccessoryType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::operator Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionBoardTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDistributionBoardTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Class() { return *IFC4X3_RC1_IfcDistributionBoardTypeEnum_type; }

Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionBoardTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionBoardTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value Ifc4x3_rc1::IfcDistributionBoardTypeEnum::FromString(const std::string& s) {
    if (s == "SWITCHBOARD") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_SWITCHBOARD;
    if (s == "CONSUMERUNIT") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_CONSUMERUNIT;
    if (s == "MOTORCONTROLCENTRE") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_MOTORCONTROLCENTRE;
    if (s == "DISTRIBUTIONFRAME") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_DISTRIBUTIONFRAME;
    if (s == "DISTRIBUTIONBOARD") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_DISTRIBUTIONBOARD;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcDistributionBoardTypeEnum::operator Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Class() { return *IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type; }

Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionChamberElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::operator Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionPortTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDistributionPortTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionPortTypeEnum::Class() { return *IFC4X3_RC1_IfcDistributionPortTypeEnum_type; }

Ifc4x3_rc1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionPortTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionPortTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDistributionPortTypeEnum::operator Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionSystemEnum::declaration() const { return *IFC4X3_RC1_IfcDistributionSystemEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDistributionSystemEnum::Class() { return *IFC4X3_RC1_IfcDistributionSystemEnum_type; }

Ifc4x3_rc1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionSystemEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDistributionSystemEnum::IfcDistributionSystemEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionSystemEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(Value v) {
    if ( v < 0 || v >= 47 ) throw IfcException("Unable to 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", "CATENARY_SYSTEM", "OVERHEAD_CONTACTLINE_SYSTEM", "RETURN_CIRCUIT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

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

Ifc4x3_rc1::IfcDistributionSystemEnum::operator Ifc4x3_rc1::IfcDistributionSystemEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDocumentConfidentialityEnum::declaration() const { return *IFC4X3_RC1_IfcDocumentConfidentialityEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Class() { return *IFC4X3_RC1_IfcDocumentConfidentialityEnum_type; }

Ifc4x3_rc1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentConfidentialityEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentConfidentialityEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDocumentConfidentialityEnum::operator Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDocumentStatusEnum::declaration() const { return *IFC4X3_RC1_IfcDocumentStatusEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDocumentStatusEnum::Class() { return *IFC4X3_RC1_IfcDocumentStatusEnum_type; }

Ifc4x3_rc1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentStatusEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentStatusEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDocumentStatusEnum::operator Ifc4x3_rc1::IfcDocumentStatusEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorPanelOperationEnum::declaration() const { return *IFC4X3_RC1_IfcDoorPanelOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorPanelOperationEnum::Class() { return *IFC4X3_RC1_IfcDoorPanelOperationEnum_type; }

Ifc4x3_rc1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDoorPanelOperationEnum::operator Ifc4x3_rc1::IfcDoorPanelOperationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorPanelPositionEnum::declaration() const { return *IFC4X3_RC1_IfcDoorPanelPositionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorPanelPositionEnum::Class() { return *IFC4X3_RC1_IfcDoorPanelPositionEnum_type; }

Ifc4x3_rc1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelPositionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelPositionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDoorPanelPositionEnum::operator Ifc4x3_rc1::IfcDoorPanelPositionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorStyleConstructionEnum::declaration() const { return *IFC4X3_RC1_IfcDoorStyleConstructionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorStyleConstructionEnum::Class() { return *IFC4X3_RC1_IfcDoorStyleConstructionEnum_type; }

Ifc4x3_rc1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleConstructionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleConstructionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDoorStyleConstructionEnum::operator Ifc4x3_rc1::IfcDoorStyleConstructionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorStyleOperationEnum::declaration() const { return *IFC4X3_RC1_IfcDoorStyleOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorStyleOperationEnum::Class() { return *IFC4X3_RC1_IfcDoorStyleOperationEnum_type; }

Ifc4x3_rc1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyleOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcDoorStyleOperationEnum::ToString(Value v) {
    if ( v < 0 || v >= 18 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcDoorStyleOperationEnum::operator Ifc4x3_rc1::IfcDoorStyleOperationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDoorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorTypeEnum::Class() { return *IFC4X3_RC1_IfcDoorTypeEnum_type; }

Ifc4x3_rc1::IfcDoorTypeEnum::IfcDoorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDoorTypeEnum::IfcDoorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDoorTypeEnum::operator Ifc4x3_rc1::IfcDoorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorTypeOperationEnum::declaration() const { return *IFC4X3_RC1_IfcDoorTypeOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDoorTypeOperationEnum::Class() { return *IFC4X3_RC1_IfcDoorTypeOperationEnum_type; }

Ifc4x3_rc1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDoorTypeOperationEnum::IfcDoorTypeOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorTypeOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(Value v) {
    if ( v < 0 || v >= 20 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcDoorTypeOperationEnum::operator Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDuctFittingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDuctFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDuctFittingTypeEnum::Class() { return *IFC4X3_RC1_IfcDuctFittingTypeEnum_type; }

Ifc4x3_rc1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDuctFittingTypeEnum::operator Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDuctSegmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDuctSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Class() { return *IFC4X3_RC1_IfcDuctSegmentTypeEnum_type; }

Ifc4x3_rc1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDuctSegmentTypeEnum::operator Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDuctSilencerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcDuctSilencerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Class() { return *IFC4X3_RC1_IfcDuctSilencerTypeEnum_type; }

Ifc4x3_rc1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSilencerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSilencerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcDuctSilencerTypeEnum::operator Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEarthworksCutTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEarthworksCutTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Class() { return *IFC4X3_RC1_IfcEarthworksCutTypeEnum_type; }

Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksCutTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksCutTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcEarthworksCutTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "TRENCH", "DREDGING", "EXCAVATION", "OVEREXCAVATION", "TOPSOILREMOVAL", "STEPEXCAVATION", "PAVEMENTMILLING", "CUT", "BASE_EXCAVATION", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value Ifc4x3_rc1::IfcEarthworksCutTypeEnum::FromString(const std::string& s) {
    if (s == "TRENCH") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_TRENCH;
    if (s == "DREDGING") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_DREDGING;
    if (s == "EXCAVATION") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_EXCAVATION;
    if (s == "OVEREXCAVATION") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_OVEREXCAVATION;
    if (s == "TOPSOILREMOVAL") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_TOPSOILREMOVAL;
    if (s == "STEPEXCAVATION") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_STEPEXCAVATION;
    if (s == "PAVEMENTMILLING") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_PAVEMENTMILLING;
    if (s == "CUT") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_CUT;
    if (s == "BASE_EXCAVATION") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_BASE_EXCAVATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcEarthworksCutTypeEnum::operator Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEarthworksFillTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEarthworksFillTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Class() { return *IFC4X3_RC1_IfcEarthworksFillTypeEnum_type; }

Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksFillTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksFillTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcEarthworksFillTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "BACKFILL", "COUNTERWEIGHT", "SUBGRADE", "EMBANKMENT", "TRANSITIONSECTION", "SUBGRADEBED", "SLOPEFILL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value Ifc4x3_rc1::IfcEarthworksFillTypeEnum::FromString(const std::string& s) {
    if (s == "BACKFILL") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_BACKFILL;
    if (s == "COUNTERWEIGHT") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_COUNTERWEIGHT;
    if (s == "SUBGRADE") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_SUBGRADE;
    if (s == "EMBANKMENT") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_EMBANKMENT;
    if (s == "TRANSITIONSECTION") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_TRANSITIONSECTION;
    if (s == "SUBGRADEBED") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_SUBGRADEBED;
    if (s == "SLOPEFILL") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_SLOPEFILL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcEarthworksFillTypeEnum::operator Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricApplianceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricApplianceTypeEnum_type; }

Ifc4x3_rc1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 18 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcElectricApplianceTypeEnum::operator Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type; }

Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricDistributionBoardTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::operator Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowStorageDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "BATTERY") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_BATTERY;
    if (s == "CAPACITORBANK") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_CAPACITORBANK;
    if (s == "HARMONICFILTER") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_HARMONICFILTER;
    if (s == "INDUCTORBANK") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_INDUCTORBANK;
    if (s == "UPS") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_UPS;
    if (s == "CAPACITOR") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_CAPACITOR;
    if (s == "COMPENSATOR") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_COMPENSATOR;
    if (s == "INDUCTOR") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_INDUCTOR;
    if (s == "RECHARGER") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_RECHARGER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::operator Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowTreatmentDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRONICFILTER") return ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceType_ELECTRONICFILTER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::operator Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type; }

Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricGeneratorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::operator Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricMotorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricMotorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricMotorTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricMotorTypeEnum_type; }

Ifc4x3_rc1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricMotorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricMotorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcElectricMotorTypeEnum::operator Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Class() { return *IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type; }

Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricTimeControlTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::operator Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElementAssemblyTypeEnum::declaration() const { return *IFC4X3_RC1_IfcElementAssemblyTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Class() { return *IFC4X3_RC1_IfcElementAssemblyTypeEnum_type; }

Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementAssemblyTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementAssemblyTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 30 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ACCESSORY_ASSEMBLY", "ARCH", "BEAM_GRID", "BRACED_FRAME", "GIRDER", "REINFORCEMENT_UNIT", "RIGID_FRAME", "SLAB_FIELD", "TRUSS", "ABUTMENT", "PIER", "PYLON", "CROSS_BRACING", "DECK", "MAST", "SIGNALASSEMBLY", "GRID", "SHELTER", "SUPPORTINGASSEMBLY", "SUSPENSIONASSEMBLY", "TRACTION_SWITCHING_ASSEMBLY", "TRACKPANEL", "TURNOUTPANEL", "DILATATIONPANEL", "RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY", "ENTRANCEWORKS", "SUMPBUSTER", "TRAFFIC_CALMING_DEVICE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value Ifc4x3_rc1::IfcElementAssemblyTypeEnum::FromString(const std::string& s) {
    if (s == "ACCESSORY_ASSEMBLY") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_ACCESSORY_ASSEMBLY;
    if (s == "ARCH") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_ARCH;
    if (s == "BEAM_GRID") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_BEAM_GRID;
    if (s == "BRACED_FRAME") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_BRACED_FRAME;
    if (s == "GIRDER") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_GIRDER;
    if (s == "REINFORCEMENT_UNIT") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_REINFORCEMENT_UNIT;
    if (s == "RIGID_FRAME") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_RIGID_FRAME;
    if (s == "SLAB_FIELD") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SLAB_FIELD;
    if (s == "TRUSS") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_TRUSS;
    if (s == "ABUTMENT") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_ABUTMENT;
    if (s == "PIER") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_PIER;
    if (s == "PYLON") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_PYLON;
    if (s == "CROSS_BRACING") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_CROSS_BRACING;
    if (s == "DECK") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_DECK;
    if (s == "MAST") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_MAST;
    if (s == "SIGNALASSEMBLY") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SIGNALASSEMBLY;
    if (s == "GRID") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_GRID;
    if (s == "SHELTER") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SHELTER;
    if (s == "SUPPORTINGASSEMBLY") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SUPPORTINGASSEMBLY;
    if (s == "SUSPENSIONASSEMBLY") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SUSPENSIONASSEMBLY;
    if (s == "TRACTION_SWITCHING_ASSEMBLY") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_TRACTION_SWITCHING_ASSEMBLY;
    if (s == "TRACKPANEL") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_TRACKPANEL;
    if (s == "TURNOUTPANEL") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_TURNOUTPANEL;
    if (s == "DILATATIONPANEL") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_DILATATIONPANEL;
    if (s == "RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY;
    if (s == "ENTRANCEWORKS") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_ENTRANCEWORKS;
    if (s == "SUMPBUSTER") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_SUMPBUSTER;
    if (s == "TRAFFIC_CALMING_DEVICE") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_TRAFFIC_CALMING_DEVICE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::IfcElementAssemblyType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcElementAssemblyTypeEnum::operator Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElementCompositionEnum::declaration() const { return *IFC4X3_RC1_IfcElementCompositionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcElementCompositionEnum::Class() { return *IFC4X3_RC1_IfcElementCompositionEnum_type; }

Ifc4x3_rc1::IfcElementCompositionEnum::IfcElementCompositionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcElementCompositionEnum::IfcElementCompositionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementCompositionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementCompositionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcElementCompositionEnum::operator Ifc4x3_rc1::IfcElementCompositionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEngineTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEngineTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEngineTypeEnum::Class() { return *IFC4X3_RC1_IfcEngineTypeEnum_type; }

Ifc4x3_rc1::IfcEngineTypeEnum::IfcEngineTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEngineTypeEnum::IfcEngineTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEngineTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEngineTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcEngineTypeEnum::operator Ifc4x3_rc1::IfcEngineTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Class() { return *IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type; }

Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporativeCoolerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::operator Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEvaporatorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEvaporatorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEvaporatorTypeEnum::Class() { return *IFC4X3_RC1_IfcEvaporatorTypeEnum_type; }

Ifc4x3_rc1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporatorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporatorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcEvaporatorTypeEnum::operator Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEventTriggerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEventTriggerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEventTriggerTypeEnum::Class() { return *IFC4X3_RC1_IfcEventTriggerTypeEnum_type; }

Ifc4x3_rc1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTriggerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTriggerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcEventTriggerTypeEnum::operator Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEventTypeEnum::declaration() const { return *IFC4X3_RC1_IfcEventTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcEventTypeEnum::Class() { return *IFC4X3_RC1_IfcEventTypeEnum_type; }

Ifc4x3_rc1::IfcEventTypeEnum::IfcEventTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcEventTypeEnum::IfcEventTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcEventTypeEnum::operator Ifc4x3_rc1::IfcEventTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Class() { return *IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type; }

Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalSpatialElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::operator Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::Class() { return *IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type; }

Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityPartCommonTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "SEGMENT", "ABOVEGROUND", "JUNCTION", "LEVELCROSSING", "BELOWGROUND", "SUBSTRUCTURE", "TERMINAL", "SUPERSTRUCTURE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::Value Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::FromString(const std::string& s) {
    if (s == "SEGMENT") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_SEGMENT;
    if (s == "ABOVEGROUND") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_ABOVEGROUND;
    if (s == "JUNCTION") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_JUNCTION;
    if (s == "LEVELCROSSING") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_LEVELCROSSING;
    if (s == "BELOWGROUND") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_BELOWGROUND;
    if (s == "SUBSTRUCTURE") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_SUBSTRUCTURE;
    if (s == "TERMINAL") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_TERMINAL;
    if (s == "SUPERSTRUCTURE") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_SUPERSTRUCTURE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::operator Ifc4x3_rc1::IfcFacilityPartCommonTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFacilityUsageEnum::declaration() const { return *IFC4X3_RC1_IfcFacilityUsageEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFacilityUsageEnum::Class() { return *IFC4X3_RC1_IfcFacilityUsageEnum_type; }

Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsageEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsageEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityUsageEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsageEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityUsageEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcFacilityUsageEnum::ToString(Value v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "LATERAL", "REGION", "VERTICAL", "LONGITUDINAL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcFacilityUsageEnum::Value Ifc4x3_rc1::IfcFacilityUsageEnum::FromString(const std::string& s) {
    if (s == "LATERAL") return ::Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsage_LATERAL;
    if (s == "REGION") return ::Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsage_REGION;
    if (s == "VERTICAL") return ::Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsage_VERTICAL;
    if (s == "LONGITUDINAL") return ::Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsage_LONGITUDINAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsage_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcFacilityUsageEnum::IfcFacilityUsage_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcFacilityUsageEnum::operator Ifc4x3_rc1::IfcFacilityUsageEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFanTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFanTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFanTypeEnum::Class() { return *IFC4X3_RC1_IfcFanTypeEnum_type; }

Ifc4x3_rc1::IfcFanTypeEnum::IfcFanTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFanTypeEnum::IfcFanTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFanTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFanTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFanTypeEnum::operator Ifc4x3_rc1::IfcFanTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFastenerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFastenerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFastenerTypeEnum::Class() { return *IFC4X3_RC1_IfcFastenerTypeEnum_type; }

Ifc4x3_rc1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFastenerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFastenerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFastenerTypeEnum::operator Ifc4x3_rc1::IfcFastenerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFilterTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFilterTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFilterTypeEnum::Class() { return *IFC4X3_RC1_IfcFilterTypeEnum_type; }

Ifc4x3_rc1::IfcFilterTypeEnum::IfcFilterTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFilterTypeEnum::IfcFilterTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFilterTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFilterTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFilterTypeEnum::operator Ifc4x3_rc1::IfcFilterTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Class() { return *IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type; }

Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFireSuppressionTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::operator Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFlowDirectionEnum::declaration() const { return *IFC4X3_RC1_IfcFlowDirectionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFlowDirectionEnum::Class() { return *IFC4X3_RC1_IfcFlowDirectionEnum_type; }

Ifc4x3_rc1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowDirectionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowDirectionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFlowDirectionEnum::operator Ifc4x3_rc1::IfcFlowDirectionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Class() { return *IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type; }

Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowInstrumentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::operator Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFlowMeterTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFlowMeterTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFlowMeterTypeEnum::Class() { return *IFC4X3_RC1_IfcFlowMeterTypeEnum_type; }

Ifc4x3_rc1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMeterTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMeterTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFlowMeterTypeEnum::operator Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFootingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFootingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFootingTypeEnum::Class() { return *IFC4X3_RC1_IfcFootingTypeEnum_type; }

Ifc4x3_rc1::IfcFootingTypeEnum::IfcFootingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFootingTypeEnum::IfcFootingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFootingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFootingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFootingTypeEnum::operator Ifc4x3_rc1::IfcFootingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFurnitureTypeEnum::declaration() const { return *IFC4X3_RC1_IfcFurnitureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcFurnitureTypeEnum::Class() { return *IFC4X3_RC1_IfcFurnitureTypeEnum_type; }

Ifc4x3_rc1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnitureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnitureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcFurnitureTypeEnum::operator Ifc4x3_rc1::IfcFurnitureTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGeographicElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcGeographicElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGeographicElementTypeEnum::Class() { return *IFC4X3_RC1_IfcGeographicElementTypeEnum_type; }

Ifc4x3_rc1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeographicElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeographicElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcGeographicElementTypeEnum::operator Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGeometricProjectionEnum::declaration() const { return *IFC4X3_RC1_IfcGeometricProjectionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGeometricProjectionEnum::Class() { return *IFC4X3_RC1_IfcGeometricProjectionEnum_type; }

Ifc4x3_rc1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricProjectionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricProjectionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcGeometricProjectionEnum::ToString(Value v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcGeometricProjectionEnum::operator Ifc4x3_rc1::IfcGeometricProjectionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGlobalOrLocalEnum::declaration() const { return *IFC4X3_RC1_IfcGlobalOrLocalEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGlobalOrLocalEnum::Class() { return *IFC4X3_RC1_IfcGlobalOrLocalEnum_type; }

Ifc4x3_rc1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGlobalOrLocalEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGlobalOrLocalEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcGlobalOrLocalEnum::operator Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGridTypeEnum::declaration() const { return *IFC4X3_RC1_IfcGridTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcGridTypeEnum::Class() { return *IFC4X3_RC1_IfcGridTypeEnum_type; }

Ifc4x3_rc1::IfcGridTypeEnum::IfcGridTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcGridTypeEnum::IfcGridTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGridTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGridTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcGridTypeEnum::operator Ifc4x3_rc1::IfcGridTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcHeatExchangerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcHeatExchangerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Class() { return *IFC4X3_RC1_IfcHeatExchangerTypeEnum_type; }

Ifc4x3_rc1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatExchangerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatExchangerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcHeatExchangerTypeEnum::operator Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcHumidifierTypeEnum::declaration() const { return *IFC4X3_RC1_IfcHumidifierTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcHumidifierTypeEnum::Class() { return *IFC4X3_RC1_IfcHumidifierTypeEnum_type; }

Ifc4x3_rc1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHumidifierTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHumidifierTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 15 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcHumidifierTypeEnum::operator Ifc4x3_rc1::IfcHumidifierTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImpactProtectionDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CRASHCUSHION", "DAMPINGSYSTEM", "FENDER", "BUMPER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::Value Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CRASHCUSHION") return ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_CRASHCUSHION;
    if (s == "DAMPINGSYSTEM") return ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_DAMPINGSYSTEM;
    if (s == "FENDER") return ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_FENDER;
    if (s == "BUMPER") return ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_BUMPER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::operator Ifc4x3_rc1::IfcImpactProtectionDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcInterceptorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcInterceptorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcInterceptorTypeEnum::Class() { return *IFC4X3_RC1_IfcInterceptorTypeEnum_type; }

Ifc4x3_rc1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInterceptorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInterceptorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcInterceptorTypeEnum::operator Ifc4x3_rc1::IfcInterceptorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcInternalOrExternalEnum::declaration() const { return *IFC4X3_RC1_IfcInternalOrExternalEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcInternalOrExternalEnum::Class() { return *IFC4X3_RC1_IfcInternalOrExternalEnum_type; }

Ifc4x3_rc1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInternalOrExternalEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInternalOrExternalEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcInternalOrExternalEnum::operator Ifc4x3_rc1::IfcInternalOrExternalEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcInventoryTypeEnum::declaration() const { return *IFC4X3_RC1_IfcInventoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcInventoryTypeEnum::Class() { return *IFC4X3_RC1_IfcInventoryTypeEnum_type; }

Ifc4x3_rc1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInventoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInventoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcInventoryTypeEnum::operator Ifc4x3_rc1::IfcInventoryTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcJunctionBoxTypeEnum::declaration() const { return *IFC4X3_RC1_IfcJunctionBoxTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Class() { return *IFC4X3_RC1_IfcJunctionBoxTypeEnum_type; }

Ifc4x3_rc1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcJunctionBoxTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcJunctionBoxTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcJunctionBoxTypeEnum::operator Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcKnotType::declaration() const { return *IFC4X3_RC1_IfcKnotType_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcKnotType::Class() { return *IFC4X3_RC1_IfcKnotType_type; }

Ifc4x3_rc1::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcKnotType::IfcKnotType(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKnotType_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcKnotType::IfcKnotType(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKnotType_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcKnotType::operator Ifc4x3_rc1::IfcKnotType::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLaborResourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcLaborResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLaborResourceTypeEnum::Class() { return *IFC4X3_RC1_IfcLaborResourceTypeEnum_type; }

Ifc4x3_rc1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLaborResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLaborResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 21 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcLaborResourceTypeEnum::operator Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLampTypeEnum::declaration() const { return *IFC4X3_RC1_IfcLampTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLampTypeEnum::Class() { return *IFC4X3_RC1_IfcLampTypeEnum_type; }

Ifc4x3_rc1::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLampTypeEnum::IfcLampTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLampTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLampTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLampTypeEnum::operator Ifc4x3_rc1::IfcLampTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLayerSetDirectionEnum::declaration() const { return *IFC4X3_RC1_IfcLayerSetDirectionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLayerSetDirectionEnum::Class() { return *IFC4X3_RC1_IfcLayerSetDirectionEnum_type; }

Ifc4x3_rc1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLayerSetDirectionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLayerSetDirectionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLayerSetDirectionEnum::operator Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLightDistributionCurveEnum::declaration() const { return *IFC4X3_RC1_IfcLightDistributionCurveEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLightDistributionCurveEnum::Class() { return *IFC4X3_RC1_IfcLightDistributionCurveEnum_type; }

Ifc4x3_rc1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightDistributionCurveEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightDistributionCurveEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLightDistributionCurveEnum::operator Ifc4x3_rc1::IfcLightDistributionCurveEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLightEmissionSourceEnum::declaration() const { return *IFC4X3_RC1_IfcLightEmissionSourceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLightEmissionSourceEnum::Class() { return *IFC4X3_RC1_IfcLightEmissionSourceEnum_type; }

Ifc4x3_rc1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightEmissionSourceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightEmissionSourceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLightEmissionSourceEnum::operator Ifc4x3_rc1::IfcLightEmissionSourceEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLightFixtureTypeEnum::declaration() const { return *IFC4X3_RC1_IfcLightFixtureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLightFixtureTypeEnum::Class() { return *IFC4X3_RC1_IfcLightFixtureTypeEnum_type; }

Ifc4x3_rc1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightFixtureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightFixtureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLightFixtureTypeEnum::operator Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Class() { return *IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type; }

Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLiquidTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "LOADINGARM") return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_LOADINGARM;
    if (s == "HOSEREEL") return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_HOSEREEL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::operator Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLoadGroupTypeEnum::declaration() const { return *IFC4X3_RC1_IfcLoadGroupTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLoadGroupTypeEnum::Class() { return *IFC4X3_RC1_IfcLoadGroupTypeEnum_type; }

Ifc4x3_rc1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLoadGroupTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLoadGroupTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLoadGroupTypeEnum::operator Ifc4x3_rc1::IfcLoadGroupTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLogicalOperatorEnum::declaration() const { return *IFC4X3_RC1_IfcLogicalOperatorEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcLogicalOperatorEnum::Class() { return *IFC4X3_RC1_IfcLogicalOperatorEnum_type; }

Ifc4x3_rc1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLogicalOperatorEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLogicalOperatorEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcLogicalOperatorEnum::operator Ifc4x3_rc1::IfcLogicalOperatorEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMarineFacilityTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMarineFacilityTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMarineFacilityTypeEnum::Class() { return *IFC4X3_RC1_IfcMarineFacilityTypeEnum_type; }

Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarineFacilityTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarineFacilityTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcMarineFacilityTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 21 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CANAL", "WATERWAYSHIPLIFT", "EMBANKMENT", "LAUNCHRECOVERY", "MARINEDEFENCE", "HYDROLIFT", "SHIPYARD", "SHIPLIFT", "PORT", "QUAY", "FLOATINGDOCK", "NAVIGATIONALCHANNEL", "BREAKWATER", "DRYDOCK", "JETTY", "SHIPLOCK", "BARRIERBEACH", "SLIPWAY", "WATERWAY", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcMarineFacilityTypeEnum::Value Ifc4x3_rc1::IfcMarineFacilityTypeEnum::FromString(const std::string& s) {
    if (s == "CANAL") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_CANAL;
    if (s == "WATERWAYSHIPLIFT") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_WATERWAYSHIPLIFT;
    if (s == "EMBANKMENT") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_EMBANKMENT;
    if (s == "LAUNCHRECOVERY") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_LAUNCHRECOVERY;
    if (s == "MARINEDEFENCE") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_MARINEDEFENCE;
    if (s == "HYDROLIFT") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_HYDROLIFT;
    if (s == "SHIPYARD") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SHIPYARD;
    if (s == "SHIPLIFT") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SHIPLIFT;
    if (s == "PORT") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_PORT;
    if (s == "QUAY") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_QUAY;
    if (s == "FLOATINGDOCK") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_FLOATINGDOCK;
    if (s == "NAVIGATIONALCHANNEL") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_NAVIGATIONALCHANNEL;
    if (s == "BREAKWATER") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_BREAKWATER;
    if (s == "DRYDOCK") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_DRYDOCK;
    if (s == "JETTY") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_JETTY;
    if (s == "SHIPLOCK") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SHIPLOCK;
    if (s == "BARRIERBEACH") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_BARRIERBEACH;
    if (s == "SLIPWAY") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SLIPWAY;
    if (s == "WATERWAY") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_WATERWAY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcMarineFacilityTypeEnum::operator Ifc4x3_rc1::IfcMarineFacilityTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMarinePartTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMarinePartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMarinePartTypeEnum::Class() { return *IFC4X3_RC1_IfcMarinePartTypeEnum_type; }

Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarinePartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarinePartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcMarinePartTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 26 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CREST", "MANUFACTURING", "LOWWATERLINE", "CORE", "WATERFIELD", "CILL_LEVEL", "BERTHINGSTRUCTURE", "COPELEVEL", "CHAMBER", "STORAGE", "APPROACHCHANNEL", "VEHICLESERVICING", "SHIPTRANSFER", "GATEHEAD", "GUDINGSTRUCTURE", "BELOWWATERLINE", "WEATHERSIDE", "LANDFIELD", "PROTECTION", "LEEWARDSIDE", "ABOVEWATERLINE", "ANCHORAGE", "NAVIGATIONALAREA", "HIGHWATERLINE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcMarinePartTypeEnum::Value Ifc4x3_rc1::IfcMarinePartTypeEnum::FromString(const std::string& s) {
    if (s == "CREST") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_CREST;
    if (s == "MANUFACTURING") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_MANUFACTURING;
    if (s == "LOWWATERLINE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_LOWWATERLINE;
    if (s == "CORE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_CORE;
    if (s == "WATERFIELD") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_WATERFIELD;
    if (s == "CILL_LEVEL") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_CILL_LEVEL;
    if (s == "BERTHINGSTRUCTURE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_BERTHINGSTRUCTURE;
    if (s == "COPELEVEL") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_COPELEVEL;
    if (s == "CHAMBER") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_CHAMBER;
    if (s == "STORAGE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_STORAGE;
    if (s == "APPROACHCHANNEL") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_APPROACHCHANNEL;
    if (s == "VEHICLESERVICING") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_VEHICLESERVICING;
    if (s == "SHIPTRANSFER") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_SHIPTRANSFER;
    if (s == "GATEHEAD") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_GATEHEAD;
    if (s == "GUDINGSTRUCTURE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_GUDINGSTRUCTURE;
    if (s == "BELOWWATERLINE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_BELOWWATERLINE;
    if (s == "WEATHERSIDE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_WEATHERSIDE;
    if (s == "LANDFIELD") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_LANDFIELD;
    if (s == "PROTECTION") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_PROTECTION;
    if (s == "LEEWARDSIDE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_LEEWARDSIDE;
    if (s == "ABOVEWATERLINE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_ABOVEWATERLINE;
    if (s == "ANCHORAGE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_ANCHORAGE;
    if (s == "NAVIGATIONALAREA") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_NAVIGATIONALAREA;
    if (s == "HIGHWATERLINE") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_HIGHWATERLINE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcMarinePartTypeEnum::IfcMarinePartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcMarinePartTypeEnum::operator Ifc4x3_rc1::IfcMarinePartTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Class() { return *IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type; }

Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMechanicalFastenerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORBOLT") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_ANCHORBOLT;
    if (s == "BOLT") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_BOLT;
    if (s == "DOWEL") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_DOWEL;
    if (s == "NAIL") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NAIL;
    if (s == "NAILPLATE") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NAILPLATE;
    if (s == "RIVET") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RIVET;
    if (s == "SCREW") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_SCREW;
    if (s == "SHEARCONNECTOR") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_SHEARCONNECTOR;
    if (s == "STAPLE") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_STAPLE;
    if (s == "STUDSHEARCONNECTOR") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_STUDSHEARCONNECTOR;
    if (s == "COUPLER") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_COUPLER;
    if (s == "RAILJOINT") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RAILJOINT;
    if (s == "RAILFASTENING") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RAILFASTENING;
    if (s == "CHAIN") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_CHAIN;
    if (s == "ROPE") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_ROPE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::operator Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMedicalDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::operator Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMemberTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMemberTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMemberTypeEnum::Class() { return *IFC4X3_RC1_IfcMemberTypeEnum_type; }

Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMemberTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMemberTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcMemberTypeEnum::Value Ifc4x3_rc1::IfcMemberTypeEnum::FromString(const std::string& s) {
    if (s == "BRACE") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_BRACE;
    if (s == "CHORD") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_CHORD;
    if (s == "COLLAR") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_COLLAR;
    if (s == "MEMBER") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_MEMBER;
    if (s == "MULLION") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_MULLION;
    if (s == "PLATE") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_PLATE;
    if (s == "POST") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_POST;
    if (s == "PURLIN") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_PURLIN;
    if (s == "RAFTER") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_RAFTER;
    if (s == "STRINGER") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_STRINGER;
    if (s == "STRUT") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_STRUT;
    if (s == "STUD") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_STUD;
    if (s == "STIFFENING_RIB") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_STIFFENING_RIB;
    if (s == "ARCH_SEGMENT") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_ARCH_SEGMENT;
    if (s == "SUSPENSION_CABLE") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_SUSPENSION_CABLE;
    if (s == "SUSPENDER") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_SUSPENDER;
    if (s == "STAY_CABLE") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_STAY_CABLE;
    if (s == "STRUCTURALCABLE") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_STRUCTURALCABLE;
    if (s == "TIEBAR") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_TIEBAR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcMemberTypeEnum::IfcMemberType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcMemberTypeEnum::operator Ifc4x3_rc1::IfcMemberTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Class() { return *IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type; }

Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMobileTelecommunicationsApplianceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "E_UTRAN_NODE_B", "REMOTE_RADIO_UNIT", "ACCESSPOINT", "BASETRANSCEIVERSTATION", "REMOTEUNIT", "BASEBANDUNIT", "MASTERUNIT", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "E_UTRAN_NODE_B") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_E_UTRAN_NODE_B;
    if (s == "REMOTE_RADIO_UNIT") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_REMOTE_RADIO_UNIT;
    if (s == "ACCESSPOINT") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_ACCESSPOINT;
    if (s == "BASETRANSCEIVERSTATION") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_BASETRANSCEIVERSTATION;
    if (s == "REMOTEUNIT") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_REMOTEUNIT;
    if (s == "BASEBANDUNIT") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_BASEBANDUNIT;
    if (s == "MASTERUNIT") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_MASTERUNIT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::operator Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMooringDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMooringDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcMooringDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMooringDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMooringDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "LINETENSIONER", "MAGNETICDEVICE", "MOORINGHOOKS", "VACUUMDEVICE", "BOLLARD", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value Ifc4x3_rc1::IfcMooringDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "LINETENSIONER") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_LINETENSIONER;
    if (s == "MAGNETICDEVICE") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_MAGNETICDEVICE;
    if (s == "MOORINGHOOKS") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_MOORINGHOOKS;
    if (s == "VACUUMDEVICE") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_VACUUMDEVICE;
    if (s == "BOLLARD") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_BOLLARD;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcMooringDeviceTypeEnum::operator Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMotorConnectionTypeEnum::declaration() const { return *IFC4X3_RC1_IfcMotorConnectionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Class() { return *IFC4X3_RC1_IfcMotorConnectionTypeEnum_type; }

Ifc4x3_rc1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMotorConnectionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMotorConnectionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcMotorConnectionTypeEnum::operator Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcNavigationElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcNavigationElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcNavigationElementTypeEnum::Class() { return *IFC4X3_RC1_IfcNavigationElementTypeEnum_type; }

Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNavigationElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNavigationElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value Ifc4x3_rc1::IfcNavigationElementTypeEnum::FromString(const std::string& s) {
    if (s == "BEACON") return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementType_BEACON;
    if (s == "BUOY") return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementType_BUOY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::IfcNavigationElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcNavigationElementTypeEnum::operator Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcNullStyle::declaration() const { return *IFC4X3_RC1_IfcNullStyle_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcNullStyle::Class() { return *IFC4X3_RC1_IfcNullStyle_type; }

Ifc4x3_rc1::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcNullStyle::IfcNullStyle(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNullStyle_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcNullStyle::IfcNullStyle(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNullStyle_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcNullStyle::operator Ifc4x3_rc1::IfcNullStyle::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcObjectTypeEnum::declaration() const { return *IFC4X3_RC1_IfcObjectTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcObjectTypeEnum::Class() { return *IFC4X3_RC1_IfcObjectTypeEnum_type; }

Ifc4x3_rc1::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcObjectTypeEnum::IfcObjectTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcObjectTypeEnum::operator Ifc4x3_rc1::IfcObjectTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcObjectiveEnum::declaration() const { return *IFC4X3_RC1_IfcObjectiveEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcObjectiveEnum::Class() { return *IFC4X3_RC1_IfcObjectiveEnum_type; }

Ifc4x3_rc1::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcObjectiveEnum::IfcObjectiveEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectiveEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectiveEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcObjectiveEnum::operator Ifc4x3_rc1::IfcObjectiveEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcOccupantTypeEnum::declaration() const { return *IFC4X3_RC1_IfcOccupantTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcOccupantTypeEnum::Class() { return *IFC4X3_RC1_IfcOccupantTypeEnum_type; }

Ifc4x3_rc1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOccupantTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOccupantTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcOccupantTypeEnum::operator Ifc4x3_rc1::IfcOccupantTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcOpeningElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcOpeningElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcOpeningElementTypeEnum::Class() { return *IFC4X3_RC1_IfcOpeningElementTypeEnum_type; }

Ifc4x3_rc1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpeningElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpeningElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcOpeningElementTypeEnum::operator Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcOutletTypeEnum::declaration() const { return *IFC4X3_RC1_IfcOutletTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcOutletTypeEnum::Class() { return *IFC4X3_RC1_IfcOutletTypeEnum_type; }

Ifc4x3_rc1::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcOutletTypeEnum::IfcOutletTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOutletTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOutletTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcOutletTypeEnum::operator Ifc4x3_rc1::IfcOutletTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Class() { return *IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type; }

Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPerformanceHistoryTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::operator Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::declaration() const { return *IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::Class() { return *IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type; }

Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermeableCoveringOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::operator Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPermitTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPermitTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPermitTypeEnum::Class() { return *IFC4X3_RC1_IfcPermitTypeEnum_type; }

Ifc4x3_rc1::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPermitTypeEnum::IfcPermitTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermitTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermitTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPermitTypeEnum::operator Ifc4x3_rc1::IfcPermitTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::declaration() const { return *IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Class() { return *IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type; }

Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalOrVirtualEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::operator Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPileConstructionEnum::declaration() const { return *IFC4X3_RC1_IfcPileConstructionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPileConstructionEnum::Class() { return *IFC4X3_RC1_IfcPileConstructionEnum_type; }

Ifc4x3_rc1::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPileConstructionEnum::IfcPileConstructionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileConstructionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileConstructionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPileConstructionEnum::operator Ifc4x3_rc1::IfcPileConstructionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPileTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPileTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPileTypeEnum::Class() { return *IFC4X3_RC1_IfcPileTypeEnum_type; }

Ifc4x3_rc1::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPileTypeEnum::IfcPileTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPileTypeEnum::operator Ifc4x3_rc1::IfcPileTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPipeFittingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPipeFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPipeFittingTypeEnum::Class() { return *IFC4X3_RC1_IfcPipeFittingTypeEnum_type; }

Ifc4x3_rc1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeFittingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPipeFittingTypeEnum::operator Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPipeSegmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPipeSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Class() { return *IFC4X3_RC1_IfcPipeSegmentTypeEnum_type; }

Ifc4x3_rc1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeSegmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPipeSegmentTypeEnum::operator Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPlateTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPlateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPlateTypeEnum::Class() { return *IFC4X3_RC1_IfcPlateTypeEnum_type; }

Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcPlateTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CURTAIN_PANEL", "SHEET", "FLANGE_PLATE", "WEB_PLATE", "STIFFENER_PLATE", "GUSSET_PLATE", "COVER_PLATE", "SPLICE_PLATE", "BASE_PLATE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcPlateTypeEnum::Value Ifc4x3_rc1::IfcPlateTypeEnum::FromString(const std::string& s) {
    if (s == "CURTAIN_PANEL") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_CURTAIN_PANEL;
    if (s == "SHEET") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_SHEET;
    if (s == "FLANGE_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_FLANGE_PLATE;
    if (s == "WEB_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_WEB_PLATE;
    if (s == "STIFFENER_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_STIFFENER_PLATE;
    if (s == "GUSSET_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_GUSSET_PLATE;
    if (s == "COVER_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_COVER_PLATE;
    if (s == "SPLICE_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_SPLICE_PLATE;
    if (s == "BASE_PLATE") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_BASE_PLATE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcPlateTypeEnum::IfcPlateType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcPlateTypeEnum::operator Ifc4x3_rc1::IfcPlateTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::declaration() const { return *IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Class() { return *IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type; }

Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreferredSurfaceCurveRepresentation_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::operator Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProcedureTypeEnum::declaration() const { return *IFC4X3_RC1_IfcProcedureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProcedureTypeEnum::Class() { return *IFC4X3_RC1_IfcProcedureTypeEnum_type; }

Ifc4x3_rc1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcedureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcedureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcProcedureTypeEnum::operator Ifc4x3_rc1::IfcProcedureTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProfileTypeEnum::declaration() const { return *IFC4X3_RC1_IfcProfileTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProfileTypeEnum::Class() { return *IFC4X3_RC1_IfcProfileTypeEnum_type; }

Ifc4x3_rc1::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProfileTypeEnum::IfcProfileTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProfileTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProfileTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcProfileTypeEnum::operator Ifc4x3_rc1::IfcProfileTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProjectOrderTypeEnum::declaration() const { return *IFC4X3_RC1_IfcProjectOrderTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProjectOrderTypeEnum::Class() { return *IFC4X3_RC1_IfcProjectOrderTypeEnum_type; }

Ifc4x3_rc1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectOrderTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectOrderTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcProjectOrderTypeEnum::operator Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::declaration() const { return *IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Class() { return *IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type; }

Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectedOrTrueLengthEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::operator Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProjectionElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcProjectionElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProjectionElementTypeEnum::Class() { return *IFC4X3_RC1_IfcProjectionElementTypeEnum_type; }

Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectionElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectionElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value Ifc4x3_rc1::IfcProjectionElementTypeEnum::FromString(const std::string& s) {
    if (s == "BLISTER") return ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementType_BLISTER;
    if (s == "DEVIATOR") return ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementType_DEVIATOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::IfcProjectionElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcProjectionElementTypeEnum::operator Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Class() { return *IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type; }

Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetTemplateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::operator Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::declaration() const { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Class() { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type; }

Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::operator Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::operator Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPumpTypeEnum::declaration() const { return *IFC4X3_RC1_IfcPumpTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcPumpTypeEnum::Class() { return *IFC4X3_RC1_IfcPumpTypeEnum_type; }

Ifc4x3_rc1::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcPumpTypeEnum::IfcPumpTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPumpTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPumpTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcPumpTypeEnum::operator Ifc4x3_rc1::IfcPumpTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRailTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRailTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRailTypeEnum::Class() { return *IFC4X3_RC1_IfcRailTypeEnum_type; }

Ifc4x3_rc1::IfcRailTypeEnum::IfcRailTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRailTypeEnum::IfcRailTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRailTypeEnum::IfcRailTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRailTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "RACKRAIL", "BLADE", "GUARDRAIL", "STOCKRAIL", "CHECKRAIL", "RAIL", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcRailTypeEnum::Value Ifc4x3_rc1::IfcRailTypeEnum::FromString(const std::string& s) {
    if (s == "RACKRAIL") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_RACKRAIL;
    if (s == "BLADE") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_BLADE;
    if (s == "GUARDRAIL") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_GUARDRAIL;
    if (s == "STOCKRAIL") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_STOCKRAIL;
    if (s == "CHECKRAIL") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_CHECKRAIL;
    if (s == "RAIL") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_RAIL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcRailTypeEnum::IfcRailType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcRailTypeEnum::operator Ifc4x3_rc1::IfcRailTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRailingTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRailingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRailingTypeEnum::Class() { return *IFC4X3_RC1_IfcRailingTypeEnum_type; }

Ifc4x3_rc1::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRailingTypeEnum::IfcRailingTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailingTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcRailingTypeEnum::operator Ifc4x3_rc1::IfcRailingTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRailwayPartTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRailwayPartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRailwayPartTypeEnum::Class() { return *IFC4X3_RC1_IfcRailwayPartTypeEnum_type; }

Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailwayPartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailwayPartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRailwayPartTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "TRACKSTRUCTURE", "TRACKSTRUCTUREPART", "LINESIDESTRUCTUREPART", "DILATATIONSUPERSTRUCTURE", "PLAINTRACKSUPESTRUCTURE", "LINESIDESTRUCTURE", "SUPERSTRUCTURE", "TURNOUTSUPERSTRUCTURE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcRailwayPartTypeEnum::Value Ifc4x3_rc1::IfcRailwayPartTypeEnum::FromString(const std::string& s) {
    if (s == "TRACKSTRUCTURE") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_TRACKSTRUCTURE;
    if (s == "TRACKSTRUCTUREPART") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_TRACKSTRUCTUREPART;
    if (s == "LINESIDESTRUCTUREPART") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_LINESIDESTRUCTUREPART;
    if (s == "DILATATIONSUPERSTRUCTURE") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_DILATATIONSUPERSTRUCTURE;
    if (s == "PLAINTRACKSUPESTRUCTURE") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_PLAINTRACKSUPESTRUCTURE;
    if (s == "LINESIDESTRUCTURE") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_LINESIDESTRUCTURE;
    if (s == "SUPERSTRUCTURE") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_SUPERSTRUCTURE;
    if (s == "TURNOUTSUPERSTRUCTURE") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_TURNOUTSUPERSTRUCTURE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcRailwayPartTypeEnum::IfcRailwayPartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcRailwayPartTypeEnum::operator Ifc4x3_rc1::IfcRailwayPartTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRampFlightTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRampFlightTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRampFlightTypeEnum::Class() { return *IFC4X3_RC1_IfcRampFlightTypeEnum_type; }

Ifc4x3_rc1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampFlightTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampFlightTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcRampFlightTypeEnum::operator Ifc4x3_rc1::IfcRampFlightTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRampTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRampTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRampTypeEnum::Class() { return *IFC4X3_RC1_IfcRampTypeEnum_type; }

Ifc4x3_rc1::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRampTypeEnum::IfcRampTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRampTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcRampTypeEnum::operator Ifc4x3_rc1::IfcRampTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRecurrenceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRecurrenceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRecurrenceTypeEnum::Class() { return *IFC4X3_RC1_IfcRecurrenceTypeEnum_type; }

Ifc4x3_rc1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRecurrenceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRecurrenceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRecurrenceTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcRecurrenceTypeEnum::operator Ifc4x3_rc1::IfcRecurrenceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReferentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcReferentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReferentTypeEnum::Class() { return *IFC4X3_RC1_IfcReferentTypeEnum_type; }

Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReferentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReferentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcReferentTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "KILOPOINT", "MILEPOINT", "STATION", "REFERENCEMARKER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcReferentTypeEnum::Value Ifc4x3_rc1::IfcReferentTypeEnum::FromString(const std::string& s) {
    if (s == "KILOPOINT") return ::Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentType_KILOPOINT;
    if (s == "MILEPOINT") return ::Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentType_MILEPOINT;
    if (s == "STATION") return ::Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentType_STATION;
    if (s == "REFERENCEMARKER") return ::Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentType_REFERENCEMARKER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcReferentTypeEnum::IfcReferentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcReferentTypeEnum::operator Ifc4x3_rc1::IfcReferentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReflectanceMethodEnum::declaration() const { return *IFC4X3_RC1_IfcReflectanceMethodEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReflectanceMethodEnum::Class() { return *IFC4X3_RC1_IfcReflectanceMethodEnum_type; }

Ifc4x3_rc1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReflectanceMethodEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReflectanceMethodEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcReflectanceMethodEnum::operator Ifc4x3_rc1::IfcReflectanceMethodEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::declaration() const { return *IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Class() { return *IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type; }

Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcedSoilTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "SURCHARGEPRELOADED", "VERTICALLYDRAINED", "DYNAMICALLYCOMPACTED", "REPLACED", "ROLLERCOMPACTED", "GROUTED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::FromString(const std::string& s) {
    if (s == "SURCHARGEPRELOADED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_SURCHARGEPRELOADED;
    if (s == "VERTICALLYDRAINED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_VERTICALLYDRAINED;
    if (s == "DYNAMICALLYCOMPACTED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_DYNAMICALLYCOMPACTED;
    if (s == "REPLACED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_REPLACED;
    if (s == "ROLLERCOMPACTED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_ROLLERCOMPACTED;
    if (s == "GROUTED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_GROUTED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::operator Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingBarRoleEnum::declaration() const { return *IFC4X3_RC1_IfcReinforcingBarRoleEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Class() { return *IFC4X3_RC1_IfcReinforcingBarRoleEnum_type; }

Ifc4x3_rc1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarRoleEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarRoleEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcReinforcingBarRoleEnum::operator Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::declaration() const { return *IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Class() { return *IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type; }

Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarSurfaceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::operator Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingBarTypeEnum::declaration() const { return *IFC4X3_RC1_IfcReinforcingBarTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Class() { return *IFC4X3_RC1_IfcReinforcingBarTypeEnum_type; }

Ifc4x3_rc1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcReinforcingBarTypeEnum::operator Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::declaration() const { return *IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Class() { return *IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type; }

Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingMeshTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::operator Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRoadPartTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRoadPartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRoadPartTypeEnum::Class() { return *IFC4X3_RC1_IfcRoadPartTypeEnum_type; }

Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoadPartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoadPartTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRoadPartTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 26 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "ROADSIDEPART", "BUS_STOP", "HARDSHOULDER", "INTERSECTION", "PASSINGBAY", "ROADWAYPLATEAU", "ROADSIDE", "REFUGEISLAND", "TOLLPLAZA", "CENTRALRESERVE", "SIDEWALK", "PARKINGBAY", "RAILWAYCROSSING", "PEDESTRIAN_CROSSING", "SOFTSHOULDER", "BICYCLECROSSING", "CENTRALISLAND", "SHOULDER", "TRAFFICLANE", "ROADSEGMENT", "ROUNDABOUT", "LAYBY", "CARRIAGEWAY", "TRAFFICISLAND", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcRoadPartTypeEnum::Value Ifc4x3_rc1::IfcRoadPartTypeEnum::FromString(const std::string& s) {
    if (s == "ROADSIDEPART") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_ROADSIDEPART;
    if (s == "BUS_STOP") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_BUS_STOP;
    if (s == "HARDSHOULDER") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_HARDSHOULDER;
    if (s == "INTERSECTION") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_INTERSECTION;
    if (s == "PASSINGBAY") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_PASSINGBAY;
    if (s == "ROADWAYPLATEAU") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_ROADWAYPLATEAU;
    if (s == "ROADSIDE") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_ROADSIDE;
    if (s == "REFUGEISLAND") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_REFUGEISLAND;
    if (s == "TOLLPLAZA") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_TOLLPLAZA;
    if (s == "CENTRALRESERVE") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_CENTRALRESERVE;
    if (s == "SIDEWALK") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_SIDEWALK;
    if (s == "PARKINGBAY") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_PARKINGBAY;
    if (s == "RAILWAYCROSSING") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_RAILWAYCROSSING;
    if (s == "PEDESTRIAN_CROSSING") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_PEDESTRIAN_CROSSING;
    if (s == "SOFTSHOULDER") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_SOFTSHOULDER;
    if (s == "BICYCLECROSSING") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_BICYCLECROSSING;
    if (s == "CENTRALISLAND") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_CENTRALISLAND;
    if (s == "SHOULDER") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_SHOULDER;
    if (s == "TRAFFICLANE") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_TRAFFICLANE;
    if (s == "ROADSEGMENT") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_ROADSEGMENT;
    if (s == "ROUNDABOUT") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_ROUNDABOUT;
    if (s == "LAYBY") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_LAYBY;
    if (s == "CARRIAGEWAY") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_CARRIAGEWAY;
    if (s == "TRAFFICISLAND") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_TRAFFICISLAND;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcRoadPartTypeEnum::IfcRoadPartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcRoadPartTypeEnum::operator Ifc4x3_rc1::IfcRoadPartTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRoleEnum::declaration() const { return *IFC4X3_RC1_IfcRoleEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRoleEnum::Class() { return *IFC4X3_RC1_IfcRoleEnum_type; }

Ifc4x3_rc1::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRoleEnum::IfcRoleEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoleEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoleEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRoleEnum::ToString(Value v) {
    if ( v < 0 || v >= 23 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcRoleEnum::operator Ifc4x3_rc1::IfcRoleEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRoofTypeEnum::declaration() const { return *IFC4X3_RC1_IfcRoofTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcRoofTypeEnum::Class() { return *IFC4X3_RC1_IfcRoofTypeEnum_type; }

Ifc4x3_rc1::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcRoofTypeEnum::IfcRoofTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoofTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoofTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcRoofTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 15 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcRoofTypeEnum::operator Ifc4x3_rc1::IfcRoofTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSIPrefix::declaration() const { return *IFC4X3_RC1_IfcSIPrefix_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSIPrefix::Class() { return *IFC4X3_RC1_IfcSIPrefix_type; }

Ifc4x3_rc1::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSIPrefix::IfcSIPrefix(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIPrefix_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIPrefix_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSIPrefix::ToString(Value v) {
    if ( v < 0 || v >= 16 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcSIPrefix::operator Ifc4x3_rc1::IfcSIPrefix::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSIUnitName::declaration() const { return *IFC4X3_RC1_IfcSIUnitName_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSIUnitName::Class() { return *IFC4X3_RC1_IfcSIUnitName_type; }

Ifc4x3_rc1::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSIUnitName::IfcSIUnitName(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIUnitName_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSIUnitName::IfcSIUnitName(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIUnitName_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSIUnitName::ToString(Value v) {
    if ( v < 0 || v >= 30 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcSIUnitName::operator Ifc4x3_rc1::IfcSIUnitName::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Class() { return *IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type; }

Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSanitaryTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::operator Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSectionTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSectionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSectionTypeEnum::Class() { return *IFC4X3_RC1_IfcSectionTypeEnum_type; }

Ifc4x3_rc1::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSectionTypeEnum::IfcSectionTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSectionTypeEnum::operator Ifc4x3_rc1::IfcSectionTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSensorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSensorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSensorTypeEnum::Class() { return *IFC4X3_RC1_IfcSensorTypeEnum_type; }

Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSensorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSensorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSensorTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 34 ) throw IfcException("Unable to 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", "EARTHQUAKESENSOR", "FOREIGNOBJECTDETECTIONSENSOR", "OBSTACLESENSOR", "RAINSENSOR", "SNOWDEPTHSENSOR", "TRAINSENSOR", "TURNOUTCLOSURESENSOR", "WHEELSENSOR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcSensorTypeEnum::Value Ifc4x3_rc1::IfcSensorTypeEnum::FromString(const std::string& s) {
    if (s == "COSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_COSENSOR;
    if (s == "CO2SENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_CO2SENSOR;
    if (s == "CONDUCTANCESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_CONDUCTANCESENSOR;
    if (s == "CONTACTSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_CONTACTSENSOR;
    if (s == "FIRESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_FIRESENSOR;
    if (s == "FLOWSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_FLOWSENSOR;
    if (s == "FROSTSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_FROSTSENSOR;
    if (s == "GASSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_GASSENSOR;
    if (s == "HEATSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_HEATSENSOR;
    if (s == "HUMIDITYSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_HUMIDITYSENSOR;
    if (s == "IDENTIFIERSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_IDENTIFIERSENSOR;
    if (s == "IONCONCENTRATIONSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_IONCONCENTRATIONSENSOR;
    if (s == "LEVELSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_LEVELSENSOR;
    if (s == "LIGHTSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_LIGHTSENSOR;
    if (s == "MOISTURESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_MOISTURESENSOR;
    if (s == "MOVEMENTSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_MOVEMENTSENSOR;
    if (s == "PHSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_PHSENSOR;
    if (s == "PRESSURESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_PRESSURESENSOR;
    if (s == "RADIATIONSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_RADIATIONSENSOR;
    if (s == "RADIOACTIVITYSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_RADIOACTIVITYSENSOR;
    if (s == "SMOKESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_SMOKESENSOR;
    if (s == "SOUNDSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_SOUNDSENSOR;
    if (s == "TEMPERATURESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_TEMPERATURESENSOR;
    if (s == "WINDSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_WINDSENSOR;
    if (s == "EARTHQUAKESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_EARTHQUAKESENSOR;
    if (s == "FOREIGNOBJECTDETECTIONSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_FOREIGNOBJECTDETECTIONSENSOR;
    if (s == "OBSTACLESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_OBSTACLESENSOR;
    if (s == "RAINSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_RAINSENSOR;
    if (s == "SNOWDEPTHSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_SNOWDEPTHSENSOR;
    if (s == "TRAINSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_TRAINSENSOR;
    if (s == "TURNOUTCLOSURESENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_TURNOUTCLOSURESENSOR;
    if (s == "WHEELSENSOR") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_WHEELSENSOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcSensorTypeEnum::IfcSensorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcSensorTypeEnum::operator Ifc4x3_rc1::IfcSensorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSequenceEnum::declaration() const { return *IFC4X3_RC1_IfcSequenceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSequenceEnum::Class() { return *IFC4X3_RC1_IfcSequenceEnum_type; }

Ifc4x3_rc1::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSequenceEnum::IfcSequenceEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSequenceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSequenceEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSequenceEnum::operator Ifc4x3_rc1::IfcSequenceEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcShadingDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcShadingDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcShadingDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShadingDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShadingDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcShadingDeviceTypeEnum::operator Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSignTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSignTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSignTypeEnum::Class() { return *IFC4X3_RC1_IfcSignTypeEnum_type; }

Ifc4x3_rc1::IfcSignTypeEnum::IfcSignTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSignTypeEnum::IfcSignTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSignTypeEnum::IfcSignTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSignTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "MARKER", "PICTORAL", "MIRROR", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcSignTypeEnum::Value Ifc4x3_rc1::IfcSignTypeEnum::FromString(const std::string& s) {
    if (s == "MARKER") return ::Ifc4x3_rc1::IfcSignTypeEnum::IfcSignType_MARKER;
    if (s == "PICTORAL") return ::Ifc4x3_rc1::IfcSignTypeEnum::IfcSignType_PICTORAL;
    if (s == "MIRROR") return ::Ifc4x3_rc1::IfcSignTypeEnum::IfcSignType_MIRROR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcSignTypeEnum::IfcSignType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcSignTypeEnum::IfcSignType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcSignTypeEnum::operator Ifc4x3_rc1::IfcSignTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSignalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSignalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSignalTypeEnum::Class() { return *IFC4X3_RC1_IfcSignalTypeEnum_type; }

Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSignalTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 5 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "VISUAL", "AUDIO", "MIXED", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcSignalTypeEnum::Value Ifc4x3_rc1::IfcSignalTypeEnum::FromString(const std::string& s) {
    if (s == "VISUAL") return ::Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalType_VISUAL;
    if (s == "AUDIO") return ::Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalType_AUDIO;
    if (s == "MIXED") return ::Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalType_MIXED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcSignalTypeEnum::IfcSignalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcSignalTypeEnum::operator Ifc4x3_rc1::IfcSignalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Class() { return *IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type; }

Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSimplePropertyTemplateTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 12 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::operator Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSlabTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSlabTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSlabTypeEnum::Class() { return *IFC4X3_RC1_IfcSlabTypeEnum_type; }

Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcSlabTypeEnum::Value Ifc4x3_rc1::IfcSlabTypeEnum::FromString(const std::string& s) {
    if (s == "FLOOR") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_FLOOR;
    if (s == "ROOF") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_ROOF;
    if (s == "LANDING") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_LANDING;
    if (s == "BASESLAB") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_BASESLAB;
    if (s == "APPROACH_SLAB") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_APPROACH_SLAB;
    if (s == "PAVING") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_PAVING;
    if (s == "WEARING") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_WEARING;
    if (s == "SIDEWALK") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_SIDEWALK;
    if (s == "TRACKSLAB") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_TRACKSLAB;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcSlabTypeEnum::IfcSlabType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcSlabTypeEnum::operator Ifc4x3_rc1::IfcSlabTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSolarDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSolarDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcSolarDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolarDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolarDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSolarDeviceTypeEnum::operator Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Class() { return *IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type; }

Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceHeaterTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::operator Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSpaceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSpaceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSpaceTypeEnum::Class() { return *IFC4X3_RC1_IfcSpaceTypeEnum_type; }

Ifc4x3_rc1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSpaceTypeEnum::operator Ifc4x3_rc1::IfcSpaceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSpatialZoneTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSpatialZoneTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Class() { return *IFC4X3_RC1_IfcSpatialZoneTypeEnum_type; }

Ifc4x3_rc1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialZoneTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialZoneTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSpatialZoneTypeEnum::operator Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStackTerminalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStackTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStackTerminalTypeEnum::Class() { return *IFC4X3_RC1_IfcStackTerminalTypeEnum_type; }

Ifc4x3_rc1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStackTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStackTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStackTerminalTypeEnum::operator Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStairFlightTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStairFlightTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStairFlightTypeEnum::Class() { return *IFC4X3_RC1_IfcStairFlightTypeEnum_type; }

Ifc4x3_rc1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairFlightTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairFlightTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStairFlightTypeEnum::operator Ifc4x3_rc1::IfcStairFlightTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStairTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStairTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStairTypeEnum::Class() { return *IFC4X3_RC1_IfcStairTypeEnum_type; }

Ifc4x3_rc1::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStairTypeEnum::IfcStairTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcStairTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 17 ) throw IfcException("Unable to 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", "LADDER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

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

Ifc4x3_rc1::IfcStairTypeEnum::operator Ifc4x3_rc1::IfcStairTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStateEnum::declaration() const { return *IFC4X3_RC1_IfcStateEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStateEnum::Class() { return *IFC4X3_RC1_IfcStateEnum_type; }

Ifc4x3_rc1::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStateEnum::IfcStateEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStateEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStateEnum::IfcStateEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStateEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStateEnum::operator Ifc4x3_rc1::IfcStateEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Class() { return *IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type; }

Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveActivityTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::operator Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::Class() { return *IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type; }

Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveMemberTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::operator Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type; }

Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceActivityTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::operator Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type; }

Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceMemberTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::operator Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSubContractResourceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSubContractResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Class() { return *IFC4X3_RC1_IfcSubContractResourceTypeEnum_type; }

Ifc4x3_rc1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubContractResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubContractResourceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSubContractResourceTypeEnum::operator Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Class() { return *IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type; }

Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceFeatureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 13 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "MARK", "TAG", "TREATMENT", "DEFECT", "HATCHMARKING", "LINEMARKING", "PAVEMENTSURFACEMARKING", "SYMBOLMARKING", "NONSKIDSURFACING", "RUMBLESTRIP", "TRANSVERSERUMBLESTRIP", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::FromString(const std::string& s) {
    if (s == "MARK") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_MARK;
    if (s == "TAG") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TAG;
    if (s == "TREATMENT") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TREATMENT;
    if (s == "DEFECT") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_DEFECT;
    if (s == "HATCHMARKING") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_HATCHMARKING;
    if (s == "LINEMARKING") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_LINEMARKING;
    if (s == "PAVEMENTSURFACEMARKING") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_PAVEMENTSURFACEMARKING;
    if (s == "SYMBOLMARKING") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_SYMBOLMARKING;
    if (s == "NONSKIDSURFACING") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_NONSKIDSURFACING;
    if (s == "RUMBLESTRIP") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_RUMBLESTRIP;
    if (s == "TRANSVERSERUMBLESTRIP") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TRANSVERSERUMBLESTRIP;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::operator Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSurfaceSide::declaration() const { return *IFC4X3_RC1_IfcSurfaceSide_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSurfaceSide::Class() { return *IFC4X3_RC1_IfcSurfaceSide_type; }

Ifc4x3_rc1::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSurfaceSide::IfcSurfaceSide(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceSide_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceSide_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSurfaceSide::operator Ifc4x3_rc1::IfcSurfaceSide::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Class() { return *IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type; }

Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSwitchingDeviceTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::operator Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Class() { return *IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type; }

Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystemFurnitureElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::operator Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTankTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTankTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTankTypeEnum::Class() { return *IFC4X3_RC1_IfcTankTypeEnum_type; }

Ifc4x3_rc1::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTankTypeEnum::IfcTankTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTankTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTankTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTankTypeEnum::operator Ifc4x3_rc1::IfcTankTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTaskDurationEnum::declaration() const { return *IFC4X3_RC1_IfcTaskDurationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTaskDurationEnum::Class() { return *IFC4X3_RC1_IfcTaskDurationEnum_type; }

Ifc4x3_rc1::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTaskDurationEnum::IfcTaskDurationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskDurationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskDurationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTaskDurationEnum::operator Ifc4x3_rc1::IfcTaskDurationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTaskTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTaskTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTaskTypeEnum::Class() { return *IFC4X3_RC1_IfcTaskTypeEnum_type; }

Ifc4x3_rc1::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTaskTypeEnum::IfcTaskTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTaskTypeEnum::operator Ifc4x3_rc1::IfcTaskTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTendonAnchorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTendonAnchorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Class() { return *IFC4X3_RC1_IfcTendonAnchorTypeEnum_type; }

Ifc4x3_rc1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonAnchorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonAnchorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTendonAnchorTypeEnum::operator Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTendonConduitTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTendonConduitTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTendonConduitTypeEnum::Class() { return *IFC4X3_RC1_IfcTendonConduitTypeEnum_type; }

Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonConduitTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonConduitTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcTendonConduitTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "DUCT", "COUPLER", "GROUTING_DUCT", "TRUMPET", "DIABOLO", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value Ifc4x3_rc1::IfcTendonConduitTypeEnum::FromString(const std::string& s) {
    if (s == "DUCT") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_DUCT;
    if (s == "COUPLER") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_COUPLER;
    if (s == "GROUTING_DUCT") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_GROUTING_DUCT;
    if (s == "TRUMPET") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_TRUMPET;
    if (s == "DIABOLO") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_DIABOLO;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::IfcTendonConduitType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcTendonConduitTypeEnum::operator Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTendonTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTendonTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTendonTypeEnum::Class() { return *IFC4X3_RC1_IfcTendonTypeEnum_type; }

Ifc4x3_rc1::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTendonTypeEnum::IfcTendonTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTendonTypeEnum::operator Ifc4x3_rc1::IfcTendonTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTextPath::declaration() const { return *IFC4X3_RC1_IfcTextPath_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTextPath::Class() { return *IFC4X3_RC1_IfcTextPath_type; }

Ifc4x3_rc1::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTextPath::IfcTextPath(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextPath_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTextPath::IfcTextPath(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextPath_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTextPath::operator Ifc4x3_rc1::IfcTextPath::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Class() { return *IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type; }

Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeSeriesDataTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::operator Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTrackElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTrackElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTrackElementTypeEnum::Class() { return *IFC4X3_RC1_IfcTrackElementTypeEnum_type; }

Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrackElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrackElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 10 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "TRACKENDOFALIGNMENT", "BLOCKINGDEVICE", "VEHICLESTOP", "SLEEPER", "HALF_SET_OF_BLADES", "SPEEDREGULATOR", "DERAILER", "FROG", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcTrackElementTypeEnum::Value Ifc4x3_rc1::IfcTrackElementTypeEnum::FromString(const std::string& s) {
    if (s == "TRACKENDOFALIGNMENT") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_TRACKENDOFALIGNMENT;
    if (s == "BLOCKINGDEVICE") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_BLOCKINGDEVICE;
    if (s == "VEHICLESTOP") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_VEHICLESTOP;
    if (s == "SLEEPER") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_SLEEPER;
    if (s == "HALF_SET_OF_BLADES") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_HALF_SET_OF_BLADES;
    if (s == "SPEEDREGULATOR") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_SPEEDREGULATOR;
    if (s == "DERAILER") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_DERAILER;
    if (s == "FROG") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_FROG;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::IfcTrackElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcTrackElementTypeEnum::operator Ifc4x3_rc1::IfcTrackElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransformerTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTransformerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransformerTypeEnum::Class() { return *IFC4X3_RC1_IfcTransformerTypeEnum_type; }

Ifc4x3_rc1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransformerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransformerTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTransformerTypeEnum::operator Ifc4x3_rc1::IfcTransformerTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransitionCode::declaration() const { return *IFC4X3_RC1_IfcTransitionCode_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransitionCode::Class() { return *IFC4X3_RC1_IfcTransitionCode_type; }

Ifc4x3_rc1::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTransitionCode::IfcTransitionCode(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCode_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCode_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTransitionCode::operator Ifc4x3_rc1::IfcTransitionCode::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransitionCurveType::declaration() const { return *IFC4X3_RC1_IfcTransitionCurveType_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransitionCurveType::Class() { return *IFC4X3_RC1_IfcTransitionCurveType_type; }

Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCurveType_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCurveType_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcTransitionCurveType::ToString(Value v) {
    if ( v < 0 || v >= 6 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "BIQUADRATICPARABOLA", "BLOSSCURVE", "CLOTHOIDCURVE", "COSINECURVE", "CUBICPARABOLA", "SINECURVE" };
    return names[v];
}

Ifc4x3_rc1::IfcTransitionCurveType::Value Ifc4x3_rc1::IfcTransitionCurveType::FromString(const std::string& s) {
    if (s == "BIQUADRATICPARABOLA") return ::Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType_BIQUADRATICPARABOLA;
    if (s == "BLOSSCURVE") return ::Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType_BLOSSCURVE;
    if (s == "CLOTHOIDCURVE") return ::Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType_CLOTHOIDCURVE;
    if (s == "COSINECURVE") return ::Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType_COSINECURVE;
    if (s == "CUBICPARABOLA") return ::Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType_CUBICPARABOLA;
    if (s == "SINECURVE") return ::Ifc4x3_rc1::IfcTransitionCurveType::IfcTransitionCurveType_SINECURVE;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcTransitionCurveType::operator Ifc4x3_rc1::IfcTransitionCurveType::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::Class() { return *IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type; }

Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementFixedTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::Value Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::FromString(const std::string& s) {
    if (s == "ELEVATOR") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_ELEVATOR;
    if (s == "ESCALATOR") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_ESCALATOR;
    if (s == "MOVINGWALKWAY") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_MOVINGWALKWAY;
    if (s == "CRANEWAY") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_CRANEWAY;
    if (s == "LIFTINGGEAR") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_LIFTINGGEAR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::operator Ifc4x3_rc1::IfcTransportElementFixedTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::Class() { return *IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type; }

Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementNonFixedTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "VEHICLE", "VEHICLETRACKED", "ROLLINGSTOCK", "VEHICLEWHEELED", "VEHICLEAIR", "CARGO", "VEHICLEMARINE", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::Value Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::FromString(const std::string& s) {
    if (s == "VEHICLE") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLE;
    if (s == "VEHICLETRACKED") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLETRACKED;
    if (s == "ROLLINGSTOCK") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_ROLLINGSTOCK;
    if (s == "VEHICLEWHEELED") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLEWHEELED;
    if (s == "VEHICLEAIR") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLEAIR;
    if (s == "CARGO") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_CARGO;
    if (s == "VEHICLEMARINE") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLEMARINE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::operator Ifc4x3_rc1::IfcTransportElementNonFixedTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTrimmingPreference::declaration() const { return *IFC4X3_RC1_IfcTrimmingPreference_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTrimmingPreference::Class() { return *IFC4X3_RC1_IfcTrimmingPreference_type; }

Ifc4x3_rc1::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTrimmingPreference::IfcTrimmingPreference(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrimmingPreference_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrimmingPreference_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTrimmingPreference::operator Ifc4x3_rc1::IfcTrimmingPreference::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTubeBundleTypeEnum::declaration() const { return *IFC4X3_RC1_IfcTubeBundleTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcTubeBundleTypeEnum::Class() { return *IFC4X3_RC1_IfcTubeBundleTypeEnum_type; }

Ifc4x3_rc1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTubeBundleTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTubeBundleTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcTubeBundleTypeEnum::operator Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcUnitEnum::declaration() const { return *IFC4X3_RC1_IfcUnitEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcUnitEnum::Class() { return *IFC4X3_RC1_IfcUnitEnum_type; }

Ifc4x3_rc1::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcUnitEnum::IfcUnitEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcUnitEnum::IfcUnitEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcUnitEnum::ToString(Value v) {
    if ( v < 0 || v >= 30 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcUnitEnum::operator Ifc4x3_rc1::IfcUnitEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::declaration() const { return *IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Class() { return *IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type; }

Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryControlElementTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::operator Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::declaration() const { return *IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Class() { return *IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type; }

Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryEquipmentTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::operator Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcValveTypeEnum::declaration() const { return *IFC4X3_RC1_IfcValveTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcValveTypeEnum::Class() { return *IFC4X3_RC1_IfcValveTypeEnum_type; }

Ifc4x3_rc1::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcValveTypeEnum::IfcValveTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcValveTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcValveTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcValveTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 23 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcValveTypeEnum::operator Ifc4x3_rc1::IfcValveTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcVibrationDamperTypeEnum::declaration() const { return *IFC4X3_RC1_IfcVibrationDamperTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Class() { return *IFC4X3_RC1_IfcVibrationDamperTypeEnum_type; }

Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationDamperTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationDamperTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 8 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "BENDING_YIELD", "SHEAR_YIELD", "AXIAL_YIELD", "FRICTION", "VISCOUS", "RUBBER", "USERDEFINED", "NOTDEFINED" };
    return names[v];
}

Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value Ifc4x3_rc1::IfcVibrationDamperTypeEnum::FromString(const std::string& s) {
    if (s == "BENDING_YIELD") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_BENDING_YIELD;
    if (s == "SHEAR_YIELD") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_SHEAR_YIELD;
    if (s == "AXIAL_YIELD") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_AXIAL_YIELD;
    if (s == "FRICTION") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_FRICTION;
    if (s == "VISCOUS") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_VISCOUS;
    if (s == "RUBBER") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_RUBBER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

Ifc4x3_rc1::IfcVibrationDamperTypeEnum::operator Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::declaration() const { return *IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Class() { return *IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type; }

Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationIsolatorTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::operator Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::declaration() const { return *IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Class() { return *IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type; }

Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVoidingFeatureTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::operator Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWallTypeEnum::declaration() const { return *IFC4X3_RC1_IfcWallTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWallTypeEnum::Class() { return *IFC4X3_RC1_IfcWallTypeEnum_type; }

Ifc4x3_rc1::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWallTypeEnum::IfcWallTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWallTypeEnum::operator Ifc4x3_rc1::IfcWallTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWasteTerminalTypeEnum::declaration() const { return *IFC4X3_RC1_IfcWasteTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Class() { return *IFC4X3_RC1_IfcWasteTerminalTypeEnum_type; }

Ifc4x3_rc1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWasteTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWasteTerminalTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWasteTerminalTypeEnum::operator Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowPanelOperationEnum::declaration() const { return *IFC4X3_RC1_IfcWindowPanelOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowPanelOperationEnum::Class() { return *IFC4X3_RC1_IfcWindowPanelOperationEnum_type; }

Ifc4x3_rc1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWindowPanelOperationEnum::operator Ifc4x3_rc1::IfcWindowPanelOperationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowPanelPositionEnum::declaration() const { return *IFC4X3_RC1_IfcWindowPanelPositionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowPanelPositionEnum::Class() { return *IFC4X3_RC1_IfcWindowPanelPositionEnum_type; }

Ifc4x3_rc1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelPositionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelPositionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWindowPanelPositionEnum::operator Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowStyleConstructionEnum::declaration() const { return *IFC4X3_RC1_IfcWindowStyleConstructionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowStyleConstructionEnum::Class() { return *IFC4X3_RC1_IfcWindowStyleConstructionEnum_type; }

Ifc4x3_rc1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleConstructionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleConstructionEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWindowStyleConstructionEnum::operator Ifc4x3_rc1::IfcWindowStyleConstructionEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowStyleOperationEnum::declaration() const { return *IFC4X3_RC1_IfcWindowStyleOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowStyleOperationEnum::Class() { return *IFC4X3_RC1_IfcWindowStyleOperationEnum_type; }

Ifc4x3_rc1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyleOperationEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcWindowStyleOperationEnum::ToString(Value v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcWindowStyleOperationEnum::operator Ifc4x3_rc1::IfcWindowStyleOperationEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowTypeEnum::declaration() const { return *IFC4X3_RC1_IfcWindowTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowTypeEnum::Class() { return *IFC4X3_RC1_IfcWindowTypeEnum_type; }

Ifc4x3_rc1::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWindowTypeEnum::IfcWindowTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWindowTypeEnum::operator Ifc4x3_rc1::IfcWindowTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowTypePartitioningEnum::declaration() const { return *IFC4X3_RC1_IfcWindowTypePartitioningEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Class() { return *IFC4X3_RC1_IfcWindowTypePartitioningEnum_type; }

Ifc4x3_rc1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypePartitioningEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowTypePartitioningEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

const char* Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(Value v) {
    if ( v < 0 || v >= 11 ) throw IfcException("Unable to 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];
}

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

Ifc4x3_rc1::IfcWindowTypePartitioningEnum::operator Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWorkCalendarTypeEnum::declaration() const { return *IFC4X3_RC1_IfcWorkCalendarTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Class() { return *IFC4X3_RC1_IfcWorkCalendarTypeEnum_type; }

Ifc4x3_rc1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkCalendarTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkCalendarTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWorkCalendarTypeEnum::operator Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWorkPlanTypeEnum::declaration() const { return *IFC4X3_RC1_IfcWorkPlanTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWorkPlanTypeEnum::Class() { return *IFC4X3_RC1_IfcWorkPlanTypeEnum_type; }

Ifc4x3_rc1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkPlanTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkPlanTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWorkPlanTypeEnum::operator Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}

const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWorkScheduleTypeEnum::declaration() const { return *IFC4X3_RC1_IfcWorkScheduleTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Class() { return *IFC4X3_RC1_IfcWorkScheduleTypeEnum_type; }

Ifc4x3_rc1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

Ifc4x3_rc1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(Value v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkScheduleTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,ToString(v)));
    data_->setArgument(0,attr);
}

Ifc4x3_rc1::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkScheduleTypeEnum_type);
    IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();
    attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(FromString(v),ToString(FromString(v))));
    data_->setArgument(0,attr);
}

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

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

Ifc4x3_rc1::IfcWorkScheduleTypeEnum::operator Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value() const {
    return FromString((std::string) *data_->getArgument(0));
}


// Function implementations for IfcAbsorbedDoseMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAbsorbedDoseMeasure::Class() { return *IFC4X3_RC1_IfcAbsorbedDoseMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAbsorbedDoseMeasure::declaration() const { return *IFC4X3_RC1_IfcAbsorbedDoseMeasure_type; }
Ifc4x3_rc1::IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAbsorbedDoseMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcAbsorbedDoseMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAccelerationMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAccelerationMeasure::Class() { return *IFC4X3_RC1_IfcAccelerationMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAccelerationMeasure::declaration() const { return *IFC4X3_RC1_IfcAccelerationMeasure_type; }
Ifc4x3_rc1::IfcAccelerationMeasure::IfcAccelerationMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcAccelerationMeasure::IfcAccelerationMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAccelerationMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcAccelerationMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAmountOfSubstanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAmountOfSubstanceMeasure::Class() { return *IFC4X3_RC1_IfcAmountOfSubstanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAmountOfSubstanceMeasure::declaration() const { return *IFC4X3_RC1_IfcAmountOfSubstanceMeasure_type; }
Ifc4x3_rc1::IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAmountOfSubstanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcAmountOfSubstanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAngularVelocityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAngularVelocityMeasure::Class() { return *IFC4X3_RC1_IfcAngularVelocityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAngularVelocityMeasure::declaration() const { return *IFC4X3_RC1_IfcAngularVelocityMeasure_type; }
Ifc4x3_rc1::IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAngularVelocityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcAngularVelocityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcArcIndex
const IfcParse::type_declaration& Ifc4x3_rc1::IfcArcIndex::Class() { return *IFC4X3_RC1_IfcArcIndex_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcArcIndex::declaration() const { return *IFC4X3_RC1_IfcArcIndex_type; }
Ifc4x3_rc1::IfcArcIndex::IfcArcIndex(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcArcIndex::IfcArcIndex(std::vector< int > /*[3:3]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArcIndex_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcArcIndex::operator std::vector< int > /*[3:3]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcAreaDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAreaDensityMeasure::Class() { return *IFC4X3_RC1_IfcAreaDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAreaDensityMeasure::declaration() const { return *IFC4X3_RC1_IfcAreaDensityMeasure_type; }
Ifc4x3_rc1::IfcAreaDensityMeasure::IfcAreaDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcAreaDensityMeasure::IfcAreaDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAreaDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcAreaDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAreaMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAreaMeasure::Class() { return *IFC4X3_RC1_IfcAreaMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcAreaMeasure::declaration() const { return *IFC4X3_RC1_IfcAreaMeasure_type; }
Ifc4x3_rc1::IfcAreaMeasure::IfcAreaMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcAreaMeasure::IfcAreaMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAreaMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcAreaMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcBinary
const IfcParse::type_declaration& Ifc4x3_rc1::IfcBinary::Class() { return *IFC4X3_RC1_IfcBinary_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcBinary::declaration() const { return *IFC4X3_RC1_IfcBinary_type; }
Ifc4x3_rc1::IfcBinary::IfcBinary(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcBinary::IfcBinary(boost::dynamic_bitset<> v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBinary_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcBinary::operator boost::dynamic_bitset<>() const { return *data_->getArgument(0); }

// Function implementations for IfcBoolean
const IfcParse::type_declaration& Ifc4x3_rc1::IfcBoolean::Class() { return *IFC4X3_RC1_IfcBoolean_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcBoolean::declaration() const { return *IFC4X3_RC1_IfcBoolean_type; }
Ifc4x3_rc1::IfcBoolean::IfcBoolean(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcBoolean::IfcBoolean(bool v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoolean_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcBoolean::operator bool() const { return *data_->getArgument(0); }

// Function implementations for IfcBoxAlignment
const IfcParse::type_declaration& Ifc4x3_rc1::IfcBoxAlignment::Class() { return *IFC4X3_RC1_IfcBoxAlignment_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcBoxAlignment::declaration() const { return *IFC4X3_RC1_IfcBoxAlignment_type; }
Ifc4x3_rc1::IfcBoxAlignment::IfcBoxAlignment(IfcEntityInstanceData* e) : IfcLabel((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcBoxAlignment::IfcBoxAlignment(std::string v) : IfcLabel((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoxAlignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcBoxAlignment::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcCardinalPointReference
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCardinalPointReference::Class() { return *IFC4X3_RC1_IfcCardinalPointReference_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCardinalPointReference::declaration() const { return *IFC4X3_RC1_IfcCardinalPointReference_type; }
Ifc4x3_rc1::IfcCardinalPointReference::IfcCardinalPointReference(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcCardinalPointReference::IfcCardinalPointReference(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCardinalPointReference_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcCardinalPointReference::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcComplexNumber
const IfcParse::type_declaration& Ifc4x3_rc1::IfcComplexNumber::Class() { return *IFC4X3_RC1_IfcComplexNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcComplexNumber::declaration() const { return *IFC4X3_RC1_IfcComplexNumber_type; }
Ifc4x3_rc1::IfcComplexNumber::IfcComplexNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcComplexNumber::IfcComplexNumber(std::vector< double > /*[1:2]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcComplexNumber::operator std::vector< double > /*[1:2]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcCompoundPlaneAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCompoundPlaneAngleMeasure::Class() { return *IFC4X3_RC1_IfcCompoundPlaneAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCompoundPlaneAngleMeasure::declaration() const { return *IFC4X3_RC1_IfcCompoundPlaneAngleMeasure_type; }
Ifc4x3_rc1::IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(std::vector< int > /*[3:4]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompoundPlaneAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcCompoundPlaneAngleMeasure::operator std::vector< int > /*[3:4]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcContextDependentMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcContextDependentMeasure::Class() { return *IFC4X3_RC1_IfcContextDependentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcContextDependentMeasure::declaration() const { return *IFC4X3_RC1_IfcContextDependentMeasure_type; }
Ifc4x3_rc1::IfcContextDependentMeasure::IfcContextDependentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcContextDependentMeasure::IfcContextDependentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcContextDependentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcContextDependentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcCountMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCountMeasure::Class() { return *IFC4X3_RC1_IfcCountMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCountMeasure::declaration() const { return *IFC4X3_RC1_IfcCountMeasure_type; }
Ifc4x3_rc1::IfcCountMeasure::IfcCountMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcCountMeasure::IfcCountMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCountMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcCountMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcCurvatureMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCurvatureMeasure::Class() { return *IFC4X3_RC1_IfcCurvatureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcCurvatureMeasure::declaration() const { return *IFC4X3_RC1_IfcCurvatureMeasure_type; }
Ifc4x3_rc1::IfcCurvatureMeasure::IfcCurvatureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcCurvatureMeasure::IfcCurvatureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurvatureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcCurvatureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcDate
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDate::Class() { return *IFC4X3_RC1_IfcDate_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDate::declaration() const { return *IFC4X3_RC1_IfcDate_type; }
Ifc4x3_rc1::IfcDate::IfcDate(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDate::IfcDate(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDate::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDateTime
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDateTime::Class() { return *IFC4X3_RC1_IfcDateTime_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDateTime::declaration() const { return *IFC4X3_RC1_IfcDateTime_type; }
Ifc4x3_rc1::IfcDateTime::IfcDateTime(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDateTime::IfcDateTime(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDateTime_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDateTime::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDayInMonthNumber
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDayInMonthNumber::Class() { return *IFC4X3_RC1_IfcDayInMonthNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDayInMonthNumber::declaration() const { return *IFC4X3_RC1_IfcDayInMonthNumber_type; }
Ifc4x3_rc1::IfcDayInMonthNumber::IfcDayInMonthNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDayInMonthNumber::IfcDayInMonthNumber(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDayInMonthNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDayInMonthNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDayInWeekNumber
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDayInWeekNumber::Class() { return *IFC4X3_RC1_IfcDayInWeekNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDayInWeekNumber::declaration() const { return *IFC4X3_RC1_IfcDayInWeekNumber_type; }
Ifc4x3_rc1::IfcDayInWeekNumber::IfcDayInWeekNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDayInWeekNumber::IfcDayInWeekNumber(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDayInWeekNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDayInWeekNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDescriptiveMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDescriptiveMeasure::Class() { return *IFC4X3_RC1_IfcDescriptiveMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDescriptiveMeasure::declaration() const { return *IFC4X3_RC1_IfcDescriptiveMeasure_type; }
Ifc4x3_rc1::IfcDescriptiveMeasure::IfcDescriptiveMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDescriptiveMeasure::IfcDescriptiveMeasure(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDescriptiveMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDescriptiveMeasure::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDimensionCount
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDimensionCount::Class() { return *IFC4X3_RC1_IfcDimensionCount_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDimensionCount::declaration() const { return *IFC4X3_RC1_IfcDimensionCount_type; }
Ifc4x3_rc1::IfcDimensionCount::IfcDimensionCount(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDimensionCount::IfcDimensionCount(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDimensionCount_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDimensionCount::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDoseEquivalentMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDoseEquivalentMeasure::Class() { return *IFC4X3_RC1_IfcDoseEquivalentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDoseEquivalentMeasure::declaration() const { return *IFC4X3_RC1_IfcDoseEquivalentMeasure_type; }
Ifc4x3_rc1::IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoseEquivalentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDoseEquivalentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcDuration
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDuration::Class() { return *IFC4X3_RC1_IfcDuration_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDuration::declaration() const { return *IFC4X3_RC1_IfcDuration_type; }
Ifc4x3_rc1::IfcDuration::IfcDuration(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDuration::IfcDuration(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuration_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDuration::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDynamicViscosityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDynamicViscosityMeasure::Class() { return *IFC4X3_RC1_IfcDynamicViscosityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcDynamicViscosityMeasure::declaration() const { return *IFC4X3_RC1_IfcDynamicViscosityMeasure_type; }
Ifc4x3_rc1::IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDynamicViscosityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcDynamicViscosityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricCapacitanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricCapacitanceMeasure::Class() { return *IFC4X3_RC1_IfcElectricCapacitanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricCapacitanceMeasure::declaration() const { return *IFC4X3_RC1_IfcElectricCapacitanceMeasure_type; }
Ifc4x3_rc1::IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricCapacitanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcElectricCapacitanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricChargeMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricChargeMeasure::Class() { return *IFC4X3_RC1_IfcElectricChargeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricChargeMeasure::declaration() const { return *IFC4X3_RC1_IfcElectricChargeMeasure_type; }
Ifc4x3_rc1::IfcElectricChargeMeasure::IfcElectricChargeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcElectricChargeMeasure::IfcElectricChargeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricChargeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcElectricChargeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricConductanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricConductanceMeasure::Class() { return *IFC4X3_RC1_IfcElectricConductanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricConductanceMeasure::declaration() const { return *IFC4X3_RC1_IfcElectricConductanceMeasure_type; }
Ifc4x3_rc1::IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricConductanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcElectricConductanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricCurrentMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricCurrentMeasure::Class() { return *IFC4X3_RC1_IfcElectricCurrentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricCurrentMeasure::declaration() const { return *IFC4X3_RC1_IfcElectricCurrentMeasure_type; }
Ifc4x3_rc1::IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricCurrentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcElectricCurrentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricResistanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricResistanceMeasure::Class() { return *IFC4X3_RC1_IfcElectricResistanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricResistanceMeasure::declaration() const { return *IFC4X3_RC1_IfcElectricResistanceMeasure_type; }
Ifc4x3_rc1::IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricResistanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcElectricResistanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricVoltageMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricVoltageMeasure::Class() { return *IFC4X3_RC1_IfcElectricVoltageMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcElectricVoltageMeasure::declaration() const { return *IFC4X3_RC1_IfcElectricVoltageMeasure_type; }
Ifc4x3_rc1::IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricVoltageMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcElectricVoltageMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcEnergyMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcEnergyMeasure::Class() { return *IFC4X3_RC1_IfcEnergyMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcEnergyMeasure::declaration() const { return *IFC4X3_RC1_IfcEnergyMeasure_type; }
Ifc4x3_rc1::IfcEnergyMeasure::IfcEnergyMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcEnergyMeasure::IfcEnergyMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEnergyMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcEnergyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcFontStyle
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFontStyle::Class() { return *IFC4X3_RC1_IfcFontStyle_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFontStyle::declaration() const { return *IFC4X3_RC1_IfcFontStyle_type; }
Ifc4x3_rc1::IfcFontStyle::IfcFontStyle(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcFontStyle::IfcFontStyle(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFontStyle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcFontStyle::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcFontVariant
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFontVariant::Class() { return *IFC4X3_RC1_IfcFontVariant_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFontVariant::declaration() const { return *IFC4X3_RC1_IfcFontVariant_type; }
Ifc4x3_rc1::IfcFontVariant::IfcFontVariant(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcFontVariant::IfcFontVariant(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFontVariant_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcFontVariant::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcFontWeight
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFontWeight::Class() { return *IFC4X3_RC1_IfcFontWeight_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFontWeight::declaration() const { return *IFC4X3_RC1_IfcFontWeight_type; }
Ifc4x3_rc1::IfcFontWeight::IfcFontWeight(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcFontWeight::IfcFontWeight(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFontWeight_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcFontWeight::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcForceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcForceMeasure::Class() { return *IFC4X3_RC1_IfcForceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcForceMeasure::declaration() const { return *IFC4X3_RC1_IfcForceMeasure_type; }
Ifc4x3_rc1::IfcForceMeasure::IfcForceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcForceMeasure::IfcForceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcForceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcFrequencyMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFrequencyMeasure::Class() { return *IFC4X3_RC1_IfcFrequencyMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcFrequencyMeasure::declaration() const { return *IFC4X3_RC1_IfcFrequencyMeasure_type; }
Ifc4x3_rc1::IfcFrequencyMeasure::IfcFrequencyMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcFrequencyMeasure::IfcFrequencyMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFrequencyMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcFrequencyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcGloballyUniqueId
const IfcParse::type_declaration& Ifc4x3_rc1::IfcGloballyUniqueId::Class() { return *IFC4X3_RC1_IfcGloballyUniqueId_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcGloballyUniqueId::declaration() const { return *IFC4X3_RC1_IfcGloballyUniqueId_type; }
Ifc4x3_rc1::IfcGloballyUniqueId::IfcGloballyUniqueId(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcGloballyUniqueId::IfcGloballyUniqueId(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGloballyUniqueId_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcGloballyUniqueId::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcHeatFluxDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcHeatFluxDensityMeasure::Class() { return *IFC4X3_RC1_IfcHeatFluxDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcHeatFluxDensityMeasure::declaration() const { return *IFC4X3_RC1_IfcHeatFluxDensityMeasure_type; }
Ifc4x3_rc1::IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatFluxDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcHeatFluxDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcHeatingValueMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcHeatingValueMeasure::Class() { return *IFC4X3_RC1_IfcHeatingValueMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcHeatingValueMeasure::declaration() const { return *IFC4X3_RC1_IfcHeatingValueMeasure_type; }
Ifc4x3_rc1::IfcHeatingValueMeasure::IfcHeatingValueMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcHeatingValueMeasure::IfcHeatingValueMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatingValueMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcHeatingValueMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcIdentifier
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIdentifier::Class() { return *IFC4X3_RC1_IfcIdentifier_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIdentifier::declaration() const { return *IFC4X3_RC1_IfcIdentifier_type; }
Ifc4x3_rc1::IfcIdentifier::IfcIdentifier(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcIdentifier::IfcIdentifier(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIdentifier_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcIdentifier::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcIlluminanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIlluminanceMeasure::Class() { return *IFC4X3_RC1_IfcIlluminanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIlluminanceMeasure::declaration() const { return *IFC4X3_RC1_IfcIlluminanceMeasure_type; }
Ifc4x3_rc1::IfcIlluminanceMeasure::IfcIlluminanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcIlluminanceMeasure::IfcIlluminanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIlluminanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcIlluminanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcInductanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcInductanceMeasure::Class() { return *IFC4X3_RC1_IfcInductanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcInductanceMeasure::declaration() const { return *IFC4X3_RC1_IfcInductanceMeasure_type; }
Ifc4x3_rc1::IfcInductanceMeasure::IfcInductanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcInductanceMeasure::IfcInductanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInductanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcInductanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcInteger
const IfcParse::type_declaration& Ifc4x3_rc1::IfcInteger::Class() { return *IFC4X3_RC1_IfcInteger_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcInteger::declaration() const { return *IFC4X3_RC1_IfcInteger_type; }
Ifc4x3_rc1::IfcInteger::IfcInteger(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcInteger::IfcInteger(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInteger_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcInteger::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcIntegerCountRateMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIntegerCountRateMeasure::Class() { return *IFC4X3_RC1_IfcIntegerCountRateMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIntegerCountRateMeasure::declaration() const { return *IFC4X3_RC1_IfcIntegerCountRateMeasure_type; }
Ifc4x3_rc1::IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIntegerCountRateMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcIntegerCountRateMeasure::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcIonConcentrationMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIonConcentrationMeasure::Class() { return *IFC4X3_RC1_IfcIonConcentrationMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIonConcentrationMeasure::declaration() const { return *IFC4X3_RC1_IfcIonConcentrationMeasure_type; }
Ifc4x3_rc1::IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIonConcentrationMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcIonConcentrationMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcIsothermalMoistureCapacityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIsothermalMoistureCapacityMeasure::Class() { return *IFC4X3_RC1_IfcIsothermalMoistureCapacityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcIsothermalMoistureCapacityMeasure::declaration() const { return *IFC4X3_RC1_IfcIsothermalMoistureCapacityMeasure_type; }
Ifc4x3_rc1::IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIsothermalMoistureCapacityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcIsothermalMoistureCapacityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcKinematicViscosityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcKinematicViscosityMeasure::Class() { return *IFC4X3_RC1_IfcKinematicViscosityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcKinematicViscosityMeasure::declaration() const { return *IFC4X3_RC1_IfcKinematicViscosityMeasure_type; }
Ifc4x3_rc1::IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKinematicViscosityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcKinematicViscosityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLabel
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLabel::Class() { return *IFC4X3_RC1_IfcLabel_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLabel::declaration() const { return *IFC4X3_RC1_IfcLabel_type; }
Ifc4x3_rc1::IfcLabel::IfcLabel(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLabel::IfcLabel(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLabel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLabel::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcLanguageId
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLanguageId::Class() { return *IFC4X3_RC1_IfcLanguageId_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLanguageId::declaration() const { return *IFC4X3_RC1_IfcLanguageId_type; }
Ifc4x3_rc1::IfcLanguageId::IfcLanguageId(IfcEntityInstanceData* e) : IfcIdentifier((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcLanguageId::IfcLanguageId(std::string v) : IfcIdentifier((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLanguageId_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLanguageId::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLengthMeasure::Class() { return *IFC4X3_RC1_IfcLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLengthMeasure::declaration() const { return *IFC4X3_RC1_IfcLengthMeasure_type; }
Ifc4x3_rc1::IfcLengthMeasure::IfcLengthMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLengthMeasure::IfcLengthMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLineIndex
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLineIndex::Class() { return *IFC4X3_RC1_IfcLineIndex_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLineIndex::declaration() const { return *IFC4X3_RC1_IfcLineIndex_type; }
Ifc4x3_rc1::IfcLineIndex::IfcLineIndex(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLineIndex::IfcLineIndex(std::vector< int > /*[2:?]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLineIndex_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLineIndex::operator std::vector< int > /*[2:?]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearForceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearForceMeasure::Class() { return *IFC4X3_RC1_IfcLinearForceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearForceMeasure::declaration() const { return *IFC4X3_RC1_IfcLinearForceMeasure_type; }
Ifc4x3_rc1::IfcLinearForceMeasure::IfcLinearForceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLinearForceMeasure::IfcLinearForceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearForceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLinearForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearMomentMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearMomentMeasure::Class() { return *IFC4X3_RC1_IfcLinearMomentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearMomentMeasure::declaration() const { return *IFC4X3_RC1_IfcLinearMomentMeasure_type; }
Ifc4x3_rc1::IfcLinearMomentMeasure::IfcLinearMomentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLinearMomentMeasure::IfcLinearMomentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearMomentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLinearMomentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearStiffnessMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearStiffnessMeasure::Class() { return *IFC4X3_RC1_IfcLinearStiffnessMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearStiffnessMeasure::declaration() const { return *IFC4X3_RC1_IfcLinearStiffnessMeasure_type; }
Ifc4x3_rc1::IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearStiffnessMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLinearStiffnessMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearVelocityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearVelocityMeasure::Class() { return *IFC4X3_RC1_IfcLinearVelocityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLinearVelocityMeasure::declaration() const { return *IFC4X3_RC1_IfcLinearVelocityMeasure_type; }
Ifc4x3_rc1::IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearVelocityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLinearVelocityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLogical
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLogical::Class() { return *IFC4X3_RC1_IfcLogical_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLogical::declaration() const { return *IFC4X3_RC1_IfcLogical_type; }
Ifc4x3_rc1::IfcLogical::IfcLogical(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLogical::IfcLogical(boost::logic::tribool v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLogical_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLogical::operator boost::logic::tribool() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousFluxMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLuminousFluxMeasure::Class() { return *IFC4X3_RC1_IfcLuminousFluxMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLuminousFluxMeasure::declaration() const { return *IFC4X3_RC1_IfcLuminousFluxMeasure_type; }
Ifc4x3_rc1::IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLuminousFluxMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLuminousFluxMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousIntensityDistributionMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLuminousIntensityDistributionMeasure::Class() { return *IFC4X3_RC1_IfcLuminousIntensityDistributionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLuminousIntensityDistributionMeasure::declaration() const { return *IFC4X3_RC1_IfcLuminousIntensityDistributionMeasure_type; }
Ifc4x3_rc1::IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLuminousIntensityDistributionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLuminousIntensityDistributionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousIntensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLuminousIntensityMeasure::Class() { return *IFC4X3_RC1_IfcLuminousIntensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcLuminousIntensityMeasure::declaration() const { return *IFC4X3_RC1_IfcLuminousIntensityMeasure_type; }
Ifc4x3_rc1::IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLuminousIntensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcLuminousIntensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMagneticFluxDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMagneticFluxDensityMeasure::Class() { return *IFC4X3_RC1_IfcMagneticFluxDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMagneticFluxDensityMeasure::declaration() const { return *IFC4X3_RC1_IfcMagneticFluxDensityMeasure_type; }
Ifc4x3_rc1::IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMagneticFluxDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMagneticFluxDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMagneticFluxMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMagneticFluxMeasure::Class() { return *IFC4X3_RC1_IfcMagneticFluxMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMagneticFluxMeasure::declaration() const { return *IFC4X3_RC1_IfcMagneticFluxMeasure_type; }
Ifc4x3_rc1::IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMagneticFluxMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMagneticFluxMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassDensityMeasure::Class() { return *IFC4X3_RC1_IfcMassDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassDensityMeasure::declaration() const { return *IFC4X3_RC1_IfcMassDensityMeasure_type; }
Ifc4x3_rc1::IfcMassDensityMeasure::IfcMassDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMassDensityMeasure::IfcMassDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMassDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMassDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassFlowRateMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassFlowRateMeasure::Class() { return *IFC4X3_RC1_IfcMassFlowRateMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassFlowRateMeasure::declaration() const { return *IFC4X3_RC1_IfcMassFlowRateMeasure_type; }
Ifc4x3_rc1::IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMassFlowRateMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMassFlowRateMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassMeasure::Class() { return *IFC4X3_RC1_IfcMassMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassMeasure::declaration() const { return *IFC4X3_RC1_IfcMassMeasure_type; }
Ifc4x3_rc1::IfcMassMeasure::IfcMassMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMassMeasure::IfcMassMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMassMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMassMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassPerLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassPerLengthMeasure::Class() { return *IFC4X3_RC1_IfcMassPerLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMassPerLengthMeasure::declaration() const { return *IFC4X3_RC1_IfcMassPerLengthMeasure_type; }
Ifc4x3_rc1::IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMassPerLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMassPerLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfElasticityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfElasticityMeasure::Class() { return *IFC4X3_RC1_IfcModulusOfElasticityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfElasticityMeasure::declaration() const { return *IFC4X3_RC1_IfcModulusOfElasticityMeasure_type; }
Ifc4x3_rc1::IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcModulusOfElasticityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcModulusOfElasticityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfLinearSubgradeReactionMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfLinearSubgradeReactionMeasure::Class() { return *IFC4X3_RC1_IfcModulusOfLinearSubgradeReactionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfLinearSubgradeReactionMeasure::declaration() const { return *IFC4X3_RC1_IfcModulusOfLinearSubgradeReactionMeasure_type; }
Ifc4x3_rc1::IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcModulusOfLinearSubgradeReactionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcModulusOfLinearSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfRotationalSubgradeReactionMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionMeasure::Class() { return *IFC4X3_RC1_IfcModulusOfRotationalSubgradeReactionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionMeasure::declaration() const { return *IFC4X3_RC1_IfcModulusOfRotationalSubgradeReactionMeasure_type; }
Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcModulusOfRotationalSubgradeReactionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfSubgradeReactionMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfSubgradeReactionMeasure::Class() { return *IFC4X3_RC1_IfcModulusOfSubgradeReactionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcModulusOfSubgradeReactionMeasure::declaration() const { return *IFC4X3_RC1_IfcModulusOfSubgradeReactionMeasure_type; }
Ifc4x3_rc1::IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcModulusOfSubgradeReactionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcModulusOfSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMoistureDiffusivityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMoistureDiffusivityMeasure::Class() { return *IFC4X3_RC1_IfcMoistureDiffusivityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMoistureDiffusivityMeasure::declaration() const { return *IFC4X3_RC1_IfcMoistureDiffusivityMeasure_type; }
Ifc4x3_rc1::IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMoistureDiffusivityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMoistureDiffusivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMolecularWeightMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMolecularWeightMeasure::Class() { return *IFC4X3_RC1_IfcMolecularWeightMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMolecularWeightMeasure::declaration() const { return *IFC4X3_RC1_IfcMolecularWeightMeasure_type; }
Ifc4x3_rc1::IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMolecularWeightMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMolecularWeightMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMomentOfInertiaMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMomentOfInertiaMeasure::Class() { return *IFC4X3_RC1_IfcMomentOfInertiaMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMomentOfInertiaMeasure::declaration() const { return *IFC4X3_RC1_IfcMomentOfInertiaMeasure_type; }
Ifc4x3_rc1::IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMomentOfInertiaMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMomentOfInertiaMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMonetaryMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMonetaryMeasure::Class() { return *IFC4X3_RC1_IfcMonetaryMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMonetaryMeasure::declaration() const { return *IFC4X3_RC1_IfcMonetaryMeasure_type; }
Ifc4x3_rc1::IfcMonetaryMeasure::IfcMonetaryMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMonetaryMeasure::IfcMonetaryMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMonetaryMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMonetaryMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMonthInYearNumber
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMonthInYearNumber::Class() { return *IFC4X3_RC1_IfcMonthInYearNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcMonthInYearNumber::declaration() const { return *IFC4X3_RC1_IfcMonthInYearNumber_type; }
Ifc4x3_rc1::IfcMonthInYearNumber::IfcMonthInYearNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcMonthInYearNumber::IfcMonthInYearNumber(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMonthInYearNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcMonthInYearNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcNonNegativeLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcNonNegativeLengthMeasure::Class() { return *IFC4X3_RC1_IfcNonNegativeLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcNonNegativeLengthMeasure::declaration() const { return *IFC4X3_RC1_IfcNonNegativeLengthMeasure_type; }
Ifc4x3_rc1::IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(IfcEntityInstanceData* e) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(double v) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNonNegativeLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcNonNegativeLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcNormalisedRatioMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcNormalisedRatioMeasure::Class() { return *IFC4X3_RC1_IfcNormalisedRatioMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcNormalisedRatioMeasure::declaration() const { return *IFC4X3_RC1_IfcNormalisedRatioMeasure_type; }
Ifc4x3_rc1::IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(IfcEntityInstanceData* e) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(double v) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNormalisedRatioMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcNormalisedRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcNumericMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcNumericMeasure::Class() { return *IFC4X3_RC1_IfcNumericMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcNumericMeasure::declaration() const { return *IFC4X3_RC1_IfcNumericMeasure_type; }
Ifc4x3_rc1::IfcNumericMeasure::IfcNumericMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcNumericMeasure::IfcNumericMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNumericMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcNumericMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPHMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPHMeasure::Class() { return *IFC4X3_RC1_IfcPHMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPHMeasure::declaration() const { return *IFC4X3_RC1_IfcPHMeasure_type; }
Ifc4x3_rc1::IfcPHMeasure::IfcPHMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPHMeasure::IfcPHMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPHMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPHMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcParameterValue
const IfcParse::type_declaration& Ifc4x3_rc1::IfcParameterValue::Class() { return *IFC4X3_RC1_IfcParameterValue_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcParameterValue::declaration() const { return *IFC4X3_RC1_IfcParameterValue_type; }
Ifc4x3_rc1::IfcParameterValue::IfcParameterValue(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcParameterValue::IfcParameterValue(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcParameterValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcParameterValue::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPlanarForceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPlanarForceMeasure::Class() { return *IFC4X3_RC1_IfcPlanarForceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPlanarForceMeasure::declaration() const { return *IFC4X3_RC1_IfcPlanarForceMeasure_type; }
Ifc4x3_rc1::IfcPlanarForceMeasure::IfcPlanarForceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPlanarForceMeasure::IfcPlanarForceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlanarForceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPlanarForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPlaneAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPlaneAngleMeasure::Class() { return *IFC4X3_RC1_IfcPlaneAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPlaneAngleMeasure::declaration() const { return *IFC4X3_RC1_IfcPlaneAngleMeasure_type; }
Ifc4x3_rc1::IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlaneAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPlaneAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveInteger
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositiveInteger::Class() { return *IFC4X3_RC1_IfcPositiveInteger_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositiveInteger::declaration() const { return *IFC4X3_RC1_IfcPositiveInteger_type; }
Ifc4x3_rc1::IfcPositiveInteger::IfcPositiveInteger(IfcEntityInstanceData* e) : IfcInteger((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcPositiveInteger::IfcPositiveInteger(int v) : IfcInteger((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPositiveInteger_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPositiveInteger::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositiveLengthMeasure::Class() { return *IFC4X3_RC1_IfcPositiveLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositiveLengthMeasure::declaration() const { return *IFC4X3_RC1_IfcPositiveLengthMeasure_type; }
Ifc4x3_rc1::IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(IfcEntityInstanceData* e) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(double v) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPositiveLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPositiveLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositivePlaneAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositivePlaneAngleMeasure::Class() { return *IFC4X3_RC1_IfcPositivePlaneAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositivePlaneAngleMeasure::declaration() const { return *IFC4X3_RC1_IfcPositivePlaneAngleMeasure_type; }
Ifc4x3_rc1::IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(IfcEntityInstanceData* e) : IfcPlaneAngleMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(double v) : IfcPlaneAngleMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPositivePlaneAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPositivePlaneAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveRatioMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositiveRatioMeasure::Class() { return *IFC4X3_RC1_IfcPositiveRatioMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPositiveRatioMeasure::declaration() const { return *IFC4X3_RC1_IfcPositiveRatioMeasure_type; }
Ifc4x3_rc1::IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(IfcEntityInstanceData* e) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc1::IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(double v) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPositiveRatioMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPositiveRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPowerMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPowerMeasure::Class() { return *IFC4X3_RC1_IfcPowerMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPowerMeasure::declaration() const { return *IFC4X3_RC1_IfcPowerMeasure_type; }
Ifc4x3_rc1::IfcPowerMeasure::IfcPowerMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPowerMeasure::IfcPowerMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPowerMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPowerMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPresentableText
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPresentableText::Class() { return *IFC4X3_RC1_IfcPresentableText_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPresentableText::declaration() const { return *IFC4X3_RC1_IfcPresentableText_type; }
Ifc4x3_rc1::IfcPresentableText::IfcPresentableText(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPresentableText::IfcPresentableText(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPresentableText_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPresentableText::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcPressureMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPressureMeasure::Class() { return *IFC4X3_RC1_IfcPressureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPressureMeasure::declaration() const { return *IFC4X3_RC1_IfcPressureMeasure_type; }
Ifc4x3_rc1::IfcPressureMeasure::IfcPressureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPressureMeasure::IfcPressureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPressureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPressureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPropertySetDefinitionSet
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPropertySetDefinitionSet::Class() { return *IFC4X3_RC1_IfcPropertySetDefinitionSet_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcPropertySetDefinitionSet::declaration() const { return *IFC4X3_RC1_IfcPropertySetDefinitionSet_type; }
Ifc4x3_rc1::IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetDefinitionSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v->generalize()); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcPropertySetDefinitionSet::operator aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcPropertySetDefinition >(); }

// Function implementations for IfcRadioActivityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRadioActivityMeasure::Class() { return *IFC4X3_RC1_IfcRadioActivityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRadioActivityMeasure::declaration() const { return *IFC4X3_RC1_IfcRadioActivityMeasure_type; }
Ifc4x3_rc1::IfcRadioActivityMeasure::IfcRadioActivityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcRadioActivityMeasure::IfcRadioActivityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRadioActivityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcRadioActivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRatioMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRatioMeasure::Class() { return *IFC4X3_RC1_IfcRatioMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRatioMeasure::declaration() const { return *IFC4X3_RC1_IfcRatioMeasure_type; }
Ifc4x3_rc1::IfcRatioMeasure::IfcRatioMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcRatioMeasure::IfcRatioMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRatioMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcReal
const IfcParse::type_declaration& Ifc4x3_rc1::IfcReal::Class() { return *IFC4X3_RC1_IfcReal_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcReal::declaration() const { return *IFC4X3_RC1_IfcReal_type; }
Ifc4x3_rc1::IfcReal::IfcReal(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcReal::IfcReal(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcReal::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalFrequencyMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRotationalFrequencyMeasure::Class() { return *IFC4X3_RC1_IfcRotationalFrequencyMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRotationalFrequencyMeasure::declaration() const { return *IFC4X3_RC1_IfcRotationalFrequencyMeasure_type; }
Ifc4x3_rc1::IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRotationalFrequencyMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcRotationalFrequencyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalMassMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRotationalMassMeasure::Class() { return *IFC4X3_RC1_IfcRotationalMassMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRotationalMassMeasure::declaration() const { return *IFC4X3_RC1_IfcRotationalMassMeasure_type; }
Ifc4x3_rc1::IfcRotationalMassMeasure::IfcRotationalMassMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcRotationalMassMeasure::IfcRotationalMassMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRotationalMassMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcRotationalMassMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalStiffnessMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRotationalStiffnessMeasure::Class() { return *IFC4X3_RC1_IfcRotationalStiffnessMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcRotationalStiffnessMeasure::declaration() const { return *IFC4X3_RC1_IfcRotationalStiffnessMeasure_type; }
Ifc4x3_rc1::IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRotationalStiffnessMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcRotationalStiffnessMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSectionModulusMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSectionModulusMeasure::Class() { return *IFC4X3_RC1_IfcSectionModulusMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSectionModulusMeasure::declaration() const { return *IFC4X3_RC1_IfcSectionModulusMeasure_type; }
Ifc4x3_rc1::IfcSectionModulusMeasure::IfcSectionModulusMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSectionModulusMeasure::IfcSectionModulusMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionModulusMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSectionModulusMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSectionalAreaIntegralMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSectionalAreaIntegralMeasure::Class() { return *IFC4X3_RC1_IfcSectionalAreaIntegralMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSectionalAreaIntegralMeasure::declaration() const { return *IFC4X3_RC1_IfcSectionalAreaIntegralMeasure_type; }
Ifc4x3_rc1::IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionalAreaIntegralMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSectionalAreaIntegralMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcShearModulusMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcShearModulusMeasure::Class() { return *IFC4X3_RC1_IfcShearModulusMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcShearModulusMeasure::declaration() const { return *IFC4X3_RC1_IfcShearModulusMeasure_type; }
Ifc4x3_rc1::IfcShearModulusMeasure::IfcShearModulusMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcShearModulusMeasure::IfcShearModulusMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShearModulusMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcShearModulusMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSolidAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSolidAngleMeasure::Class() { return *IFC4X3_RC1_IfcSolidAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSolidAngleMeasure::declaration() const { return *IFC4X3_RC1_IfcSolidAngleMeasure_type; }
Ifc4x3_rc1::IfcSolidAngleMeasure::IfcSolidAngleMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSolidAngleMeasure::IfcSolidAngleMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolidAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSolidAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPowerLevelMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPowerLevelMeasure::Class() { return *IFC4X3_RC1_IfcSoundPowerLevelMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPowerLevelMeasure::declaration() const { return *IFC4X3_RC1_IfcSoundPowerLevelMeasure_type; }
Ifc4x3_rc1::IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSoundPowerLevelMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSoundPowerLevelMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPowerMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPowerMeasure::Class() { return *IFC4X3_RC1_IfcSoundPowerMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPowerMeasure::declaration() const { return *IFC4X3_RC1_IfcSoundPowerMeasure_type; }
Ifc4x3_rc1::IfcSoundPowerMeasure::IfcSoundPowerMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSoundPowerMeasure::IfcSoundPowerMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSoundPowerMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSoundPowerMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPressureLevelMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPressureLevelMeasure::Class() { return *IFC4X3_RC1_IfcSoundPressureLevelMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPressureLevelMeasure::declaration() const { return *IFC4X3_RC1_IfcSoundPressureLevelMeasure_type; }
Ifc4x3_rc1::IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSoundPressureLevelMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSoundPressureLevelMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPressureMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPressureMeasure::Class() { return *IFC4X3_RC1_IfcSoundPressureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSoundPressureMeasure::declaration() const { return *IFC4X3_RC1_IfcSoundPressureMeasure_type; }
Ifc4x3_rc1::IfcSoundPressureMeasure::IfcSoundPressureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSoundPressureMeasure::IfcSoundPressureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSoundPressureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSoundPressureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecificHeatCapacityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSpecificHeatCapacityMeasure::Class() { return *IFC4X3_RC1_IfcSpecificHeatCapacityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSpecificHeatCapacityMeasure::declaration() const { return *IFC4X3_RC1_IfcSpecificHeatCapacityMeasure_type; }
Ifc4x3_rc1::IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpecificHeatCapacityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSpecificHeatCapacityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecularExponent
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSpecularExponent::Class() { return *IFC4X3_RC1_IfcSpecularExponent_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSpecularExponent::declaration() const { return *IFC4X3_RC1_IfcSpecularExponent_type; }
Ifc4x3_rc1::IfcSpecularExponent::IfcSpecularExponent(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSpecularExponent::IfcSpecularExponent(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpecularExponent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSpecularExponent::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecularRoughness
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSpecularRoughness::Class() { return *IFC4X3_RC1_IfcSpecularRoughness_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcSpecularRoughness::declaration() const { return *IFC4X3_RC1_IfcSpecularRoughness_type; }
Ifc4x3_rc1::IfcSpecularRoughness::IfcSpecularRoughness(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcSpecularRoughness::IfcSpecularRoughness(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpecularRoughness_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcSpecularRoughness::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTemperatureGradientMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTemperatureGradientMeasure::Class() { return *IFC4X3_RC1_IfcTemperatureGradientMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTemperatureGradientMeasure::declaration() const { return *IFC4X3_RC1_IfcTemperatureGradientMeasure_type; }
Ifc4x3_rc1::IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTemperatureGradientMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTemperatureGradientMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTemperatureRateOfChangeMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTemperatureRateOfChangeMeasure::Class() { return *IFC4X3_RC1_IfcTemperatureRateOfChangeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTemperatureRateOfChangeMeasure::declaration() const { return *IFC4X3_RC1_IfcTemperatureRateOfChangeMeasure_type; }
Ifc4x3_rc1::IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTemperatureRateOfChangeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTemperatureRateOfChangeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcText
const IfcParse::type_declaration& Ifc4x3_rc1::IfcText::Class() { return *IFC4X3_RC1_IfcText_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcText::declaration() const { return *IFC4X3_RC1_IfcText_type; }
Ifc4x3_rc1::IfcText::IfcText(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcText::IfcText(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcText_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcText::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextAlignment
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextAlignment::Class() { return *IFC4X3_RC1_IfcTextAlignment_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextAlignment::declaration() const { return *IFC4X3_RC1_IfcTextAlignment_type; }
Ifc4x3_rc1::IfcTextAlignment::IfcTextAlignment(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTextAlignment::IfcTextAlignment(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextAlignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTextAlignment::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextDecoration
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextDecoration::Class() { return *IFC4X3_RC1_IfcTextDecoration_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextDecoration::declaration() const { return *IFC4X3_RC1_IfcTextDecoration_type; }
Ifc4x3_rc1::IfcTextDecoration::IfcTextDecoration(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTextDecoration::IfcTextDecoration(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextDecoration_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTextDecoration::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextFontName
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextFontName::Class() { return *IFC4X3_RC1_IfcTextFontName_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextFontName::declaration() const { return *IFC4X3_RC1_IfcTextFontName_type; }
Ifc4x3_rc1::IfcTextFontName::IfcTextFontName(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTextFontName::IfcTextFontName(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextFontName_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTextFontName::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextTransformation
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextTransformation::Class() { return *IFC4X3_RC1_IfcTextTransformation_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTextTransformation::declaration() const { return *IFC4X3_RC1_IfcTextTransformation_type; }
Ifc4x3_rc1::IfcTextTransformation::IfcTextTransformation(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTextTransformation::IfcTextTransformation(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextTransformation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTextTransformation::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalAdmittanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalAdmittanceMeasure::Class() { return *IFC4X3_RC1_IfcThermalAdmittanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalAdmittanceMeasure::declaration() const { return *IFC4X3_RC1_IfcThermalAdmittanceMeasure_type; }
Ifc4x3_rc1::IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcThermalAdmittanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcThermalAdmittanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalConductivityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalConductivityMeasure::Class() { return *IFC4X3_RC1_IfcThermalConductivityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalConductivityMeasure::declaration() const { return *IFC4X3_RC1_IfcThermalConductivityMeasure_type; }
Ifc4x3_rc1::IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcThermalConductivityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcThermalConductivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalExpansionCoefficientMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalExpansionCoefficientMeasure::Class() { return *IFC4X3_RC1_IfcThermalExpansionCoefficientMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalExpansionCoefficientMeasure::declaration() const { return *IFC4X3_RC1_IfcThermalExpansionCoefficientMeasure_type; }
Ifc4x3_rc1::IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcThermalExpansionCoefficientMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcThermalExpansionCoefficientMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalResistanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalResistanceMeasure::Class() { return *IFC4X3_RC1_IfcThermalResistanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalResistanceMeasure::declaration() const { return *IFC4X3_RC1_IfcThermalResistanceMeasure_type; }
Ifc4x3_rc1::IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcThermalResistanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcThermalResistanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalTransmittanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalTransmittanceMeasure::Class() { return *IFC4X3_RC1_IfcThermalTransmittanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermalTransmittanceMeasure::declaration() const { return *IFC4X3_RC1_IfcThermalTransmittanceMeasure_type; }
Ifc4x3_rc1::IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcThermalTransmittanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcThermalTransmittanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermodynamicTemperatureMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermodynamicTemperatureMeasure::Class() { return *IFC4X3_RC1_IfcThermodynamicTemperatureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcThermodynamicTemperatureMeasure::declaration() const { return *IFC4X3_RC1_IfcThermodynamicTemperatureMeasure_type; }
Ifc4x3_rc1::IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcThermodynamicTemperatureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcThermodynamicTemperatureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTime
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTime::Class() { return *IFC4X3_RC1_IfcTime_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTime::declaration() const { return *IFC4X3_RC1_IfcTime_type; }
Ifc4x3_rc1::IfcTime::IfcTime(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTime::IfcTime(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTime_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTime::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTimeMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTimeMeasure::Class() { return *IFC4X3_RC1_IfcTimeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTimeMeasure::declaration() const { return *IFC4X3_RC1_IfcTimeMeasure_type; }
Ifc4x3_rc1::IfcTimeMeasure::IfcTimeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTimeMeasure::IfcTimeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTimeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTimeStamp
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTimeStamp::Class() { return *IFC4X3_RC1_IfcTimeStamp_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTimeStamp::declaration() const { return *IFC4X3_RC1_IfcTimeStamp_type; }
Ifc4x3_rc1::IfcTimeStamp::IfcTimeStamp(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTimeStamp::IfcTimeStamp(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeStamp_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTimeStamp::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcTorqueMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTorqueMeasure::Class() { return *IFC4X3_RC1_IfcTorqueMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcTorqueMeasure::declaration() const { return *IFC4X3_RC1_IfcTorqueMeasure_type; }
Ifc4x3_rc1::IfcTorqueMeasure::IfcTorqueMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcTorqueMeasure::IfcTorqueMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTorqueMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcTorqueMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcURIReference
const IfcParse::type_declaration& Ifc4x3_rc1::IfcURIReference::Class() { return *IFC4X3_RC1_IfcURIReference_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcURIReference::declaration() const { return *IFC4X3_RC1_IfcURIReference_type; }
Ifc4x3_rc1::IfcURIReference::IfcURIReference(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcURIReference::IfcURIReference(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcURIReference_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcURIReference::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcVaporPermeabilityMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcVaporPermeabilityMeasure::Class() { return *IFC4X3_RC1_IfcVaporPermeabilityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcVaporPermeabilityMeasure::declaration() const { return *IFC4X3_RC1_IfcVaporPermeabilityMeasure_type; }
Ifc4x3_rc1::IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVaporPermeabilityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcVaporPermeabilityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcVolumeMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcVolumeMeasure::Class() { return *IFC4X3_RC1_IfcVolumeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcVolumeMeasure::declaration() const { return *IFC4X3_RC1_IfcVolumeMeasure_type; }
Ifc4x3_rc1::IfcVolumeMeasure::IfcVolumeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcVolumeMeasure::IfcVolumeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVolumeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcVolumeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcVolumetricFlowRateMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcVolumetricFlowRateMeasure::Class() { return *IFC4X3_RC1_IfcVolumetricFlowRateMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcVolumetricFlowRateMeasure::declaration() const { return *IFC4X3_RC1_IfcVolumetricFlowRateMeasure_type; }
Ifc4x3_rc1::IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVolumetricFlowRateMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcVolumetricFlowRateMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcWarpingConstantMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcWarpingConstantMeasure::Class() { return *IFC4X3_RC1_IfcWarpingConstantMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcWarpingConstantMeasure::declaration() const { return *IFC4X3_RC1_IfcWarpingConstantMeasure_type; }
Ifc4x3_rc1::IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWarpingConstantMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcWarpingConstantMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcWarpingMomentMeasure
const IfcParse::type_declaration& Ifc4x3_rc1::IfcWarpingMomentMeasure::Class() { return *IFC4X3_RC1_IfcWarpingMomentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc1::IfcWarpingMomentMeasure::declaration() const { return *IFC4X3_RC1_IfcWarpingMomentMeasure_type; }
Ifc4x3_rc1::IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc1::IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWarpingMomentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc1::IfcWarpingMomentMeasure::operator double() const { return *data_->getArgument(0); }


// Function implementations for IfcActionRequest
boost::optional< ::Ifc4x3_rc1::IfcActionRequestTypeEnum::Value > Ifc4x3_rc1::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcActionRequestTypeEnum::ToString(*v)));data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcActionRequest::declaration() const { return *IFC4X3_RC1_IfcActionRequest_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcActionRequest::Class() { return *IFC4X3_RC1_IfcActionRequest_type; }
Ifc4x3_rc1::IfcActionRequest::IfcActionRequest(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcActionRequest_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcActionRequest::IfcActionRequest(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcActionRequestTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActionRequest_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcActionRequestTypeEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Status));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_LongDescription));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcActor
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcActor::TheActor() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcActor::setTheActor(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcActor::declaration() const { return *IFC4X3_RC1_IfcActor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcActor::Class() { return *IFC4X3_RC1_IfcActor_type; }
Ifc4x3_rc1::IfcActor::IfcActor(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcActor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcActorSelect* v6_TheActor) : IfcObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_TheActor));data_->setArgument(5,attr);} }

// Function implementations for IfcActorRole
::Ifc4x3_rc1::IfcRoleEnum::Value Ifc4x3_rc1::IfcActorRole::Role() const {  return ::Ifc4x3_rc1::IfcRoleEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcActorRole::setRole(::Ifc4x3_rc1::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcActorRole::declaration() const { return *IFC4X3_RC1_IfcActorRole_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcActorRole::Class() { return *IFC4X3_RC1_IfcActorRole_type; }
Ifc4x3_rc1::IfcActorRole::IfcActorRole(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcActorRole_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcActorRole::IfcActorRole(::Ifc4x3_rc1::IfcRoleEnum::Value v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActorRole_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Role,::Ifc4x3_rc1::IfcRoleEnum::ToString(v1_Role))));data_->setArgument(0,attr);} if (v2_UserDefinedRole) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_UserDefinedRole));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcActuator
boost::optional< ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value > Ifc4x3_rc1::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcActuatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcActuator::declaration() const { return *IFC4X3_RC1_IfcActuator_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcActuator::Class() { return *IFC4X3_RC1_IfcActuator_type; }
Ifc4x3_rc1::IfcActuator::IfcActuator(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcActuator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcActuator::IfcActuator(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActuator_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcActuatorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcActuatorType
::Ifc4x3_rc1::IfcActuatorTypeEnum::Value Ifc4x3_rc1::IfcActuatorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcActuatorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcActuatorType::setPredefinedType(::Ifc4x3_rc1::IfcActuatorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcActuatorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcActuatorType::declaration() const { return *IFC4X3_RC1_IfcActuatorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcActuatorType::Class() { return *IFC4X3_RC1_IfcActuatorType_type; }
Ifc4x3_rc1::IfcActuatorType::IfcActuatorType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcActuatorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcActuatorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcActuatorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcActuatorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAddress
boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > Ifc4x3_rc1::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAddressTypeEnum::ToString(*v)));data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcAddress::declaration() const { return *IFC4X3_RC1_IfcAddress_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAddress::Class() { return *IFC4X3_RC1_IfcAddress_type; }
Ifc4x3_rc1::IfcAddress::IfcAddress(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAddress_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAddress::IfcAddress(boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAddress_type);  if (v1_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v1_Purpose,::Ifc4x3_rc1::IfcAddressTypeEnum::ToString(*v1_Purpose))));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedPurpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedPurpose));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcAdvancedBrep


const IfcParse::entity& Ifc4x3_rc1::IfcAdvancedBrep::declaration() const { return *IFC4X3_RC1_IfcAdvancedBrep_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAdvancedBrep::Class() { return *IFC4X3_RC1_IfcAdvancedBrep_type; }
Ifc4x3_rc1::IfcAdvancedBrep::IfcAdvancedBrep(IfcEntityInstanceData* e) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAdvancedBrep_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAdvancedBrep::IfcAdvancedBrep(::Ifc4x3_rc1::IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAdvancedBrep_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);} }

// Function implementations for IfcAdvancedBrepWithVoids
aggregate_of< ::Ifc4x3_rc1::IfcClosedShell >::ptr Ifc4x3_rc1::IfcAdvancedBrepWithVoids::Voids() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcClosedShell >(); }
void Ifc4x3_rc1::IfcAdvancedBrepWithVoids::setVoids(aggregate_of< ::Ifc4x3_rc1::IfcClosedShell >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAdvancedBrepWithVoids::declaration() const { return *IFC4X3_RC1_IfcAdvancedBrepWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAdvancedBrepWithVoids::Class() { return *IFC4X3_RC1_IfcAdvancedBrepWithVoids_type; }
Ifc4x3_rc1::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(IfcEntityInstanceData* e) : IfcAdvancedBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAdvancedBrepWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(::Ifc4x3_rc1::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_rc1::IfcClosedShell >::ptr v2_Voids) : IfcAdvancedBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAdvancedBrepWithVoids_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Voids)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcAdvancedFace


const IfcParse::entity& Ifc4x3_rc1::IfcAdvancedFace::declaration() const { return *IFC4X3_RC1_IfcAdvancedFace_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAdvancedFace::Class() { return *IFC4X3_RC1_IfcAdvancedFace_type; }
Ifc4x3_rc1::IfcAdvancedFace::IfcAdvancedFace(IfcEntityInstanceData* e) : IfcFaceSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAdvancedFace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_rc1::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_rc1::IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFaceSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAdvancedFace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Bounds)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_FaceSurface));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SameSense));data_->setArgument(2,attr);} }

// Function implementations for IfcAirTerminal
boost::optional< ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value > Ifc4x3_rc1::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminal::declaration() const { return *IFC4X3_RC1_IfcAirTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminal::Class() { return *IFC4X3_RC1_IfcAirTerminal_type; }
Ifc4x3_rc1::IfcAirTerminal::IfcAirTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAirTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcAirTerminalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAirTerminalBox
boost::optional< ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_rc1::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalBox::declaration() const { return *IFC4X3_RC1_IfcAirTerminalBox_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalBox::Class() { return *IFC4X3_RC1_IfcAirTerminalBox_type; }
Ifc4x3_rc1::IfcAirTerminalBox::IfcAirTerminalBox(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAirTerminalBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAirTerminalBox::IfcAirTerminalBox(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalBox_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAirTerminalBoxType
::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value Ifc4x3_rc1::IfcAirTerminalBoxType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcAirTerminalBoxType::setPredefinedType(::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalBoxType::declaration() const { return *IFC4X3_RC1_IfcAirTerminalBoxType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalBoxType::Class() { return *IFC4X3_RC1_IfcAirTerminalBoxType_type; }
Ifc4x3_rc1::IfcAirTerminalBoxType::IfcAirTerminalBoxType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAirTerminalBoxType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAirTerminalBoxType::IfcAirTerminalBoxType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalBoxType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcAirTerminalBoxTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAirTerminalType
::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value Ifc4x3_rc1::IfcAirTerminalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcAirTerminalType::setPredefinedType(::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAirTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalType::declaration() const { return *IFC4X3_RC1_IfcAirTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAirTerminalType::Class() { return *IFC4X3_RC1_IfcAirTerminalType_type; }
Ifc4x3_rc1::IfcAirTerminalType::IfcAirTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAirTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcAirTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcAirTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAirToAirHeatRecovery
boost::optional< ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_rc1::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X3_RC1_IfcAirToAirHeatRecovery_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAirToAirHeatRecovery::Class() { return *IFC4X3_RC1_IfcAirToAirHeatRecovery_type; }
Ifc4x3_rc1::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAirToAirHeatRecovery_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirToAirHeatRecovery_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAirToAirHeatRecoveryType
::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::setPredefinedType(::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::declaration() const { return *IFC4X3_RC1_IfcAirToAirHeatRecoveryType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::Class() { return *IFC4X3_RC1_IfcAirToAirHeatRecoveryType_type; }
Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAirToAirHeatRecoveryType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAirToAirHeatRecoveryType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcAirToAirHeatRecoveryTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAlarm
boost::optional< ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value > Ifc4x3_rc1::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAlarmTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlarm::declaration() const { return *IFC4X3_RC1_IfcAlarm_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlarm::Class() { return *IFC4X3_RC1_IfcAlarm_type; }
Ifc4x3_rc1::IfcAlarm::IfcAlarm(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlarm_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlarm::IfcAlarm(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlarm_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcAlarmTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAlarmType
::Ifc4x3_rc1::IfcAlarmTypeEnum::Value Ifc4x3_rc1::IfcAlarmType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcAlarmTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcAlarmType::setPredefinedType(::Ifc4x3_rc1::IfcAlarmTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAlarmTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlarmType::declaration() const { return *IFC4X3_RC1_IfcAlarmType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlarmType::Class() { return *IFC4X3_RC1_IfcAlarmType_type; }
Ifc4x3_rc1::IfcAlarmType::IfcAlarmType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlarmType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcAlarmTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlarmType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcAlarmTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAlignment
boost::optional< ::Ifc4x3_rc1::IfcAlignmentTypeEnum::Value > Ifc4x3_rc1::IfcAlignment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAlignmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAlignmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment::declaration() const { return *IFC4X3_RC1_IfcAlignment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment::Class() { return *IFC4X3_RC1_IfcAlignment_type; }
Ifc4x3_rc1::IfcAlignment::IfcAlignment(IfcEntityInstanceData* e) : IfcLinearPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment::IfcAlignment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcCurve* v8_Axis, boost::optional< ::Ifc4x3_rc1::IfcAlignmentTypeEnum::Value > v9_PredefinedType) : IfcLinearPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Axis));data_->setArgument(7,attr);} if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcAlignmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAlignment2DCant
aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DCantSegment >::ptr Ifc4x3_rc1::IfcAlignment2DCant::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcAlignment2DCantSegment >(); }
void Ifc4x3_rc1::IfcAlignment2DCant::setSegments(aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DCantSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcAlignment2DCant::RailHeadDistance() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcAlignment2DCant::setRailHeadDistance(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCant::declaration() const { return *IFC4X3_RC1_IfcAlignment2DCant_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCant::Class() { return *IFC4X3_RC1_IfcAlignment2DCant_type; }
Ifc4x3_rc1::IfcAlignment2DCant::IfcAlignment2DCant(IfcEntityInstanceData* e) : IfcAxisLateralInclination((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DCant_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DCant::IfcAlignment2DCant(aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DCantSegment >::ptr v1_Segments, double v2_RailHeadDistance) : IfcAxisLateralInclination((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DCant_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Segments)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RailHeadDistance));data_->setArgument(1,attr);} }

// Function implementations for IfcAlignment2DCantSegLine


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCantSegLine::declaration() const { return *IFC4X3_RC1_IfcAlignment2DCantSegLine_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCantSegLine::Class() { return *IFC4X3_RC1_IfcAlignment2DCantSegLine_type; }
Ifc4x3_rc1::IfcAlignment2DCantSegLine::IfcAlignment2DCantSegLine(IfcEntityInstanceData* e) : IfcAlignment2DCantSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DCantSegLine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DCantSegLine::IfcAlignment2DCantSegLine(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartCantLeft, boost::optional< double > v7_EndCantLeft, double v8_StartCantRight, boost::optional< double > v9_EndCantRight) : IfcAlignment2DCantSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DCantSegLine_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartCantLeft));data_->setArgument(5,attr);} if (v7_EndCantLeft) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_EndCantLeft));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_StartCantRight));data_->setArgument(7,attr);} if (v9_EndCantRight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EndCantRight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAlignment2DCantSegTransition
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegTransition::StartRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegTransition::EndRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
bool Ifc4x3_rc1::IfcAlignment2DCantSegTransition::IsStartRadiusCCW() const {  bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
bool Ifc4x3_rc1::IfcAlignment2DCantSegTransition::IsEndRadiusCCW() const {  bool v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setIsEndRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} }
::Ifc4x3_rc1::IfcTransitionCurveType::Value Ifc4x3_rc1::IfcAlignment2DCantSegTransition::TransitionCurveType() const {  return ::Ifc4x3_rc1::IfcTransitionCurveType::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc1::IfcAlignment2DCantSegTransition::setTransitionCurveType(::Ifc4x3_rc1::IfcTransitionCurveType::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTransitionCurveType::ToString(v)));data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCantSegTransition::declaration() const { return *IFC4X3_RC1_IfcAlignment2DCantSegTransition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCantSegTransition::Class() { return *IFC4X3_RC1_IfcAlignment2DCantSegTransition_type; }
Ifc4x3_rc1::IfcAlignment2DCantSegTransition::IfcAlignment2DCantSegTransition(IfcEntityInstanceData* e) : IfcAlignment2DCantSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DCantSegTransition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DCantSegTransition::IfcAlignment2DCantSegTransition(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartCantLeft, boost::optional< double > v7_EndCantLeft, double v8_StartCantRight, boost::optional< double > v9_EndCantRight, boost::optional< double > v10_StartRadius, boost::optional< double > v11_EndRadius, bool v12_IsStartRadiusCCW, bool v13_IsEndRadiusCCW, ::Ifc4x3_rc1::IfcTransitionCurveType::Value v14_TransitionCurveType) : IfcAlignment2DCantSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DCantSegTransition_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartCantLeft));data_->setArgument(5,attr);} if (v7_EndCantLeft) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_EndCantLeft));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_StartCantRight));data_->setArgument(7,attr);} if (v9_EndCantRight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EndCantRight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_StartRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_StartRadius));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_EndRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_EndRadius));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_IsStartRadiusCCW));data_->setArgument(11,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v13_IsEndRadiusCCW));data_->setArgument(12,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v14_TransitionCurveType,::Ifc4x3_rc1::IfcTransitionCurveType::ToString(v14_TransitionCurveType))));data_->setArgument(13,attr);} }

// Function implementations for IfcAlignment2DCantSegment
double Ifc4x3_rc1::IfcAlignment2DCantSegment::StartDistAlong() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegment::setStartDistAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcAlignment2DCantSegment::HorizontalLength() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegment::setHorizontalLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcAlignment2DCantSegment::StartCantLeft() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegment::setStartCantLeft(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegment::EndCantLeft() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
double Ifc4x3_rc1::IfcAlignment2DCantSegment::StartCantRight() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegment::setStartCantRight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DCantSegment::EndCantRight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcAlignment2DCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcAlignment2DCant::list::ptr Ifc4x3_rc1::IfcAlignment2DCantSegment::ToCant() const { return data_->getInverse(IFC4X3_RC1_IfcAlignment2DCant_type, 0)->as<IfcAlignment2DCant>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCantSegment::declaration() const { return *IFC4X3_RC1_IfcAlignment2DCantSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DCantSegment::Class() { return *IFC4X3_RC1_IfcAlignment2DCantSegment_type; }
Ifc4x3_rc1::IfcAlignment2DCantSegment::IfcAlignment2DCantSegment(IfcEntityInstanceData* e) : IfcAlignment2DSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DCantSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DCantSegment::IfcAlignment2DCantSegment(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartCantLeft, boost::optional< double > v7_EndCantLeft, double v8_StartCantRight, boost::optional< double > v9_EndCantRight) : IfcAlignment2DSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DCantSegment_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartCantLeft));data_->setArgument(5,attr);} if (v7_EndCantLeft) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_EndCantLeft));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_StartCantRight));data_->setArgument(7,attr);} if (v9_EndCantRight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EndCantRight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAlignment2DHorizontal
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DHorizontal::StartDistAlong() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcAlignment2DHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >::ptr Ifc4x3_rc1::IfcAlignment2DHorizontal::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >(); }
void Ifc4x3_rc1::IfcAlignment2DHorizontal::setSegments(aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }

::Ifc4x3_rc1::IfcAlignmentCurve::list::ptr Ifc4x3_rc1::IfcAlignment2DHorizontal::ToAlignmentCurve() const { return data_->getInverse(IFC4X3_RC1_IfcAlignmentCurve_type, 0)->as<IfcAlignmentCurve>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DHorizontal::declaration() const { return *IFC4X3_RC1_IfcAlignment2DHorizontal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DHorizontal::Class() { return *IFC4X3_RC1_IfcAlignment2DHorizontal_type; }
Ifc4x3_rc1::IfcAlignment2DHorizontal::IfcAlignment2DHorizontal(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DHorizontal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DHorizontal::IfcAlignment2DHorizontal(boost::optional< double > v1_StartDistAlong, aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DHorizontalSegment >::ptr v2_Segments) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DHorizontal_type);  if (v1_StartDistAlong) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartDistAlong));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Segments)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcAlignment2DHorizontalSegment
::Ifc4x3_rc1::IfcCurveSegment2D* Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::CurveGeometry() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCurveSegment2D>(); }
void Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::setCurveGeometry(::Ifc4x3_rc1::IfcCurveSegment2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }

::Ifc4x3_rc1::IfcAlignment2DHorizontal::list::ptr Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::ToHorizontal() const { return data_->getInverse(IFC4X3_RC1_IfcAlignment2DHorizontal_type, 1)->as<IfcAlignment2DHorizontal>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::declaration() const { return *IFC4X3_RC1_IfcAlignment2DHorizontalSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::Class() { return *IFC4X3_RC1_IfcAlignment2DHorizontalSegment_type; }
Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::IfcAlignment2DHorizontalSegment(IfcEntityInstanceData* e) : IfcAlignment2DSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DHorizontalSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DHorizontalSegment::IfcAlignment2DHorizontalSegment(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, ::Ifc4x3_rc1::IfcCurveSegment2D* v4_CurveGeometry) : IfcAlignment2DSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DHorizontalSegment_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_CurveGeometry));data_->setArgument(3,attr);} }

// Function implementations for IfcAlignment2DSegment
boost::optional< bool > Ifc4x3_rc1::IfcAlignment2DSegment::TangentialContinuity() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } bool v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcAlignment2DSegment::setTangentialContinuity(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAlignment2DSegment::StartTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcAlignment2DSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAlignment2DSegment::EndTag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcAlignment2DSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DSegment::declaration() const { return *IFC4X3_RC1_IfcAlignment2DSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DSegment::Class() { return *IFC4X3_RC1_IfcAlignment2DSegment_type; }
Ifc4x3_rc1::IfcAlignment2DSegment::IfcAlignment2DSegment(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DSegment::IfcAlignment2DSegment(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DSegment_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcAlignment2DVerSegCircularArc
double Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::Radius() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
bool Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::IsConvex() const {  bool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::setIsConvex(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::declaration() const { return *IFC4X3_RC1_IfcAlignment2DVerSegCircularArc_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::Class() { return *IFC4X3_RC1_IfcAlignment2DVerSegCircularArc_type; }
Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::IfcAlignment2DVerSegCircularArc(IfcEntityInstanceData* e) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DVerSegCircularArc_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DVerSegCircularArc::IfcAlignment2DVerSegCircularArc(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartHeight, double v7_StartGradient, double v8_Radius, bool v9_IsConvex) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DVerSegCircularArc_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartHeight));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_StartGradient));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Radius));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_IsConvex));data_->setArgument(8,attr);} }

// Function implementations for IfcAlignment2DVerSegLine


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegLine::declaration() const { return *IFC4X3_RC1_IfcAlignment2DVerSegLine_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegLine::Class() { return *IFC4X3_RC1_IfcAlignment2DVerSegLine_type; }
Ifc4x3_rc1::IfcAlignment2DVerSegLine::IfcAlignment2DVerSegLine(IfcEntityInstanceData* e) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DVerSegLine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DVerSegLine::IfcAlignment2DVerSegLine(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartHeight, double v7_StartGradient) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DVerSegLine_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartHeight));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_StartGradient));data_->setArgument(6,attr);} }

// Function implementations for IfcAlignment2DVerSegParabolicArc
double Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::ParabolaConstant() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::setParabolaConstant(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
bool Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::IsConvex() const {  bool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::setIsConvex(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::declaration() const { return *IFC4X3_RC1_IfcAlignment2DVerSegParabolicArc_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::Class() { return *IFC4X3_RC1_IfcAlignment2DVerSegParabolicArc_type; }
Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::IfcAlignment2DVerSegParabolicArc(IfcEntityInstanceData* e) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DVerSegParabolicArc_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DVerSegParabolicArc::IfcAlignment2DVerSegParabolicArc(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartHeight, double v7_StartGradient, double v8_ParabolaConstant, bool v9_IsConvex) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DVerSegParabolicArc_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartHeight));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_StartGradient));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_ParabolaConstant));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_IsConvex));data_->setArgument(8,attr);} }

// Function implementations for IfcAlignment2DVerSegTransition
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DVerSegTransition::StartRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAlignment2DVerSegTransition::EndRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
bool Ifc4x3_rc1::IfcAlignment2DVerSegTransition::IsStartRadiusCCW() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
bool Ifc4x3_rc1::IfcAlignment2DVerSegTransition::IsEndRadiusCCW() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setIsEndRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
::Ifc4x3_rc1::IfcTransitionCurveType::Value Ifc4x3_rc1::IfcAlignment2DVerSegTransition::TransitionCurveType() const {  return ::Ifc4x3_rc1::IfcTransitionCurveType::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcAlignment2DVerSegTransition::setTransitionCurveType(::Ifc4x3_rc1::IfcTransitionCurveType::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTransitionCurveType::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegTransition::declaration() const { return *IFC4X3_RC1_IfcAlignment2DVerSegTransition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerSegTransition::Class() { return *IFC4X3_RC1_IfcAlignment2DVerSegTransition_type; }
Ifc4x3_rc1::IfcAlignment2DVerSegTransition::IfcAlignment2DVerSegTransition(IfcEntityInstanceData* e) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DVerSegTransition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DVerSegTransition::IfcAlignment2DVerSegTransition(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartHeight, double v7_StartGradient, boost::optional< double > v8_StartRadius, boost::optional< double > v9_EndRadius, bool v10_IsStartRadiusCCW, bool v11_IsEndRadiusCCW, ::Ifc4x3_rc1::IfcTransitionCurveType::Value v12_TransitionCurveType) : IfcAlignment2DVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DVerSegTransition_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartHeight));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_StartGradient));data_->setArgument(6,attr);} if (v8_StartRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_StartRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_EndRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EndRadius));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_IsStartRadiusCCW));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_IsEndRadiusCCW));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_TransitionCurveType,::Ifc4x3_rc1::IfcTransitionCurveType::ToString(v12_TransitionCurveType))));data_->setArgument(11,attr);} }

// Function implementations for IfcAlignment2DVertical
aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DVerticalSegment >::ptr Ifc4x3_rc1::IfcAlignment2DVertical::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcAlignment2DVerticalSegment >(); }
void Ifc4x3_rc1::IfcAlignment2DVertical::setSegments(aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DVerticalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }

::Ifc4x3_rc1::IfcAlignmentCurve::list::ptr Ifc4x3_rc1::IfcAlignment2DVertical::ToAlignmentCurve() const { return data_->getInverse(IFC4X3_RC1_IfcAlignmentCurve_type, 1)->as<IfcAlignmentCurve>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVertical::declaration() const { return *IFC4X3_RC1_IfcAlignment2DVertical_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVertical::Class() { return *IFC4X3_RC1_IfcAlignment2DVertical_type; }
Ifc4x3_rc1::IfcAlignment2DVertical::IfcAlignment2DVertical(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DVertical_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DVertical::IfcAlignment2DVertical(aggregate_of< ::Ifc4x3_rc1::IfcAlignment2DVerticalSegment >::ptr v1_Segments) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DVertical_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Segments)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcAlignment2DVerticalSegment
double Ifc4x3_rc1::IfcAlignment2DVerticalSegment::StartDistAlong() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerticalSegment::setStartDistAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcAlignment2DVerticalSegment::HorizontalLength() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerticalSegment::setHorizontalLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcAlignment2DVerticalSegment::StartHeight() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerticalSegment::setStartHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcAlignment2DVerticalSegment::StartGradient() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcAlignment2DVerticalSegment::setStartGradient(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcAlignment2DVertical::list::ptr Ifc4x3_rc1::IfcAlignment2DVerticalSegment::ToVertical() const { return data_->getInverse(IFC4X3_RC1_IfcAlignment2DVertical_type, 0)->as<IfcAlignment2DVertical>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerticalSegment::declaration() const { return *IFC4X3_RC1_IfcAlignment2DVerticalSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignment2DVerticalSegment::Class() { return *IFC4X3_RC1_IfcAlignment2DVerticalSegment_type; }
Ifc4x3_rc1::IfcAlignment2DVerticalSegment::IfcAlignment2DVerticalSegment(IfcEntityInstanceData* e) : IfcAlignment2DSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignment2DVerticalSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignment2DVerticalSegment::IfcAlignment2DVerticalSegment(boost::optional< bool > v1_TangentialContinuity, boost::optional< std::string > v2_StartTag, boost::optional< std::string > v3_EndTag, double v4_StartDistAlong, double v5_HorizontalLength, double v6_StartHeight, double v7_StartGradient) : IfcAlignment2DSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignment2DVerticalSegment_type);  if (v1_TangentialContinuity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TangentialContinuity));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_StartTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EndTag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistAlong));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HorizontalLength));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartHeight));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_StartGradient));data_->setArgument(6,attr);} }

// Function implementations for IfcAlignmentCurve
::Ifc4x3_rc1::IfcAlignment2DHorizontal* Ifc4x3_rc1::IfcAlignmentCurve::Horizontal() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcAlignment2DHorizontal>(); }
void Ifc4x3_rc1::IfcAlignmentCurve::setHorizontal(::Ifc4x3_rc1::IfcAlignment2DHorizontal* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcAlignment2DVertical* Ifc4x3_rc1::IfcAlignmentCurve::Vertical() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAlignment2DVertical>(); }
void Ifc4x3_rc1::IfcAlignmentCurve::setVertical(::Ifc4x3_rc1::IfcAlignment2DVertical* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAlignmentCurve::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAlignmentCurve::declaration() const { return *IFC4X3_RC1_IfcAlignmentCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAlignmentCurve::Class() { return *IFC4X3_RC1_IfcAlignmentCurve_type; }
Ifc4x3_rc1::IfcAlignmentCurve::IfcAlignmentCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAlignmentCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAlignmentCurve::IfcAlignmentCurve(::Ifc4x3_rc1::IfcAlignment2DHorizontal* v1_Horizontal, ::Ifc4x3_rc1::IfcAlignment2DVertical* v2_Vertical, boost::optional< std::string > v3_Tag) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAlignmentCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Horizontal));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Vertical));data_->setArgument(1,attr);} if (v3_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Tag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcAnnotation
boost::optional< ::Ifc4x3_rc1::IfcAnnotationTypeEnum::Value > Ifc4x3_rc1::IfcAnnotation::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAnnotationTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAnnotationTypeEnum::ToString(*v)));data_->setArgument(7,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcAnnotation::declaration() const { return *IFC4X3_RC1_IfcAnnotation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAnnotation::Class() { return *IFC4X3_RC1_IfcAnnotation_type; }
Ifc4x3_rc1::IfcAnnotation::IfcAnnotation(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAnnotation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_rc1::IfcAnnotationTypeEnum::Value > v8_PredefinedType) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnnotation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_PredefinedType,::Ifc4x3_rc1::IfcAnnotationTypeEnum::ToString(*v8_PredefinedType))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcAnnotationFillArea
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcAnnotationFillArea::OuterBoundary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr > Ifc4x3_rc1::IfcAnnotationFillArea::InnerBoundaries() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcCurve >(); }
void Ifc4x3_rc1::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAnnotationFillArea::declaration() const { return *IFC4X3_RC1_IfcAnnotationFillArea_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAnnotationFillArea::Class() { return *IFC4X3_RC1_IfcAnnotationFillArea_type; }
Ifc4x3_rc1::IfcAnnotationFillArea::IfcAnnotationFillArea(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAnnotationFillArea_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAnnotationFillArea::IfcAnnotationFillArea(::Ifc4x3_rc1::IfcCurve* v1_OuterBoundary, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr > v2_InnerBoundaries) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAnnotationFillArea_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_OuterBoundary));data_->setArgument(0,attr);} if (v2_InnerBoundaries) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_InnerBoundaries)->generalize());data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcApplication
::Ifc4x3_rc1::IfcOrganization* Ifc4x3_rc1::IfcApplication::ApplicationDeveloper() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcOrganization>(); }
void Ifc4x3_rc1::IfcApplication::setApplicationDeveloper(::Ifc4x3_rc1::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc1::IfcApplication::Version() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcApplication::setVersion(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
std::string Ifc4x3_rc1::IfcApplication::ApplicationFullName() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcApplication::setApplicationFullName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::string Ifc4x3_rc1::IfcApplication::ApplicationIdentifier() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcApplication::setApplicationIdentifier(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcApplication::declaration() const { return *IFC4X3_RC1_IfcApplication_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcApplication::Class() { return *IFC4X3_RC1_IfcApplication_type; }
Ifc4x3_rc1::IfcApplication::IfcApplication(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcApplication_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcApplication::IfcApplication(::Ifc4x3_rc1::IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcApplication_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ApplicationDeveloper));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Version));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ApplicationFullName));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ApplicationIdentifier));data_->setArgument(3,attr);} }

// Function implementations for IfcAppliedValue
boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcAppliedValueSelect* Ifc4x3_rc1::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAppliedValueSelect>(); }
void Ifc4x3_rc1::IfcAppliedValue::setAppliedValue(::Ifc4x3_rc1::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcMeasureWithUnit* Ifc4x3_rc1::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMeasureWithUnit>(); }
void Ifc4x3_rc1::IfcAppliedValue::setUnitBasis(::Ifc4x3_rc1::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > Ifc4x3_rc1::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcArithmeticOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > Ifc4x3_rc1::IfcAppliedValue::Components() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcAppliedValue >(); }
void Ifc4x3_rc1::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcAppliedValue::declaration() const { return *IFC4X3_RC1_IfcAppliedValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAppliedValue::Class() { return *IFC4X3_RC1_IfcAppliedValue_type; }
Ifc4x3_rc1::IfcAppliedValue::IfcAppliedValue(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAppliedValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_Components) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAppliedValue_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_AppliedValue));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_UnitBasis));data_->setArgument(3,attr);} if (v5_ApplicableDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableDate));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_FixedUntilDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_FixedUntilDate));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Category));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Condition) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Condition));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ArithmeticOperator) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_ArithmeticOperator,::Ifc4x3_rc1::IfcArithmeticOperatorEnum::ToString(*v9_ArithmeticOperator))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Components) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Components)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcApproval
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcApproval::setRequestingApproval(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcApproval::setGivingApproval(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcApproval::declaration() const { return *IFC4X3_RC1_IfcApproval_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcApproval::Class() { return *IFC4X3_RC1_IfcApproval_type; }
Ifc4x3_rc1::IfcApproval::IfcApproval(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcApproval_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcActorSelect* v8_RequestingApproval, ::Ifc4x3_rc1::IfcActorSelect* v9_GivingApproval) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcApproval_type);  if (v1_Identifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Identifier));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Name));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_TimeOfApproval) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_TimeOfApproval));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Status));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Level) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Level));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Qualifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Qualifier));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_RequestingApproval));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_GivingApproval));data_->setArgument(8,attr);} }

// Function implementations for IfcApprovalRelationship
::Ifc4x3_rc1::IfcApproval* Ifc4x3_rc1::IfcApprovalRelationship::RelatingApproval() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcApproval>(); }
void Ifc4x3_rc1::IfcApprovalRelationship::setRelatingApproval(::Ifc4x3_rc1::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcApproval >::ptr Ifc4x3_rc1::IfcApprovalRelationship::RelatedApprovals() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcApproval >(); }
void Ifc4x3_rc1::IfcApprovalRelationship::setRelatedApprovals(aggregate_of< ::Ifc4x3_rc1::IfcApproval >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcApprovalRelationship::declaration() const { return *IFC4X3_RC1_IfcApprovalRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcApprovalRelationship::Class() { return *IFC4X3_RC1_IfcApprovalRelationship_type; }
Ifc4x3_rc1::IfcApprovalRelationship::IfcApprovalRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcApprovalRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcApprovalRelationship::IfcApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcApproval* v3_RelatingApproval, aggregate_of< ::Ifc4x3_rc1::IfcApproval >::ptr v4_RelatedApprovals) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcApprovalRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingApproval));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedApprovals)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcArbitraryClosedProfileDef
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcArbitraryClosedProfileDef::OuterCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcArbitraryClosedProfileDef::setOuterCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcArbitraryClosedProfileDef::declaration() const { return *IFC4X3_RC1_IfcArbitraryClosedProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcArbitraryClosedProfileDef::Class() { return *IFC4X3_RC1_IfcArbitraryClosedProfileDef_type; }
Ifc4x3_rc1::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcArbitraryClosedProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcCurve* v3_OuterCurve) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArbitraryClosedProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_OuterCurve));data_->setArgument(2,attr);} }

// Function implementations for IfcArbitraryOpenProfileDef
::Ifc4x3_rc1::IfcBoundedCurve* Ifc4x3_rc1::IfcArbitraryOpenProfileDef::Curve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcBoundedCurve>(); }
void Ifc4x3_rc1::IfcArbitraryOpenProfileDef::setCurve(::Ifc4x3_rc1::IfcBoundedCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcArbitraryOpenProfileDef::declaration() const { return *IFC4X3_RC1_IfcArbitraryOpenProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcArbitraryOpenProfileDef::Class() { return *IFC4X3_RC1_IfcArbitraryOpenProfileDef_type; }
Ifc4x3_rc1::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcArbitraryOpenProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcBoundedCurve* v3_Curve) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArbitraryOpenProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Curve));data_->setArgument(2,attr);} }

// Function implementations for IfcArbitraryProfileDefWithVoids
aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::InnerCurves() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcCurve >(); }
void Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::setInnerCurves(aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::declaration() const { return *IFC4X3_RC1_IfcArbitraryProfileDefWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::Class() { return *IFC4X3_RC1_IfcArbitraryProfileDefWithVoids_type; }
Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(IfcEntityInstanceData* e) : IfcArbitraryClosedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcArbitraryProfileDefWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcCurve* v3_OuterCurve, aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr v4_InnerCurves) : IfcArbitraryClosedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcArbitraryProfileDefWithVoids_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_OuterCurve));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_InnerCurves)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcAsset
boost::optional< std::string > Ifc4x3_rc1::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcCostValue>(); }
void Ifc4x3_rc1::IfcAsset::setOriginalValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcCostValue>(); }
void Ifc4x3_rc1::IfcAsset::setCurrentValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::TotalReplacementCost() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcCostValue>(); }
void Ifc4x3_rc1::IfcAsset::setTotalReplacementCost(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcAsset::Owner() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcAsset::setOwner(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcAsset::User() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcAsset::setUser(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
::Ifc4x3_rc1::IfcPerson* Ifc4x3_rc1::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc1::IfcPerson>(); }
void Ifc4x3_rc1::IfcAsset::setResponsiblePerson(::Ifc4x3_rc1::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc1::IfcCostValue>(); }
void Ifc4x3_rc1::IfcAsset::setDepreciatedValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAsset::declaration() const { return *IFC4X3_RC1_IfcAsset_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAsset::Class() { return *IFC4X3_RC1_IfcAsset_type; }
Ifc4x3_rc1::IfcAsset::IfcAsset(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAsset_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAsset::IfcAsset(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcCostValue* v7_OriginalValue, ::Ifc4x3_rc1::IfcCostValue* v8_CurrentValue, ::Ifc4x3_rc1::IfcCostValue* v9_TotalReplacementCost, ::Ifc4x3_rc1::IfcActorSelect* v10_Owner, ::Ifc4x3_rc1::IfcActorSelect* v11_User, ::Ifc4x3_rc1::IfcPerson* v12_ResponsiblePerson, boost::optional< std::string > v13_IncorporationDate, ::Ifc4x3_rc1::IfcCostValue* v14_DepreciatedValue) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAsset_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_OriginalValue));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_CurrentValue));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_TotalReplacementCost));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_Owner));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_User));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_ResponsiblePerson));data_->setArgument(11,attr);} if (v13_IncorporationDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_IncorporationDate));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v14_DepreciatedValue));data_->setArgument(13,attr);} }

// Function implementations for IfcAsymmetricIShapeProfileDef
double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeWidth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::OverallDepth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setOverallDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
double Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const {  double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcAsymmetricIShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::Class() { return *IFC4X3_RC1_IfcAsymmetricIShapeProfileDef_type; }
Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAsymmetricIShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAsymmetricIShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_BottomFlangeWidth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_OverallDepth));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WebThickness));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_BottomFlangeThickness));data_->setArgument(6,attr);} if (v8_BottomFlangeFilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_BottomFlangeFilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_TopFlangeWidth));data_->setArgument(8,attr);} if (v10_TopFlangeThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_TopFlangeThickness));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_TopFlangeFilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_TopFlangeFilletRadius));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_BottomFlangeEdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_BottomFlangeEdgeRadius));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_BottomFlangeSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_BottomFlangeSlope));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_TopFlangeEdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_TopFlangeEdgeRadius));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_TopFlangeSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_TopFlangeSlope));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } }

// Function implementations for IfcAudioVisualAppliance
boost::optional< ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_rc1::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAudioVisualAppliance::declaration() const { return *IFC4X3_RC1_IfcAudioVisualAppliance_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAudioVisualAppliance::Class() { return *IFC4X3_RC1_IfcAudioVisualAppliance_type; }
Ifc4x3_rc1::IfcAudioVisualAppliance::IfcAudioVisualAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAudioVisualAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAudioVisualAppliance::IfcAudioVisualAppliance(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAudioVisualAppliance_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcAudioVisualApplianceType
::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value Ifc4x3_rc1::IfcAudioVisualApplianceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcAudioVisualApplianceType::setPredefinedType(::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAudioVisualApplianceType::declaration() const { return *IFC4X3_RC1_IfcAudioVisualApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAudioVisualApplianceType::Class() { return *IFC4X3_RC1_IfcAudioVisualApplianceType_type; }
Ifc4x3_rc1::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAudioVisualApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAudioVisualApplianceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcAudioVisualApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAxis1Placement
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcAxis1Placement::Axis() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcAxis1Placement::setAxis(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAxis1Placement::declaration() const { return *IFC4X3_RC1_IfcAxis1Placement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAxis1Placement::Class() { return *IFC4X3_RC1_IfcAxis1Placement_type; }
Ifc4x3_rc1::IfcAxis1Placement::IfcAxis1Placement(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAxis1Placement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAxis1Placement::IfcAxis1Placement(::Ifc4x3_rc1::IfcCartesianPoint* v1_Location, ::Ifc4x3_rc1::IfcDirection* v2_Axis) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAxis1Placement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Location));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis));data_->setArgument(1,attr);} }

// Function implementations for IfcAxis2Placement2D
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcAxis2Placement2D::RefDirection() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcAxis2Placement2D::setRefDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAxis2Placement2D::declaration() const { return *IFC4X3_RC1_IfcAxis2Placement2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAxis2Placement2D::Class() { return *IFC4X3_RC1_IfcAxis2Placement2D_type; }
Ifc4x3_rc1::IfcAxis2Placement2D::IfcAxis2Placement2D(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAxis2Placement2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAxis2Placement2D::IfcAxis2Placement2D(::Ifc4x3_rc1::IfcCartesianPoint* v1_Location, ::Ifc4x3_rc1::IfcDirection* v2_RefDirection) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAxis2Placement2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Location));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RefDirection));data_->setArgument(1,attr);} }

// Function implementations for IfcAxis2Placement3D
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcAxis2Placement3D::Axis() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcAxis2Placement3D::setAxis(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcAxis2Placement3D::RefDirection() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcAxis2Placement3D::setRefDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcAxis2Placement3D::declaration() const { return *IFC4X3_RC1_IfcAxis2Placement3D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAxis2Placement3D::Class() { return *IFC4X3_RC1_IfcAxis2Placement3D_type; }
Ifc4x3_rc1::IfcAxis2Placement3D::IfcAxis2Placement3D(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAxis2Placement3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAxis2Placement3D::IfcAxis2Placement3D(::Ifc4x3_rc1::IfcCartesianPoint* v1_Location, ::Ifc4x3_rc1::IfcDirection* v2_Axis, ::Ifc4x3_rc1::IfcDirection* v3_RefDirection) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAxis2Placement3D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Location));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RefDirection));data_->setArgument(2,attr);} }

// Function implementations for IfcAxisLateralInclination

::Ifc4x3_rc1::IfcLinearAxisWithInclination::list::ptr Ifc4x3_rc1::IfcAxisLateralInclination::ToLinearAxis() const { return data_->getInverse(IFC4X3_RC1_IfcLinearAxisWithInclination_type, 1)->as<IfcLinearAxisWithInclination>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcAxisLateralInclination::declaration() const { return *IFC4X3_RC1_IfcAxisLateralInclination_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcAxisLateralInclination::Class() { return *IFC4X3_RC1_IfcAxisLateralInclination_type; }
Ifc4x3_rc1::IfcAxisLateralInclination::IfcAxisLateralInclination(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcAxisLateralInclination_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcAxisLateralInclination::IfcAxisLateralInclination() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcAxisLateralInclination_type);  }

// Function implementations for IfcBSplineCurve
int Ifc4x3_rc1::IfcBSplineCurve::Degree() const {  int v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcBSplineCurve::setDegree(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr Ifc4x3_rc1::IfcBSplineCurve::ControlPointsList() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcCartesianPoint >(); }
void Ifc4x3_rc1::IfcBSplineCurve::setControlPointsList(aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcBSplineCurveForm::Value Ifc4x3_rc1::IfcBSplineCurve::CurveForm() const {  return ::Ifc4x3_rc1::IfcBSplineCurveForm::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcBSplineCurve::setCurveForm(::Ifc4x3_rc1::IfcBSplineCurveForm::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBSplineCurveForm::ToString(v)));data_->setArgument(2,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcBSplineCurve::ClosedCurve() const {  boost::logic::tribool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcBSplineCurve::setClosedCurve(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcBSplineCurve::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcBSplineCurve::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBSplineCurve::declaration() const { return *IFC4X3_RC1_IfcBSplineCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBSplineCurve::Class() { return *IFC4X3_RC1_IfcBSplineCurve_type; }
Ifc4x3_rc1::IfcBSplineCurve::IfcBSplineCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBSplineCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBSplineCurve::IfcBSplineCurve(int v1_Degree, aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_rc1::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Degree));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ControlPointsList)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_CurveForm,::Ifc4x3_rc1::IfcBSplineCurveForm::ToString(v3_CurveForm))));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ClosedCurve));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_SelfIntersect));data_->setArgument(4,attr);} }

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


const IfcParse::entity& Ifc4x3_rc1::IfcBSplineCurveWithKnots::declaration() const { return *IFC4X3_RC1_IfcBSplineCurveWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBSplineCurveWithKnots::Class() { return *IFC4X3_RC1_IfcBSplineCurveWithKnots_type; }
Ifc4x3_rc1::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(IfcEntityInstanceData* e) : IfcBSplineCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBSplineCurveWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(int v1_Degree, aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_rc1::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_rc1::IfcKnotType::Value v8_KnotSpec) : IfcBSplineCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineCurveWithKnots_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Degree));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ControlPointsList)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_CurveForm,::Ifc4x3_rc1::IfcBSplineCurveForm::ToString(v3_CurveForm))));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ClosedCurve));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_SelfIntersect));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_KnotMultiplicities));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Knots));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_KnotSpec,::Ifc4x3_rc1::IfcKnotType::ToString(v8_KnotSpec))));data_->setArgument(7,attr);} }

// Function implementations for IfcBSplineSurface
int Ifc4x3_rc1::IfcBSplineSurface::UDegree() const {  int v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcBSplineSurface::setUDegree(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
int Ifc4x3_rc1::IfcBSplineSurface::VDegree() const {  int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcBSplineSurface::setVDegree(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
aggregate_of_aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr Ifc4x3_rc1::IfcBSplineSurface::ControlPointsList() const {  aggregate_of_aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcCartesianPoint >(); }
void Ifc4x3_rc1::IfcBSplineSurface::setControlPointsList(aggregate_of_aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcBSplineSurfaceForm::Value Ifc4x3_rc1::IfcBSplineSurface::SurfaceForm() const {  return ::Ifc4x3_rc1::IfcBSplineSurfaceForm::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc1::IfcBSplineSurface::setSurfaceForm(::Ifc4x3_rc1::IfcBSplineSurfaceForm::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBSplineSurfaceForm::ToString(v)));data_->setArgument(3,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcBSplineSurface::UClosed() const {  boost::logic::tribool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcBSplineSurface::setUClosed(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcBSplineSurface::VClosed() const {  boost::logic::tribool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcBSplineSurface::setVClosed(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcBSplineSurface::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcBSplineSurface::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBSplineSurface::declaration() const { return *IFC4X3_RC1_IfcBSplineSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBSplineSurface::Class() { return *IFC4X3_RC1_IfcBSplineSurface_type; }
Ifc4x3_rc1::IfcBSplineSurface::IfcBSplineSurface(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBSplineSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBSplineSurface::IfcBSplineSurface(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_rc1::IfcBSplineSurfaceForm::Value v4_SurfaceForm, boost::logic::tribool v5_UClosed, boost::logic::tribool v6_VClosed, boost::logic::tribool v7_SelfIntersect) : IfcBoundedSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_UDegree));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_VDegree));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ControlPointsList)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v4_SurfaceForm,::Ifc4x3_rc1::IfcBSplineSurfaceForm::ToString(v4_SurfaceForm))));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_UClosed));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_VClosed));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_SelfIntersect));data_->setArgument(6,attr);} }

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


const IfcParse::entity& Ifc4x3_rc1::IfcBSplineSurfaceWithKnots::declaration() const { return *IFC4X3_RC1_IfcBSplineSurfaceWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBSplineSurfaceWithKnots::Class() { return *IFC4X3_RC1_IfcBSplineSurfaceWithKnots_type; }
Ifc4x3_rc1::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(IfcEntityInstanceData* e) : IfcBSplineSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBSplineSurfaceWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_rc1::IfcBSplineSurfaceForm::Value 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, ::Ifc4x3_rc1::IfcKnotType::Value v12_KnotSpec) : IfcBSplineSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBSplineSurfaceWithKnots_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_UDegree));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_VDegree));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ControlPointsList)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v4_SurfaceForm,::Ifc4x3_rc1::IfcBSplineSurfaceForm::ToString(v4_SurfaceForm))));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_UClosed));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_VClosed));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_SelfIntersect));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_UMultiplicities));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_VMultiplicities));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_UKnots));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_VKnots));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_KnotSpec,::Ifc4x3_rc1::IfcKnotType::ToString(v12_KnotSpec))));data_->setArgument(11,attr);} }

// Function implementations for IfcBeam
boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > Ifc4x3_rc1::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBeam::declaration() const { return *IFC4X3_RC1_IfcBeam_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBeam::Class() { return *IFC4X3_RC1_IfcBeam_type; }
Ifc4x3_rc1::IfcBeam::IfcBeam(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBeam_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBeam::IfcBeam(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeam_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBeamStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcBeamStandardCase::declaration() const { return *IFC4X3_RC1_IfcBeamStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBeamStandardCase::Class() { return *IFC4X3_RC1_IfcBeamStandardCase_type; }
Ifc4x3_rc1::IfcBeamStandardCase::IfcBeamStandardCase(IfcEntityInstanceData* e) : IfcBeam((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBeamStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBeamStandardCase::IfcBeamStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBeamTypeEnum::Value > v9_PredefinedType) : IfcBeam((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeamStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBeamType
::Ifc4x3_rc1::IfcBeamTypeEnum::Value Ifc4x3_rc1::IfcBeamType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcBeamTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBeamType::setPredefinedType(::Ifc4x3_rc1::IfcBeamTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBeamType::declaration() const { return *IFC4X3_RC1_IfcBeamType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBeamType::Class() { return *IFC4X3_RC1_IfcBeamType_type; }
Ifc4x3_rc1::IfcBeamType::IfcBeamType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBeamType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcBeamTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBeamType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcBeamTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBearing
boost::optional< ::Ifc4x3_rc1::IfcBearingTypeEnum::Value > Ifc4x3_rc1::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBearingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBearing::declaration() const { return *IFC4X3_RC1_IfcBearing_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBearing::Class() { return *IFC4X3_RC1_IfcBearing_type; }
Ifc4x3_rc1::IfcBearing::IfcBearing(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBearing_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBearing::IfcBearing(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBearingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearing_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBearingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBearingType
::Ifc4x3_rc1::IfcBearingTypeEnum::Value Ifc4x3_rc1::IfcBearingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcBearingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBearingType::setPredefinedType(::Ifc4x3_rc1::IfcBearingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBearingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBearingType::declaration() const { return *IFC4X3_RC1_IfcBearingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBearingType::Class() { return *IFC4X3_RC1_IfcBearingType_type; }
Ifc4x3_rc1::IfcBearingType::IfcBearingType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBearingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBearingType::IfcBearingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcBearingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBearingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcBearingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBlobTexture
std::string Ifc4x3_rc1::IfcBlobTexture::RasterFormat() const {  std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcBlobTexture::setRasterFormat(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::dynamic_bitset<> Ifc4x3_rc1::IfcBlobTexture::RasterCode() const {  boost::dynamic_bitset<> v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcBlobTexture::setRasterCode(boost::dynamic_bitset<> v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBlobTexture::declaration() const { return *IFC4X3_RC1_IfcBlobTexture_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBlobTexture::Class() { return *IFC4X3_RC1_IfcBlobTexture_type; }
Ifc4x3_rc1::IfcBlobTexture::IfcBlobTexture(IfcEntityInstanceData* e) : IfcSurfaceTexture((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBlobTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBlobTexture::IfcBlobTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_RasterFormat, boost::dynamic_bitset<> v7_RasterCode) : IfcSurfaceTexture((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBlobTexture_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_RepeatS));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RepeatT));data_->setArgument(1,attr);} if (v3_Mode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Mode));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TextureTransform));data_->setArgument(3,attr);} if (v5_Parameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Parameter));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RasterFormat));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RasterCode));data_->setArgument(6,attr);} }

// Function implementations for IfcBlock
double Ifc4x3_rc1::IfcBlock::XLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcBlock::setXLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcBlock::YLength() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcBlock::setYLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcBlock::ZLength() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcBlock::setZLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBlock::declaration() const { return *IFC4X3_RC1_IfcBlock_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBlock::Class() { return *IFC4X3_RC1_IfcBlock_type; }
Ifc4x3_rc1::IfcBlock::IfcBlock(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBlock_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBlock::IfcBlock(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBlock_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_XLength));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_YLength));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ZLength));data_->setArgument(3,attr);} }

// Function implementations for IfcBoiler
boost::optional< ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value > Ifc4x3_rc1::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBoilerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoiler::declaration() const { return *IFC4X3_RC1_IfcBoiler_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoiler::Class() { return *IFC4X3_RC1_IfcBoiler_type; }
Ifc4x3_rc1::IfcBoiler::IfcBoiler(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoiler_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoiler::IfcBoiler(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoiler_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBoilerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBoilerType
::Ifc4x3_rc1::IfcBoilerTypeEnum::Value Ifc4x3_rc1::IfcBoilerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcBoilerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBoilerType::setPredefinedType(::Ifc4x3_rc1::IfcBoilerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBoilerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoilerType::declaration() const { return *IFC4X3_RC1_IfcBoilerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoilerType::Class() { return *IFC4X3_RC1_IfcBoilerType_type; }
Ifc4x3_rc1::IfcBoilerType::IfcBoilerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoilerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoilerType::IfcBoilerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcBoilerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoilerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcBoilerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBooleanClippingResult


const IfcParse::entity& Ifc4x3_rc1::IfcBooleanClippingResult::declaration() const { return *IFC4X3_RC1_IfcBooleanClippingResult_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBooleanClippingResult::Class() { return *IFC4X3_RC1_IfcBooleanClippingResult_type; }
Ifc4x3_rc1::IfcBooleanClippingResult::IfcBooleanClippingResult(IfcEntityInstanceData* e) : IfcBooleanResult((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBooleanClippingResult_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBooleanClippingResult::IfcBooleanClippingResult(::Ifc4x3_rc1::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_rc1::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_rc1::IfcBooleanOperand* v3_SecondOperand) : IfcBooleanResult((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBooleanClippingResult_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Operator,::Ifc4x3_rc1::IfcBooleanOperator::ToString(v1_Operator))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_FirstOperand));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SecondOperand));data_->setArgument(2,attr);} }

// Function implementations for IfcBooleanResult
::Ifc4x3_rc1::IfcBooleanOperator::Value Ifc4x3_rc1::IfcBooleanResult::Operator() const {  return ::Ifc4x3_rc1::IfcBooleanOperator::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcBooleanResult::setOperator(::Ifc4x3_rc1::IfcBooleanOperator::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBooleanOperator::ToString(v)));data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcBooleanOperand* Ifc4x3_rc1::IfcBooleanResult::FirstOperand() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcBooleanOperand>(); }
void Ifc4x3_rc1::IfcBooleanResult::setFirstOperand(::Ifc4x3_rc1::IfcBooleanOperand* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcBooleanOperand* Ifc4x3_rc1::IfcBooleanResult::SecondOperand() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcBooleanOperand>(); }
void Ifc4x3_rc1::IfcBooleanResult::setSecondOperand(::Ifc4x3_rc1::IfcBooleanOperand* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBooleanResult::declaration() const { return *IFC4X3_RC1_IfcBooleanResult_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBooleanResult::Class() { return *IFC4X3_RC1_IfcBooleanResult_type; }
Ifc4x3_rc1::IfcBooleanResult::IfcBooleanResult(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBooleanResult_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBooleanResult::IfcBooleanResult(::Ifc4x3_rc1::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_rc1::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_rc1::IfcBooleanOperand* v3_SecondOperand) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBooleanResult_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Operator,::Ifc4x3_rc1::IfcBooleanOperator::ToString(v1_Operator))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_FirstOperand));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SecondOperand));data_->setArgument(2,attr);} }

// Function implementations for IfcBorehole


const IfcParse::entity& Ifc4x3_rc1::IfcBorehole::declaration() const { return *IFC4X3_RC1_IfcBorehole_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBorehole::Class() { return *IFC4X3_RC1_IfcBorehole_type; }
Ifc4x3_rc1::IfcBorehole::IfcBorehole(IfcEntityInstanceData* e) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBorehole_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBorehole_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcBoundaryCondition
boost::optional< std::string > Ifc4x3_rc1::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryCondition::declaration() const { return *IFC4X3_RC1_IfcBoundaryCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryCondition::Class() { return *IFC4X3_RC1_IfcBoundaryCondition_type; }
Ifc4x3_rc1::IfcBoundaryCondition::IfcBoundaryCondition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundaryCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundaryCondition::IfcBoundaryCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundaryCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcBoundaryCurve


const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryCurve::declaration() const { return *IFC4X3_RC1_IfcBoundaryCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryCurve::Class() { return *IFC4X3_RC1_IfcBoundaryCurve_type; }
Ifc4x3_rc1::IfcBoundaryCurve::IfcBoundaryCurve(IfcEntityInstanceData* e) : IfcCompositeCurveOnSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundaryCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundaryCurve::IfcBoundaryCurve(aggregate_of< ::Ifc4x3_rc1::IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurveOnSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundaryCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Segments)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SelfIntersect));data_->setArgument(1,attr);} }

// Function implementations for IfcBoundaryEdgeCondition
::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthX(::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthY(::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthZ(::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryEdgeCondition::declaration() const { return *IFC4X3_RC1_IfcBoundaryEdgeCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryEdgeCondition::Class() { return *IFC4X3_RC1_IfcBoundaryEdgeCondition_type; }
Ifc4x3_rc1::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(IfcEntityInstanceData* e) : IfcBoundaryCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundaryEdgeCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* v2_TranslationalStiffnessByLengthX, ::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* v3_TranslationalStiffnessByLengthY, ::Ifc4x3_rc1::IfcModulusOfTranslationalSubgradeReactionSelect* v4_TranslationalStiffnessByLengthZ, ::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* v5_RotationalStiffnessByLengthX, ::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* v6_RotationalStiffnessByLengthY, ::Ifc4x3_rc1::IfcModulusOfRotationalSubgradeReactionSelect* v7_RotationalStiffnessByLengthZ) : IfcBoundaryCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundaryEdgeCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TranslationalStiffnessByLengthX));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TranslationalStiffnessByLengthY));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TranslationalStiffnessByLengthZ));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RotationalStiffnessByLengthX));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RotationalStiffnessByLengthY));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RotationalStiffnessByLengthZ));data_->setArgument(6,attr);} }

// Function implementations for IfcBoundaryFaceCondition
::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaX(::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaY(::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* Ifc4x3_rc1::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect>(); }
void Ifc4x3_rc1::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaZ(::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryFaceCondition::declaration() const { return *IFC4X3_RC1_IfcBoundaryFaceCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryFaceCondition::Class() { return *IFC4X3_RC1_IfcBoundaryFaceCondition_type; }
Ifc4x3_rc1::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(IfcEntityInstanceData* e) : IfcBoundaryCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundaryFaceCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* v2_TranslationalStiffnessByAreaX, ::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* v3_TranslationalStiffnessByAreaY, ::Ifc4x3_rc1::IfcModulusOfSubgradeReactionSelect* v4_TranslationalStiffnessByAreaZ) : IfcBoundaryCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundaryFaceCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TranslationalStiffnessByAreaX));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TranslationalStiffnessByAreaY));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TranslationalStiffnessByAreaZ));data_->setArgument(3,attr);} }

// Function implementations for IfcBoundaryNodeCondition
::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeCondition::TranslationalStiffnessX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcTranslationalStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeCondition::setTranslationalStiffnessX(::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeCondition::TranslationalStiffnessY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcTranslationalStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeCondition::setTranslationalStiffnessY(::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeCondition::TranslationalStiffnessZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcTranslationalStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeCondition::setTranslationalStiffnessZ(::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcRotationalStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeCondition::RotationalStiffnessX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcRotationalStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeCondition::setRotationalStiffnessX(::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcRotationalStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeCondition::RotationalStiffnessY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcRotationalStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeCondition::setRotationalStiffnessY(::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcRotationalStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeCondition::RotationalStiffnessZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcRotationalStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeCondition::setRotationalStiffnessZ(::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryNodeCondition::declaration() const { return *IFC4X3_RC1_IfcBoundaryNodeCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryNodeCondition::Class() { return *IFC4X3_RC1_IfcBoundaryNodeCondition_type; }
Ifc4x3_rc1::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(IfcEntityInstanceData* e) : IfcBoundaryCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundaryNodeCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ) : IfcBoundaryCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundaryNodeCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TranslationalStiffnessX));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TranslationalStiffnessY));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TranslationalStiffnessZ));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RotationalStiffnessX));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RotationalStiffnessY));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RotationalStiffnessZ));data_->setArgument(6,attr);} }

// Function implementations for IfcBoundaryNodeConditionWarping
::Ifc4x3_rc1::IfcWarpingStiffnessSelect* Ifc4x3_rc1::IfcBoundaryNodeConditionWarping::WarpingStiffness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcWarpingStiffnessSelect>(); }
void Ifc4x3_rc1::IfcBoundaryNodeConditionWarping::setWarpingStiffness(::Ifc4x3_rc1::IfcWarpingStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryNodeConditionWarping::declaration() const { return *IFC4X3_RC1_IfcBoundaryNodeConditionWarping_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundaryNodeConditionWarping::Class() { return *IFC4X3_RC1_IfcBoundaryNodeConditionWarping_type; }
Ifc4x3_rc1::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(IfcEntityInstanceData* e) : IfcBoundaryNodeCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundaryNodeConditionWarping_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_rc1::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_rc1::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ, ::Ifc4x3_rc1::IfcWarpingStiffnessSelect* v8_WarpingStiffness) : IfcBoundaryNodeCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundaryNodeConditionWarping_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TranslationalStiffnessX));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TranslationalStiffnessY));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TranslationalStiffnessZ));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RotationalStiffnessX));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RotationalStiffnessY));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RotationalStiffnessZ));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_WarpingStiffness));data_->setArgument(7,attr);} }

// Function implementations for IfcBoundedCurve

::Ifc4x3_rc1::IfcLinearPositioningElement::list::ptr Ifc4x3_rc1::IfcBoundedCurve::PositioningElement() const { return data_->getInverse(IFC4X3_RC1_IfcLinearPositioningElement_type, 7)->as<IfcLinearPositioningElement>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcBoundedCurve::declaration() const { return *IFC4X3_RC1_IfcBoundedCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundedCurve::Class() { return *IFC4X3_RC1_IfcBoundedCurve_type; }
Ifc4x3_rc1::IfcBoundedCurve::IfcBoundedCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundedCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundedCurve::IfcBoundedCurve() : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundedCurve_type);  }

// Function implementations for IfcBoundedSurface


const IfcParse::entity& Ifc4x3_rc1::IfcBoundedSurface::declaration() const { return *IFC4X3_RC1_IfcBoundedSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundedSurface::Class() { return *IFC4X3_RC1_IfcBoundedSurface_type; }
Ifc4x3_rc1::IfcBoundedSurface::IfcBoundedSurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundedSurface::IfcBoundedSurface() : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundedSurface_type);  }

// Function implementations for IfcBoundingBox
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcBoundingBox::Corner() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcBoundingBox::setCorner(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcBoundingBox::XDim() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcBoundingBox::setXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcBoundingBox::YDim() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcBoundingBox::setYDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcBoundingBox::ZDim() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcBoundingBox::setZDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoundingBox::declaration() const { return *IFC4X3_RC1_IfcBoundingBox_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoundingBox::Class() { return *IFC4X3_RC1_IfcBoundingBox_type; }
Ifc4x3_rc1::IfcBoundingBox::IfcBoundingBox(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoundingBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoundingBox::IfcBoundingBox(::Ifc4x3_rc1::IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoundingBox_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Corner));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_XDim));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_YDim));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ZDim));data_->setArgument(3,attr);} }

// Function implementations for IfcBoxedHalfSpace
::Ifc4x3_rc1::IfcBoundingBox* Ifc4x3_rc1::IfcBoxedHalfSpace::Enclosure() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcBoundingBox>(); }
void Ifc4x3_rc1::IfcBoxedHalfSpace::setEnclosure(::Ifc4x3_rc1::IfcBoundingBox* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBoxedHalfSpace::declaration() const { return *IFC4X3_RC1_IfcBoxedHalfSpace_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBoxedHalfSpace::Class() { return *IFC4X3_RC1_IfcBoxedHalfSpace_type; }
Ifc4x3_rc1::IfcBoxedHalfSpace::IfcBoxedHalfSpace(IfcEntityInstanceData* e) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBoxedHalfSpace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_rc1::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_rc1::IfcBoundingBox* v3_Enclosure) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBoxedHalfSpace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BaseSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AgreementFlag));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Enclosure));data_->setArgument(2,attr);} }

// Function implementations for IfcBridge
boost::optional< ::Ifc4x3_rc1::IfcBridgeTypeEnum::Value > Ifc4x3_rc1::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBridgeTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBridge::declaration() const { return *IFC4X3_RC1_IfcBridge_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBridge::Class() { return *IFC4X3_RC1_IfcBridge_type; }
Ifc4x3_rc1::IfcBridge::IfcBridge(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBridge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_rc1::IfcBridgeTypeEnum::Value > v10_PredefinedType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridge_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcBridgeTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcBridgePart


const IfcParse::entity& Ifc4x3_rc1::IfcBridgePart::declaration() const { return *IFC4X3_RC1_IfcBridgePart_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBridgePart::Class() { return *IFC4X3_RC1_IfcBridgePart_type; }
Ifc4x3_rc1::IfcBridgePart::IfcBridgePart(IfcEntityInstanceData* e) : IfcFacilityPart((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBridgePart_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_rc1::IfcFacilityPartTypeSelect* v10_PredefinedType, ::Ifc4x3_rc1::IfcFacilityUsageEnum::Value v11_UsageType) : IfcFacilityPart((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBridgePart_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_PredefinedType));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_UsageType,::Ifc4x3_rc1::IfcFacilityUsageEnum::ToString(v11_UsageType))));data_->setArgument(10,attr);} }

// Function implementations for IfcBuilding
boost::optional< double > Ifc4x3_rc1::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
::Ifc4x3_rc1::IfcPostalAddress* Ifc4x3_rc1::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc1::IfcPostalAddress>(); }
void Ifc4x3_rc1::IfcBuilding::setBuildingAddress(::Ifc4x3_rc1::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuilding::declaration() const { return *IFC4X3_RC1_IfcBuilding_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuilding::Class() { return *IFC4X3_RC1_IfcBuilding_type; }
Ifc4x3_rc1::IfcBuilding::IfcBuilding(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuilding_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, ::Ifc4x3_rc1::IfcPostalAddress* v12_BuildingAddress) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuilding_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_ElevationOfRefHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_ElevationOfRefHeight));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_ElevationOfTerrain) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_ElevationOfTerrain));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_BuildingAddress));data_->setArgument(11,attr);} }

// Function implementations for IfcBuildingElementPart
boost::optional< ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_rc1::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementPart::declaration() const { return *IFC4X3_RC1_IfcBuildingElementPart_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementPart::Class() { return *IFC4X3_RC1_IfcBuildingElementPart_type; }
Ifc4x3_rc1::IfcBuildingElementPart::IfcBuildingElementPart(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuildingElementPart_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuildingElementPart::IfcBuildingElementPart(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementPart_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBuildingElementPartType
::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value Ifc4x3_rc1::IfcBuildingElementPartType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBuildingElementPartType::setPredefinedType(::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementPartType::declaration() const { return *IFC4X3_RC1_IfcBuildingElementPartType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementPartType::Class() { return *IFC4X3_RC1_IfcBuildingElementPartType_type; }
Ifc4x3_rc1::IfcBuildingElementPartType::IfcBuildingElementPartType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuildingElementPartType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementPartType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcBuildingElementPartTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBuildingElementProxy
boost::optional< ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_rc1::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementProxy::declaration() const { return *IFC4X3_RC1_IfcBuildingElementProxy_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementProxy::Class() { return *IFC4X3_RC1_IfcBuildingElementProxy_type; }
Ifc4x3_rc1::IfcBuildingElementProxy::IfcBuildingElementProxy(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuildingElementProxy_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuildingElementProxy::IfcBuildingElementProxy(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementProxy_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBuildingElementProxyType
::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value Ifc4x3_rc1::IfcBuildingElementProxyType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBuildingElementProxyType::setPredefinedType(::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementProxyType::declaration() const { return *IFC4X3_RC1_IfcBuildingElementProxyType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuildingElementProxyType::Class() { return *IFC4X3_RC1_IfcBuildingElementProxyType_type; }
Ifc4x3_rc1::IfcBuildingElementProxyType::IfcBuildingElementProxyType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuildingElementProxyType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingElementProxyType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcBuildingElementProxyTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBuildingStorey
boost::optional< double > Ifc4x3_rc1::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuildingStorey::declaration() const { return *IFC4X3_RC1_IfcBuildingStorey_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuildingStorey::Class() { return *IFC4X3_RC1_IfcBuildingStorey_type; }
Ifc4x3_rc1::IfcBuildingStorey::IfcBuildingStorey(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuildingStorey_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_Elevation) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingStorey_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Elevation) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Elevation));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcBuildingSystem
boost::optional< ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value > Ifc4x3_rc1::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuildingSystem::declaration() const { return *IFC4X3_RC1_IfcBuildingSystem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuildingSystem::Class() { return *IFC4X3_RC1_IfcBuildingSystem_type; }
Ifc4x3_rc1::IfcBuildingSystem::IfcBuildingSystem(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuildingSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuildingSystem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_PredefinedType,::Ifc4x3_rc1::IfcBuildingSystemTypeEnum::ToString(*v6_PredefinedType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongName));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcBuiltElement


const IfcParse::entity& Ifc4x3_rc1::IfcBuiltElement::declaration() const { return *IFC4X3_RC1_IfcBuiltElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuiltElement::Class() { return *IFC4X3_RC1_IfcBuiltElement_type; }
Ifc4x3_rc1::IfcBuiltElement::IfcBuiltElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuiltElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuiltElement::IfcBuiltElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcBuiltElementType


const IfcParse::entity& Ifc4x3_rc1::IfcBuiltElementType::declaration() const { return *IFC4X3_RC1_IfcBuiltElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuiltElementType::Class() { return *IFC4X3_RC1_IfcBuiltElementType_type; }
Ifc4x3_rc1::IfcBuiltElementType::IfcBuiltElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuiltElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBuiltSystem
boost::optional< ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value > Ifc4x3_rc1::IfcBuiltSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::ToString(*v)));data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcBuiltSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBuiltSystem::declaration() const { return *IFC4X3_RC1_IfcBuiltSystem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBuiltSystem::Class() { return *IFC4X3_RC1_IfcBuiltSystem_type; }
Ifc4x3_rc1::IfcBuiltSystem::IfcBuiltSystem(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBuiltSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBuiltSystem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_PredefinedType,::Ifc4x3_rc1::IfcBuiltSystemTypeEnum::ToString(*v6_PredefinedType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongName));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcBurner
boost::optional< ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value > Ifc4x3_rc1::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcBurnerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBurner::declaration() const { return *IFC4X3_RC1_IfcBurner_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBurner::Class() { return *IFC4X3_RC1_IfcBurner_type; }
Ifc4x3_rc1::IfcBurner::IfcBurner(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBurner_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBurner::IfcBurner(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBurner_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcBurnerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcBurnerType
::Ifc4x3_rc1::IfcBurnerTypeEnum::Value Ifc4x3_rc1::IfcBurnerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcBurnerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcBurnerType::setPredefinedType(::Ifc4x3_rc1::IfcBurnerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBurnerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcBurnerType::declaration() const { return *IFC4X3_RC1_IfcBurnerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcBurnerType::Class() { return *IFC4X3_RC1_IfcBurnerType_type; }
Ifc4x3_rc1::IfcBurnerType::IfcBurnerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcBurnerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcBurnerType::IfcBurnerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcBurnerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcBurnerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcBurnerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCShapeProfileDef
double Ifc4x3_rc1::IfcCShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcCShapeProfileDef::Width() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcCShapeProfileDef::setWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcCShapeProfileDef::WallThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcCShapeProfileDef::Girth() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcCShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCShapeProfileDef::Class() { return *IFC4X3_RC1_IfcCShapeProfileDef_type; }
Ifc4x3_rc1::IfcCShapeProfileDef::IfcCShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_Depth, double v5_Width, double v6_WallThickness, double v7_Girth, boost::optional< double > v8_InternalFilletRadius) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Width));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WallThickness));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Girth));data_->setArgument(6,attr);} if (v8_InternalFilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_InternalFilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcCableCarrierFitting
boost::optional< ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_rc1::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierFitting::declaration() const { return *IFC4X3_RC1_IfcCableCarrierFitting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierFitting::Class() { return *IFC4X3_RC1_IfcCableCarrierFitting_type; }
Ifc4x3_rc1::IfcCableCarrierFitting::IfcCableCarrierFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableCarrierFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableCarrierFitting::IfcCableCarrierFitting(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierFitting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCableCarrierFittingType
::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value Ifc4x3_rc1::IfcCableCarrierFittingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCableCarrierFittingType::setPredefinedType(::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierFittingType::declaration() const { return *IFC4X3_RC1_IfcCableCarrierFittingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierFittingType::Class() { return *IFC4X3_RC1_IfcCableCarrierFittingType_type; }
Ifc4x3_rc1::IfcCableCarrierFittingType::IfcCableCarrierFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableCarrierFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierFittingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCableCarrierFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCableCarrierSegment
boost::optional< ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_rc1::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierSegment::declaration() const { return *IFC4X3_RC1_IfcCableCarrierSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierSegment::Class() { return *IFC4X3_RC1_IfcCableCarrierSegment_type; }
Ifc4x3_rc1::IfcCableCarrierSegment::IfcCableCarrierSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableCarrierSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableCarrierSegment::IfcCableCarrierSegment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCableCarrierSegmentType
::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value Ifc4x3_rc1::IfcCableCarrierSegmentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCableCarrierSegmentType::setPredefinedType(::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierSegmentType::declaration() const { return *IFC4X3_RC1_IfcCableCarrierSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableCarrierSegmentType::Class() { return *IFC4X3_RC1_IfcCableCarrierSegmentType_type; }
Ifc4x3_rc1::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableCarrierSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableCarrierSegmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCableCarrierSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCableFitting
boost::optional< ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value > Ifc4x3_rc1::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableFitting::declaration() const { return *IFC4X3_RC1_IfcCableFitting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableFitting::Class() { return *IFC4X3_RC1_IfcCableFitting_type; }
Ifc4x3_rc1::IfcCableFitting::IfcCableFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableFitting::IfcCableFitting(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableFitting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCableFittingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCableFittingType
::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value Ifc4x3_rc1::IfcCableFittingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCableFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCableFittingType::setPredefinedType(::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCableFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableFittingType::declaration() const { return *IFC4X3_RC1_IfcCableFittingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableFittingType::Class() { return *IFC4X3_RC1_IfcCableFittingType_type; }
Ifc4x3_rc1::IfcCableFittingType::IfcCableFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCableFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableFittingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCableFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCableSegment
boost::optional< ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value > Ifc4x3_rc1::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableSegment::declaration() const { return *IFC4X3_RC1_IfcCableSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableSegment::Class() { return *IFC4X3_RC1_IfcCableSegment_type; }
Ifc4x3_rc1::IfcCableSegment::IfcCableSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableSegment::IfcCableSegment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCableSegmentType
::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value Ifc4x3_rc1::IfcCableSegmentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCableSegmentType::setPredefinedType(::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCableSegmentType::declaration() const { return *IFC4X3_RC1_IfcCableSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCableSegmentType::Class() { return *IFC4X3_RC1_IfcCableSegmentType_type; }
Ifc4x3_rc1::IfcCableSegmentType::IfcCableSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCableSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCableSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCableSegmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCableSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCaissonFoundation
boost::optional< ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_rc1::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCaissonFoundation::declaration() const { return *IFC4X3_RC1_IfcCaissonFoundation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCaissonFoundation::Class() { return *IFC4X3_RC1_IfcCaissonFoundation_type; }
Ifc4x3_rc1::IfcCaissonFoundation::IfcCaissonFoundation(IfcEntityInstanceData* e) : IfcDeepFoundation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCaissonFoundation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCaissonFoundation::IfcCaissonFoundation(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value > v9_PredefinedType) : IfcDeepFoundation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCaissonFoundation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCaissonFoundationType
::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value Ifc4x3_rc1::IfcCaissonFoundationType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCaissonFoundationType::setPredefinedType(::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCaissonFoundationType::declaration() const { return *IFC4X3_RC1_IfcCaissonFoundationType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCaissonFoundationType::Class() { return *IFC4X3_RC1_IfcCaissonFoundationType_type; }
Ifc4x3_rc1::IfcCaissonFoundationType::IfcCaissonFoundationType(IfcEntityInstanceData* e) : IfcDeepFoundationType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCaissonFoundationType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCaissonFoundationType::IfcCaissonFoundationType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCaissonFoundationType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCaissonFoundationTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCartesianPoint
std::vector< double > /*[1:3]*/ Ifc4x3_rc1::IfcCartesianPoint::Coordinates() const {  std::vector< double > /*[1:3]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCartesianPoint::setCoordinates(std::vector< double > /*[1:3]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPoint::declaration() const { return *IFC4X3_RC1_IfcCartesianPoint_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPoint::Class() { return *IFC4X3_RC1_IfcCartesianPoint_type; }
Ifc4x3_rc1::IfcCartesianPoint::IfcCartesianPoint(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianPoint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianPoint::IfcCartesianPoint(std::vector< double > /*[1:3]*/ v1_Coordinates) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianPoint_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} }

// Function implementations for IfcCartesianPointList


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList::declaration() const { return *IFC4X3_RC1_IfcCartesianPointList_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList::Class() { return *IFC4X3_RC1_IfcCartesianPointList_type; }
Ifc4x3_rc1::IfcCartesianPointList::IfcCartesianPointList(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianPointList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianPointList_type);  }

// Function implementations for IfcCartesianPointList2D
std::vector< std::vector< double > > Ifc4x3_rc1::IfcCartesianPointList2D::CoordList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCartesianPointList2D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcCartesianPointList2D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList2D::declaration() const { return *IFC4X3_RC1_IfcCartesianPointList2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList2D::Class() { return *IFC4X3_RC1_IfcCartesianPointList2D_type; }
Ifc4x3_rc1::IfcCartesianPointList2D::IfcCartesianPointList2D(IfcEntityInstanceData* e) : IfcCartesianPointList((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianPointList2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianPointList2D::IfcCartesianPointList2D(std::vector< std::vector< double > > v1_CoordList, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList) : IfcCartesianPointList((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianPointList2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CoordList));data_->setArgument(0,attr);} if (v2_TagList) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_TagList));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcCartesianPointList3D
std::vector< std::vector< double > > Ifc4x3_rc1::IfcCartesianPointList3D::CoordList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCartesianPointList3D::setCoordList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcCartesianPointList3D::TagList() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList3D::declaration() const { return *IFC4X3_RC1_IfcCartesianPointList3D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianPointList3D::Class() { return *IFC4X3_RC1_IfcCartesianPointList3D_type; }
Ifc4x3_rc1::IfcCartesianPointList3D::IfcCartesianPointList3D(IfcEntityInstanceData* e) : IfcCartesianPointList((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianPointList3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianPointList3D::IfcCartesianPointList3D(std::vector< std::vector< double > > v1_CoordList, boost::optional< std::vector< std::string > /*[1:?]*/ > v2_TagList) : IfcCartesianPointList((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianPointList3D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CoordList));data_->setArgument(0,attr);} if (v2_TagList) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_TagList));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcCartesianTransformationOperator
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcCartesianTransformationOperator::Axis1() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcCartesianTransformationOperator::setAxis1(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcCartesianTransformationOperator::Axis2() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcCartesianTransformationOperator::LocalOrigin() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator::Class() { return *IFC4X3_RC1_IfcCartesianTransformationOperator_type; }
Ifc4x3_rc1::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianTransformationOperator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(::Ifc4x3_rc1::IfcDirection* v1_Axis1, ::Ifc4x3_rc1::IfcDirection* v2_Axis2, ::Ifc4x3_rc1::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianTransformationOperator_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Axis1));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis2));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_LocalOrigin));data_->setArgument(2,attr);} if (v4_Scale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Scale));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcCartesianTransformationOperator2D


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator2D::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator2D::Class() { return *IFC4X3_RC1_IfcCartesianTransformationOperator2D_type; }
Ifc4x3_rc1::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianTransformationOperator2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(::Ifc4x3_rc1::IfcDirection* v1_Axis1, ::Ifc4x3_rc1::IfcDirection* v2_Axis2, ::Ifc4x3_rc1::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianTransformationOperator2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Axis1));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis2));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_LocalOrigin));data_->setArgument(2,attr);} if (v4_Scale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Scale));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcCartesianTransformationOperator2DnonUniform
boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator2DnonUniform_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::Class() { return *IFC4X3_RC1_IfcCartesianTransformationOperator2DnonUniform_type; }
Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianTransformationOperator2DnonUniform_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(::Ifc4x3_rc1::IfcDirection* v1_Axis1, ::Ifc4x3_rc1::IfcDirection* v2_Axis2, ::Ifc4x3_rc1::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2) : IfcCartesianTransformationOperator2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianTransformationOperator2DnonUniform_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Axis1));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis2));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_LocalOrigin));data_->setArgument(2,attr);} if (v4_Scale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Scale));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Scale2) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Scale2));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcCartesianTransformationOperator3D
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcCartesianTransformationOperator3D::Axis3() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcCartesianTransformationOperator3D::setAxis3(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator3D::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator3D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator3D::Class() { return *IFC4X3_RC1_IfcCartesianTransformationOperator3D_type; }
Ifc4x3_rc1::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianTransformationOperator3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(::Ifc4x3_rc1::IfcDirection* v1_Axis1, ::Ifc4x3_rc1::IfcDirection* v2_Axis2, ::Ifc4x3_rc1::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_rc1::IfcDirection* v5_Axis3) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianTransformationOperator3D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Axis1));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis2));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_LocalOrigin));data_->setArgument(2,attr);} if (v4_Scale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Scale));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Axis3));data_->setArgument(4,attr);} }

// Function implementations for IfcCartesianTransformationOperator3DnonUniform
boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X3_RC1_IfcCartesianTransformationOperator3DnonUniform_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::Class() { return *IFC4X3_RC1_IfcCartesianTransformationOperator3DnonUniform_type; }
Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCartesianTransformationOperator3DnonUniform_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(::Ifc4x3_rc1::IfcDirection* v1_Axis1, ::Ifc4x3_rc1::IfcDirection* v2_Axis2, ::Ifc4x3_rc1::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_rc1::IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3) : IfcCartesianTransformationOperator3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCartesianTransformationOperator3DnonUniform_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Axis1));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Axis2));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_LocalOrigin));data_->setArgument(2,attr);} if (v4_Scale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Scale));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Axis3));data_->setArgument(4,attr);} if (v6_Scale2) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Scale2));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Scale3) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Scale3));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcCenterLineProfileDef
double Ifc4x3_rc1::IfcCenterLineProfileDef::Thickness() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCenterLineProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCenterLineProfileDef::declaration() const { return *IFC4X3_RC1_IfcCenterLineProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCenterLineProfileDef::Class() { return *IFC4X3_RC1_IfcCenterLineProfileDef_type; }
Ifc4x3_rc1::IfcCenterLineProfileDef::IfcCenterLineProfileDef(IfcEntityInstanceData* e) : IfcArbitraryOpenProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCenterLineProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcBoundedCurve* v3_Curve, double v4_Thickness) : IfcArbitraryOpenProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCenterLineProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Curve));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Thickness));data_->setArgument(3,attr);} }

// Function implementations for IfcChiller
boost::optional< ::Ifc4x3_rc1::IfcChillerTypeEnum::Value > Ifc4x3_rc1::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChillerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcChiller::declaration() const { return *IFC4X3_RC1_IfcChiller_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcChiller::Class() { return *IFC4X3_RC1_IfcChiller_type; }
Ifc4x3_rc1::IfcChiller::IfcChiller(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcChiller_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcChiller::IfcChiller(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcChillerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChiller_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcChillerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcChillerType
::Ifc4x3_rc1::IfcChillerTypeEnum::Value Ifc4x3_rc1::IfcChillerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcChillerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcChillerType::setPredefinedType(::Ifc4x3_rc1::IfcChillerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcChillerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcChillerType::declaration() const { return *IFC4X3_RC1_IfcChillerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcChillerType::Class() { return *IFC4X3_RC1_IfcChillerType_type; }
Ifc4x3_rc1::IfcChillerType::IfcChillerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcChillerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcChillerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChillerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcChillerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcChimney
boost::optional< ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value > Ifc4x3_rc1::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChimneyTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcChimney::declaration() const { return *IFC4X3_RC1_IfcChimney_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcChimney::Class() { return *IFC4X3_RC1_IfcChimney_type; }
Ifc4x3_rc1::IfcChimney::IfcChimney(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcChimney_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcChimney::IfcChimney(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChimney_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcChimneyTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcChimneyType
::Ifc4x3_rc1::IfcChimneyTypeEnum::Value Ifc4x3_rc1::IfcChimneyType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcChimneyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcChimneyType::setPredefinedType(::Ifc4x3_rc1::IfcChimneyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcChimneyTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcChimneyType::declaration() const { return *IFC4X3_RC1_IfcChimneyType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcChimneyType::Class() { return *IFC4X3_RC1_IfcChimneyType_type; }
Ifc4x3_rc1::IfcChimneyType::IfcChimneyType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcChimneyType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcChimneyType::IfcChimneyType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcChimneyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcChimneyType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcChimneyTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCircle
double Ifc4x3_rc1::IfcCircle::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCircle::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCircle::declaration() const { return *IFC4X3_RC1_IfcCircle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCircle::Class() { return *IFC4X3_RC1_IfcCircle_type; }
Ifc4x3_rc1::IfcCircle::IfcCircle(IfcEntityInstanceData* e) : IfcConic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCircle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCircle::IfcCircle(::Ifc4x3_rc1::IfcAxis2Placement* v1_Position, double v2_Radius) : IfcConic((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCircle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Radius));data_->setArgument(1,attr);} }

// Function implementations for IfcCircleHollowProfileDef
double Ifc4x3_rc1::IfcCircleHollowProfileDef::WallThickness() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcCircleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCircleHollowProfileDef::declaration() const { return *IFC4X3_RC1_IfcCircleHollowProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCircleHollowProfileDef::Class() { return *IFC4X3_RC1_IfcCircleHollowProfileDef_type; }
Ifc4x3_rc1::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(IfcEntityInstanceData* e) : IfcCircleProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCircleHollowProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness) : IfcCircleProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCircleHollowProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Radius));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_WallThickness));data_->setArgument(4,attr);} }

// Function implementations for IfcCircleProfileDef
double Ifc4x3_rc1::IfcCircleProfileDef::Radius() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCircleProfileDef::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCircleProfileDef::declaration() const { return *IFC4X3_RC1_IfcCircleProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCircleProfileDef::Class() { return *IFC4X3_RC1_IfcCircleProfileDef_type; }
Ifc4x3_rc1::IfcCircleProfileDef::IfcCircleProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCircleProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCircleProfileDef::IfcCircleProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_Radius) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCircleProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Radius));data_->setArgument(3,attr);} }

// Function implementations for IfcCircularArcSegment2D
double Ifc4x3_rc1::IfcCircularArcSegment2D::Radius() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCircularArcSegment2D::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
bool Ifc4x3_rc1::IfcCircularArcSegment2D::IsCCW() const {  bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcCircularArcSegment2D::setIsCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCircularArcSegment2D::declaration() const { return *IFC4X3_RC1_IfcCircularArcSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCircularArcSegment2D::Class() { return *IFC4X3_RC1_IfcCircularArcSegment2D_type; }
Ifc4x3_rc1::IfcCircularArcSegment2D::IfcCircularArcSegment2D(IfcEntityInstanceData* e) : IfcCurveSegment2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCircularArcSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCircularArcSegment2D::IfcCircularArcSegment2D(::Ifc4x3_rc1::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength, double v4_Radius, bool v5_IsCCW) : IfcCurveSegment2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCircularArcSegment2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_StartPoint));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartDirection));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SegmentLength));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Radius));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_IsCCW));data_->setArgument(4,attr);} }

// Function implementations for IfcCivilElement


const IfcParse::entity& Ifc4x3_rc1::IfcCivilElement::declaration() const { return *IFC4X3_RC1_IfcCivilElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCivilElement::Class() { return *IFC4X3_RC1_IfcCivilElement_type; }
Ifc4x3_rc1::IfcCivilElement::IfcCivilElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCivilElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCivilElement::IfcCivilElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCivilElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcCivilElementType


const IfcParse::entity& Ifc4x3_rc1::IfcCivilElementType::declaration() const { return *IFC4X3_RC1_IfcCivilElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCivilElementType::Class() { return *IFC4X3_RC1_IfcCivilElementType_type; }
Ifc4x3_rc1::IfcCivilElementType::IfcCivilElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCivilElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCivilElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcClassification
boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
std::string Ifc4x3_rc1::IfcClassification::Name() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcClassification::ReferenceTokens() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcClassification::declaration() const { return *IFC4X3_RC1_IfcClassification_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcClassification::Class() { return *IFC4X3_RC1_IfcClassification_type; }
Ifc4x3_rc1::IfcClassification::IfcClassification(IfcEntityInstanceData* e) : IfcExternalInformation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcClassification_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcClassification_type);  if (v1_Source) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Source));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Edition) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Edition));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EditionDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EditionDate));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Name));data_->setArgument(3,attr);} if (v5_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Description));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Location));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ReferenceTokens) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ReferenceTokens));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcClassificationReference
::Ifc4x3_rc1::IfcClassificationReferenceSelect* Ifc4x3_rc1::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcClassificationReferenceSelect>(); }
void Ifc4x3_rc1::IfcClassificationReference::setReferencedSource(::Ifc4x3_rc1::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcClassificationReference::declaration() const { return *IFC4X3_RC1_IfcClassificationReference_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcClassificationReference::Class() { return *IFC4X3_RC1_IfcClassificationReference_type; }
Ifc4x3_rc1::IfcClassificationReference::IfcClassificationReference(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcClassificationReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcClassificationReference::IfcClassificationReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, ::Ifc4x3_rc1::IfcClassificationReferenceSelect* v4_ReferencedSource, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Sort) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcClassificationReference_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ReferencedSource));data_->setArgument(3,attr);} if (v5_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Description));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Sort) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Sort));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcClosedShell


const IfcParse::entity& Ifc4x3_rc1::IfcClosedShell::declaration() const { return *IFC4X3_RC1_IfcClosedShell_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcClosedShell::Class() { return *IFC4X3_RC1_IfcClosedShell_type; }
Ifc4x3_rc1::IfcClosedShell::IfcClosedShell(IfcEntityInstanceData* e) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcClosedShell_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4x3_rc1::IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcClosedShell_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CfsFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcCoil
boost::optional< ::Ifc4x3_rc1::IfcCoilTypeEnum::Value > Ifc4x3_rc1::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCoil::declaration() const { return *IFC4X3_RC1_IfcCoil_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoil::Class() { return *IFC4X3_RC1_IfcCoil_type; }
Ifc4x3_rc1::IfcCoil::IfcCoil(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoil_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCoil::IfcCoil(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCoilTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoil_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCoilTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCoilType
::Ifc4x3_rc1::IfcCoilTypeEnum::Value Ifc4x3_rc1::IfcCoilType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCoilTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCoilType::setPredefinedType(::Ifc4x3_rc1::IfcCoilTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCoilTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCoilType::declaration() const { return *IFC4X3_RC1_IfcCoilType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoilType::Class() { return *IFC4X3_RC1_IfcCoilType_type; }
Ifc4x3_rc1::IfcCoilType::IfcCoilType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoilType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCoilType::IfcCoilType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCoilTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoilType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCoilTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcColourRgb
double Ifc4x3_rc1::IfcColourRgb::Red() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcColourRgb::setRed(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcColourRgb::Green() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcColourRgb::setGreen(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcColourRgb::Blue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcColourRgb::setBlue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcColourRgb::declaration() const { return *IFC4X3_RC1_IfcColourRgb_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcColourRgb::Class() { return *IFC4X3_RC1_IfcColourRgb_type; }
Ifc4x3_rc1::IfcColourRgb::IfcColourRgb(IfcEntityInstanceData* e) : IfcColourSpecification((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcColourRgb_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcColourRgb::IfcColourRgb(boost::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue) : IfcColourSpecification((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColourRgb_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Red));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Green));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Blue));data_->setArgument(3,attr);} }

// Function implementations for IfcColourRgbList
std::vector< std::vector< double > > Ifc4x3_rc1::IfcColourRgbList::ColourList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcColourRgbList::setColourList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcColourRgbList::declaration() const { return *IFC4X3_RC1_IfcColourRgbList_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcColourRgbList::Class() { return *IFC4X3_RC1_IfcColourRgbList_type; }
Ifc4x3_rc1::IfcColourRgbList::IfcColourRgbList(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcColourRgbList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > v1_ColourList) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColourRgbList_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ColourList));data_->setArgument(0,attr);} }

// Function implementations for IfcColourSpecification
boost::optional< std::string > Ifc4x3_rc1::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcColourSpecification::declaration() const { return *IFC4X3_RC1_IfcColourSpecification_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcColourSpecification::Class() { return *IFC4X3_RC1_IfcColourSpecification_type; }
Ifc4x3_rc1::IfcColourSpecification::IfcColourSpecification(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcColourSpecification_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcColourSpecification::IfcColourSpecification(boost::optional< std::string > v1_Name) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColourSpecification_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcColumn
boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > Ifc4x3_rc1::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcColumn::declaration() const { return *IFC4X3_RC1_IfcColumn_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcColumn::Class() { return *IFC4X3_RC1_IfcColumn_type; }
Ifc4x3_rc1::IfcColumn::IfcColumn(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcColumn_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcColumn::IfcColumn(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumn_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcColumnStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcColumnStandardCase::declaration() const { return *IFC4X3_RC1_IfcColumnStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcColumnStandardCase::Class() { return *IFC4X3_RC1_IfcColumnStandardCase_type; }
Ifc4x3_rc1::IfcColumnStandardCase::IfcColumnStandardCase(IfcEntityInstanceData* e) : IfcColumn((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcColumnStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcColumnStandardCase::IfcColumnStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcColumnTypeEnum::Value > v9_PredefinedType) : IfcColumn((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumnStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcColumnType
::Ifc4x3_rc1::IfcColumnTypeEnum::Value Ifc4x3_rc1::IfcColumnType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcColumnTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcColumnType::setPredefinedType(::Ifc4x3_rc1::IfcColumnTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcColumnType::declaration() const { return *IFC4X3_RC1_IfcColumnType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcColumnType::Class() { return *IFC4X3_RC1_IfcColumnType_type; }
Ifc4x3_rc1::IfcColumnType::IfcColumnType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcColumnType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcColumnTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcColumnType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcColumnTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCommunicationsAppliance
boost::optional< ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_rc1::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCommunicationsAppliance::declaration() const { return *IFC4X3_RC1_IfcCommunicationsAppliance_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCommunicationsAppliance::Class() { return *IFC4X3_RC1_IfcCommunicationsAppliance_type; }
Ifc4x3_rc1::IfcCommunicationsAppliance::IfcCommunicationsAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCommunicationsAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCommunicationsAppliance::IfcCommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCommunicationsAppliance_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCommunicationsApplianceType
::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value Ifc4x3_rc1::IfcCommunicationsApplianceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCommunicationsApplianceType::setPredefinedType(::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCommunicationsApplianceType::declaration() const { return *IFC4X3_RC1_IfcCommunicationsApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCommunicationsApplianceType::Class() { return *IFC4X3_RC1_IfcCommunicationsApplianceType_type; }
Ifc4x3_rc1::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCommunicationsApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCommunicationsApplianceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCommunicationsApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcComplexProperty
std::string Ifc4x3_rc1::IfcComplexProperty::UsageName() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcComplexProperty::setUsageName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr Ifc4x3_rc1::IfcComplexProperty::HasProperties() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcProperty >(); }
void Ifc4x3_rc1::IfcComplexProperty::setHasProperties(aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcComplexProperty::declaration() const { return *IFC4X3_RC1_IfcComplexProperty_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcComplexProperty::Class() { return *IFC4X3_RC1_IfcComplexProperty_type; }
Ifc4x3_rc1::IfcComplexProperty::IfcComplexProperty(IfcEntityInstanceData* e) : IfcProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcComplexProperty_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_UsageName, aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v4_HasProperties) : IfcProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexProperty_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_UsageName));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_HasProperties)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcComplexPropertyTemplate
boost::optional< std::string > Ifc4x3_rc1::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_rc1::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(5,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr > Ifc4x3_rc1::IfcComplexPropertyTemplate::HasPropertyTemplates() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcPropertyTemplate >(); }
void Ifc4x3_rc1::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcComplexPropertyTemplate::declaration() const { return *IFC4X3_RC1_IfcComplexPropertyTemplate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcComplexPropertyTemplate::Class() { return *IFC4X3_RC1_IfcComplexPropertyTemplate_type; }
Ifc4x3_rc1::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcComplexPropertyTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_UsageName, boost::optional< ::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr > v7_HasPropertyTemplates) : IfcPropertyTemplate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcComplexPropertyTemplate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_UsageName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_UsageName));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_TemplateType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_TemplateType,::Ifc4x3_rc1::IfcComplexPropertyTemplateTypeEnum::ToString(*v6_TemplateType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_HasPropertyTemplates) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_HasPropertyTemplates)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcCompositeCurve
aggregate_of< ::Ifc4x3_rc1::IfcCompositeCurveSegment >::ptr Ifc4x3_rc1::IfcCompositeCurve::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcCompositeCurveSegment >(); }
void Ifc4x3_rc1::IfcCompositeCurve::setSegments(aggregate_of< ::Ifc4x3_rc1::IfcCompositeCurveSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcCompositeCurve::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCompositeCurve::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCompositeCurve::declaration() const { return *IFC4X3_RC1_IfcCompositeCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCompositeCurve::Class() { return *IFC4X3_RC1_IfcCompositeCurve_type; }
Ifc4x3_rc1::IfcCompositeCurve::IfcCompositeCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCompositeCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCompositeCurve::IfcCompositeCurve(aggregate_of< ::Ifc4x3_rc1::IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompositeCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Segments)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SelfIntersect));data_->setArgument(1,attr);} }

// Function implementations for IfcCompositeCurveOnSurface


const IfcParse::entity& Ifc4x3_rc1::IfcCompositeCurveOnSurface::declaration() const { return *IFC4X3_RC1_IfcCompositeCurveOnSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCompositeCurveOnSurface::Class() { return *IFC4X3_RC1_IfcCompositeCurveOnSurface_type; }
Ifc4x3_rc1::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(IfcEntityInstanceData* e) : IfcCompositeCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCompositeCurveOnSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(aggregate_of< ::Ifc4x3_rc1::IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompositeCurveOnSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Segments)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SelfIntersect));data_->setArgument(1,attr);} }

// Function implementations for IfcCompositeCurveSegment
::Ifc4x3_rc1::IfcTransitionCode::Value Ifc4x3_rc1::IfcCompositeCurveSegment::Transition() const {  return ::Ifc4x3_rc1::IfcTransitionCode::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcCompositeCurveSegment::setTransition(::Ifc4x3_rc1::IfcTransitionCode::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTransitionCode::ToString(v)));data_->setArgument(0,attr);} }
bool Ifc4x3_rc1::IfcCompositeCurveSegment::SameSense() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCompositeCurveSegment::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcCompositeCurveSegment::ParentCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcCompositeCurveSegment::setParentCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcCompositeCurveSegment::declaration() const { return *IFC4X3_RC1_IfcCompositeCurveSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCompositeCurveSegment::Class() { return *IFC4X3_RC1_IfcCompositeCurveSegment_type; }
Ifc4x3_rc1::IfcCompositeCurveSegment::IfcCompositeCurveSegment(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCompositeCurveSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_rc1::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_rc1::IfcCurve* v3_ParentCurve) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompositeCurveSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Transition,::Ifc4x3_rc1::IfcTransitionCode::ToString(v1_Transition))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SameSense));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ParentCurve));data_->setArgument(2,attr);} }

// Function implementations for IfcCompositeProfileDef
aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr Ifc4x3_rc1::IfcCompositeProfileDef::Profiles() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcProfileDef >(); }
void Ifc4x3_rc1::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCompositeProfileDef::declaration() const { return *IFC4X3_RC1_IfcCompositeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCompositeProfileDef::Class() { return *IFC4X3_RC1_IfcCompositeProfileDef_type; }
Ifc4x3_rc1::IfcCompositeProfileDef::IfcCompositeProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCompositeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompositeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Profiles)->generalize());data_->setArgument(2,attr);} if (v4_Label) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Label));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcCompressor
boost::optional< ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value > Ifc4x3_rc1::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCompressor::declaration() const { return *IFC4X3_RC1_IfcCompressor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCompressor::Class() { return *IFC4X3_RC1_IfcCompressor_type; }
Ifc4x3_rc1::IfcCompressor::IfcCompressor(IfcEntityInstanceData* e) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCompressor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCompressor::IfcCompressor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompressor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCompressorType
::Ifc4x3_rc1::IfcCompressorTypeEnum::Value Ifc4x3_rc1::IfcCompressorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCompressorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCompressorType::setPredefinedType(::Ifc4x3_rc1::IfcCompressorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCompressorType::declaration() const { return *IFC4X3_RC1_IfcCompressorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCompressorType::Class() { return *IFC4X3_RC1_IfcCompressorType_type; }
Ifc4x3_rc1::IfcCompressorType::IfcCompressorType(IfcEntityInstanceData* e) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCompressorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCompressorTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCompressorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCompressorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCondenser
boost::optional< ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value > Ifc4x3_rc1::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCondenserTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCondenser::declaration() const { return *IFC4X3_RC1_IfcCondenser_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCondenser::Class() { return *IFC4X3_RC1_IfcCondenser_type; }
Ifc4x3_rc1::IfcCondenser::IfcCondenser(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCondenser_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCondenser::IfcCondenser(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCondenser_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCondenserTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCondenserType
::Ifc4x3_rc1::IfcCondenserTypeEnum::Value Ifc4x3_rc1::IfcCondenserType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCondenserTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCondenserType::setPredefinedType(::Ifc4x3_rc1::IfcCondenserTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCondenserTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCondenserType::declaration() const { return *IFC4X3_RC1_IfcCondenserType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCondenserType::Class() { return *IFC4X3_RC1_IfcCondenserType_type; }
Ifc4x3_rc1::IfcCondenserType::IfcCondenserType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCondenserType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCondenserType::IfcCondenserType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCondenserTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCondenserType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCondenserTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcConic
::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcConic::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(); }
void Ifc4x3_rc1::IfcConic::setPosition(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConic::declaration() const { return *IFC4X3_RC1_IfcConic_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConic::Class() { return *IFC4X3_RC1_IfcConic_type; }
Ifc4x3_rc1::IfcConic::IfcConic(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConic_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConic::IfcConic(::Ifc4x3_rc1::IfcAxis2Placement* v1_Position) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConic_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcConnectedFaceSet
aggregate_of< ::Ifc4x3_rc1::IfcFace >::ptr Ifc4x3_rc1::IfcConnectedFaceSet::CfsFaces() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcFace >(); }
void Ifc4x3_rc1::IfcConnectedFaceSet::setCfsFaces(aggregate_of< ::Ifc4x3_rc1::IfcFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConnectedFaceSet::declaration() const { return *IFC4X3_RC1_IfcConnectedFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectedFaceSet::Class() { return *IFC4X3_RC1_IfcConnectedFaceSet_type; }
Ifc4x3_rc1::IfcConnectedFaceSet::IfcConnectedFaceSet(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectedFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectedFaceSet::IfcConnectedFaceSet(aggregate_of< ::Ifc4x3_rc1::IfcFace >::ptr v1_CfsFaces) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectedFaceSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CfsFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcConnectionCurveGeometry
::Ifc4x3_rc1::IfcCurveOrEdgeCurve* Ifc4x3_rc1::IfcConnectionCurveGeometry::CurveOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurveOrEdgeCurve>(); }
void Ifc4x3_rc1::IfcConnectionCurveGeometry::setCurveOnRelatingElement(::Ifc4x3_rc1::IfcCurveOrEdgeCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCurveOrEdgeCurve* Ifc4x3_rc1::IfcConnectionCurveGeometry::CurveOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurveOrEdgeCurve>(); }
void Ifc4x3_rc1::IfcConnectionCurveGeometry::setCurveOnRelatedElement(::Ifc4x3_rc1::IfcCurveOrEdgeCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConnectionCurveGeometry::declaration() const { return *IFC4X3_RC1_IfcConnectionCurveGeometry_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectionCurveGeometry::Class() { return *IFC4X3_RC1_IfcConnectionCurveGeometry_type; }
Ifc4x3_rc1::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectionCurveGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(::Ifc4x3_rc1::IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, ::Ifc4x3_rc1::IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionCurveGeometry_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CurveOnRelatingElement));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CurveOnRelatedElement));data_->setArgument(1,attr);} }

// Function implementations for IfcConnectionGeometry


const IfcParse::entity& Ifc4x3_rc1::IfcConnectionGeometry::declaration() const { return *IFC4X3_RC1_IfcConnectionGeometry_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectionGeometry::Class() { return *IFC4X3_RC1_IfcConnectionGeometry_type; }
Ifc4x3_rc1::IfcConnectionGeometry::IfcConnectionGeometry(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectionGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionGeometry_type);  }

// Function implementations for IfcConnectionPointEccentricity
boost::optional< double > Ifc4x3_rc1::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConnectionPointEccentricity::declaration() const { return *IFC4X3_RC1_IfcConnectionPointEccentricity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectionPointEccentricity::Class() { return *IFC4X3_RC1_IfcConnectionPointEccentricity_type; }
Ifc4x3_rc1::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(IfcEntityInstanceData* e) : IfcConnectionPointGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectionPointEccentricity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(::Ifc4x3_rc1::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_rc1::IfcPointOrVertexPoint* v2_PointOnRelatedElement, boost::optional< double > v3_EccentricityInX, boost::optional< double > v4_EccentricityInY, boost::optional< double > v5_EccentricityInZ) : IfcConnectionPointGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionPointEccentricity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PointOnRelatingElement));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PointOnRelatedElement));data_->setArgument(1,attr);} if (v3_EccentricityInX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EccentricityInX));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_EccentricityInY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_EccentricityInY));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EccentricityInZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EccentricityInZ));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcConnectionPointGeometry
::Ifc4x3_rc1::IfcPointOrVertexPoint* Ifc4x3_rc1::IfcConnectionPointGeometry::PointOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcPointOrVertexPoint>(); }
void Ifc4x3_rc1::IfcConnectionPointGeometry::setPointOnRelatingElement(::Ifc4x3_rc1::IfcPointOrVertexPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcPointOrVertexPoint* Ifc4x3_rc1::IfcConnectionPointGeometry::PointOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcPointOrVertexPoint>(); }
void Ifc4x3_rc1::IfcConnectionPointGeometry::setPointOnRelatedElement(::Ifc4x3_rc1::IfcPointOrVertexPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConnectionPointGeometry::declaration() const { return *IFC4X3_RC1_IfcConnectionPointGeometry_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectionPointGeometry::Class() { return *IFC4X3_RC1_IfcConnectionPointGeometry_type; }
Ifc4x3_rc1::IfcConnectionPointGeometry::IfcConnectionPointGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectionPointGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectionPointGeometry::IfcConnectionPointGeometry(::Ifc4x3_rc1::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_rc1::IfcPointOrVertexPoint* v2_PointOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionPointGeometry_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PointOnRelatingElement));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PointOnRelatedElement));data_->setArgument(1,attr);} }

// Function implementations for IfcConnectionSurfaceGeometry
::Ifc4x3_rc1::IfcSurfaceOrFaceSurface* Ifc4x3_rc1::IfcConnectionSurfaceGeometry::SurfaceOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSurfaceOrFaceSurface>(); }
void Ifc4x3_rc1::IfcConnectionSurfaceGeometry::setSurfaceOnRelatingElement(::Ifc4x3_rc1::IfcSurfaceOrFaceSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcSurfaceOrFaceSurface* Ifc4x3_rc1::IfcConnectionSurfaceGeometry::SurfaceOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcSurfaceOrFaceSurface>(); }
void Ifc4x3_rc1::IfcConnectionSurfaceGeometry::setSurfaceOnRelatedElement(::Ifc4x3_rc1::IfcSurfaceOrFaceSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConnectionSurfaceGeometry::declaration() const { return *IFC4X3_RC1_IfcConnectionSurfaceGeometry_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectionSurfaceGeometry::Class() { return *IFC4X3_RC1_IfcConnectionSurfaceGeometry_type; }
Ifc4x3_rc1::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectionSurfaceGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(::Ifc4x3_rc1::IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, ::Ifc4x3_rc1::IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionSurfaceGeometry_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SurfaceOnRelatingElement));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SurfaceOnRelatedElement));data_->setArgument(1,attr);} }

// Function implementations for IfcConnectionVolumeGeometry
::Ifc4x3_rc1::IfcSolidOrShell* Ifc4x3_rc1::IfcConnectionVolumeGeometry::VolumeOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSolidOrShell>(); }
void Ifc4x3_rc1::IfcConnectionVolumeGeometry::setVolumeOnRelatingElement(::Ifc4x3_rc1::IfcSolidOrShell* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcSolidOrShell* Ifc4x3_rc1::IfcConnectionVolumeGeometry::VolumeOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcSolidOrShell>(); }
void Ifc4x3_rc1::IfcConnectionVolumeGeometry::setVolumeOnRelatedElement(::Ifc4x3_rc1::IfcSolidOrShell* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConnectionVolumeGeometry::declaration() const { return *IFC4X3_RC1_IfcConnectionVolumeGeometry_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConnectionVolumeGeometry::Class() { return *IFC4X3_RC1_IfcConnectionVolumeGeometry_type; }
Ifc4x3_rc1::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConnectionVolumeGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_rc1::IfcSolidOrShell* v1_VolumeOnRelatingElement, ::Ifc4x3_rc1::IfcSolidOrShell* v2_VolumeOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConnectionVolumeGeometry_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_VolumeOnRelatingElement));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_VolumeOnRelatedElement));data_->setArgument(1,attr);} }

// Function implementations for IfcConstraint
std::string Ifc4x3_rc1::IfcConstraint::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcConstraintEnum::Value Ifc4x3_rc1::IfcConstraint::ConstraintGrade() const {  return ::Ifc4x3_rc1::IfcConstraintEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcConstraint::setConstraintGrade(::Ifc4x3_rc1::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcConstraint::setCreatingActor(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc1::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc1::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X3_RC1_IfcResourceConstraintRelationship_type, 2)->as<IfcResourceConstraintRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcConstraint::declaration() const { return *IFC4X3_RC1_IfcConstraint_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstraint::Class() { return *IFC4X3_RC1_IfcConstraint_type; }
Ifc4x3_rc1::IfcConstraint::IfcConstraint(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstraint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_rc1::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstraint_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_ConstraintGrade,::Ifc4x3_rc1::IfcConstraintEnum::ToString(v3_ConstraintGrade))));data_->setArgument(2,attr);} if (v4_ConstraintSource) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ConstraintSource));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CreatingActor));data_->setArgument(4,attr);} if (v6_CreationTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_CreationTime));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_UserDefinedGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_UserDefinedGrade));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcConstructionEquipmentResource
boost::optional< ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_rc1::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionEquipmentResource::declaration() const { return *IFC4X3_RC1_IfcConstructionEquipmentResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionEquipmentResource::Class() { return *IFC4X3_RC1_IfcConstructionEquipmentResource_type; }
Ifc4x3_rc1::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionEquipmentResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionEquipmentResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcConstructionEquipmentResourceType
::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value Ifc4x3_rc1::IfcConstructionEquipmentResourceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcConstructionEquipmentResourceType::setPredefinedType(::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionEquipmentResourceType::declaration() const { return *IFC4X3_RC1_IfcConstructionEquipmentResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionEquipmentResourceType::Class() { return *IFC4X3_RC1_IfcConstructionEquipmentResourceType_type; }
Ifc4x3_rc1::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionEquipmentResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionEquipmentResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcConstructionEquipmentResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcConstructionMaterialResource
boost::optional< ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_rc1::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionMaterialResource::declaration() const { return *IFC4X3_RC1_IfcConstructionMaterialResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionMaterialResource::Class() { return *IFC4X3_RC1_IfcConstructionMaterialResource_type; }
Ifc4x3_rc1::IfcConstructionMaterialResource::IfcConstructionMaterialResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionMaterialResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionMaterialResource::IfcConstructionMaterialResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionMaterialResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcConstructionMaterialResourceType
::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value Ifc4x3_rc1::IfcConstructionMaterialResourceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcConstructionMaterialResourceType::setPredefinedType(::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionMaterialResourceType::declaration() const { return *IFC4X3_RC1_IfcConstructionMaterialResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionMaterialResourceType::Class() { return *IFC4X3_RC1_IfcConstructionMaterialResourceType_type; }
Ifc4x3_rc1::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionMaterialResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionMaterialResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcConstructionMaterialResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcConstructionProductResource
boost::optional< ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_rc1::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionProductResource::declaration() const { return *IFC4X3_RC1_IfcConstructionProductResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionProductResource::Class() { return *IFC4X3_RC1_IfcConstructionProductResource_type; }
Ifc4x3_rc1::IfcConstructionProductResource::IfcConstructionProductResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionProductResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionProductResource::IfcConstructionProductResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionProductResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcConstructionProductResourceType
::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value Ifc4x3_rc1::IfcConstructionProductResourceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcConstructionProductResourceType::setPredefinedType(::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionProductResourceType::declaration() const { return *IFC4X3_RC1_IfcConstructionProductResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionProductResourceType::Class() { return *IFC4X3_RC1_IfcConstructionProductResourceType_type; }
Ifc4x3_rc1::IfcConstructionProductResourceType::IfcConstructionProductResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionProductResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionProductResourceType::IfcConstructionProductResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionProductResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcConstructionProductResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcConstructionResource
::Ifc4x3_rc1::IfcResourceTime* Ifc4x3_rc1::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcResourceTime>(); }
void Ifc4x3_rc1::IfcConstructionResource::setUsage(::Ifc4x3_rc1::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > Ifc4x3_rc1::IfcConstructionResource::BaseCosts() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcAppliedValue >(); }
void Ifc4x3_rc1::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcPhysicalQuantity* Ifc4x3_rc1::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcPhysicalQuantity>(); }
void Ifc4x3_rc1::IfcConstructionResource::setBaseQuantity(::Ifc4x3_rc1::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionResource::declaration() const { return *IFC4X3_RC1_IfcConstructionResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionResource::Class() { return *IFC4X3_RC1_IfcConstructionResource_type; }
Ifc4x3_rc1::IfcConstructionResource::IfcConstructionResource(IfcEntityInstanceData* e) : IfcResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity) : IfcResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} }

// Function implementations for IfcConstructionResourceType
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > Ifc4x3_rc1::IfcConstructionResourceType::BaseCosts() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcAppliedValue >(); }
void Ifc4x3_rc1::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcPhysicalQuantity* Ifc4x3_rc1::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcPhysicalQuantity>(); }
void Ifc4x3_rc1::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_rc1::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConstructionResourceType::declaration() const { return *IFC4X3_RC1_IfcConstructionResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConstructionResourceType::Class() { return *IFC4X3_RC1_IfcConstructionResourceType_type; }
Ifc4x3_rc1::IfcConstructionResourceType::IfcConstructionResourceType(IfcEntityInstanceData* e) : IfcTypeResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConstructionResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity) : IfcTypeResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConstructionResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);} }

// Function implementations for IfcContext
boost::optional< std::string > Ifc4x3_rc1::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > Ifc4x3_rc1::IfcContext::RepresentationContexts() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcRepresentationContext >(); }
void Ifc4x3_rc1::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcUnitAssignment* Ifc4x3_rc1::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcUnitAssignment>(); }
void Ifc4x3_rc1::IfcContext::setUnitsInContext(::Ifc4x3_rc1::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelDefinesByProperties::list::ptr Ifc4x3_rc1::IfcContext::IsDefinedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByProperties_type, 4)->as<IfcRelDefinesByProperties>(); }
::Ifc4x3_rc1::IfcRelDeclares::list::ptr Ifc4x3_rc1::IfcContext::Declares() const { return data_->getInverse(IFC4X3_RC1_IfcRelDeclares_type, 4)->as<IfcRelDeclares>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcContext::declaration() const { return *IFC4X3_RC1_IfcContext_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcContext::Class() { return *IFC4X3_RC1_IfcContext_type; }
Ifc4x3_rc1::IfcContext::IfcContext(IfcEntityInstanceData* e) : IfcObjectDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcContext::IfcContext(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_rc1::IfcUnitAssignment* v9_UnitsInContext) : IfcObjectDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcContext_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LongName));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Phase) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Phase));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_RepresentationContexts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RepresentationContexts)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_UnitsInContext));data_->setArgument(8,attr);} }

// Function implementations for IfcContextDependentUnit
std::string Ifc4x3_rc1::IfcContextDependentUnit::Name() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcContextDependentUnit::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcContextDependentUnit::declaration() const { return *IFC4X3_RC1_IfcContextDependentUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcContextDependentUnit::Class() { return *IFC4X3_RC1_IfcContextDependentUnit_type; }
Ifc4x3_rc1::IfcContextDependentUnit::IfcContextDependentUnit(IfcEntityInstanceData* e) : IfcNamedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcContextDependentUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_rc1::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc1::IfcUnitEnum::Value v2_UnitType, std::string v3_Name) : IfcNamedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcContextDependentUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Dimensions));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_UnitType,::Ifc4x3_rc1::IfcUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Name));data_->setArgument(2,attr);} }

// Function implementations for IfcControl
boost::optional< std::string > Ifc4x3_rc1::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }

::Ifc4x3_rc1::IfcRelAssignsToControl::list::ptr Ifc4x3_rc1::IfcControl::Controls() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToControl_type, 6)->as<IfcRelAssignsToControl>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcControl::declaration() const { return *IFC4X3_RC1_IfcControl_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcControl::Class() { return *IFC4X3_RC1_IfcControl_type; }
Ifc4x3_rc1::IfcControl::IfcControl(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcControl_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcController
boost::optional< ::Ifc4x3_rc1::IfcControllerTypeEnum::Value > Ifc4x3_rc1::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcControllerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcController::declaration() const { return *IFC4X3_RC1_IfcController_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcController::Class() { return *IFC4X3_RC1_IfcController_type; }
Ifc4x3_rc1::IfcController::IfcController(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcController_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcController::IfcController(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcControllerTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcController_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcControllerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcControllerType
::Ifc4x3_rc1::IfcControllerTypeEnum::Value Ifc4x3_rc1::IfcControllerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcControllerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcControllerType::setPredefinedType(::Ifc4x3_rc1::IfcControllerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcControllerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcControllerType::declaration() const { return *IFC4X3_RC1_IfcControllerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcControllerType::Class() { return *IFC4X3_RC1_IfcControllerType_type; }
Ifc4x3_rc1::IfcControllerType::IfcControllerType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcControllerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcControllerType::IfcControllerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcControllerTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcControllerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcControllerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcConversionBasedUnit
std::string Ifc4x3_rc1::IfcConversionBasedUnit::Name() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcConversionBasedUnit::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcMeasureWithUnit* Ifc4x3_rc1::IfcConversionBasedUnit::ConversionFactor() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMeasureWithUnit>(); }
void Ifc4x3_rc1::IfcConversionBasedUnit::setConversionFactor(::Ifc4x3_rc1::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcConversionBasedUnit::declaration() const { return *IFC4X3_RC1_IfcConversionBasedUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConversionBasedUnit::Class() { return *IFC4X3_RC1_IfcConversionBasedUnit_type; }
Ifc4x3_rc1::IfcConversionBasedUnit::IfcConversionBasedUnit(IfcEntityInstanceData* e) : IfcNamedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConversionBasedUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConversionBasedUnit::IfcConversionBasedUnit(::Ifc4x3_rc1::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc1::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_rc1::IfcMeasureWithUnit* v4_ConversionFactor) : IfcNamedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConversionBasedUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Dimensions));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_UnitType,::Ifc4x3_rc1::IfcUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Name));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ConversionFactor));data_->setArgument(3,attr);} }

// Function implementations for IfcConversionBasedUnitWithOffset
double Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::ConversionOffset() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::setConversionOffset(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::declaration() const { return *IFC4X3_RC1_IfcConversionBasedUnitWithOffset_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::Class() { return *IFC4X3_RC1_IfcConversionBasedUnitWithOffset_type; }
Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(IfcEntityInstanceData* e) : IfcConversionBasedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConversionBasedUnitWithOffset_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc4x3_rc1::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc1::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_rc1::IfcMeasureWithUnit* v4_ConversionFactor, double v5_ConversionOffset) : IfcConversionBasedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConversionBasedUnitWithOffset_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Dimensions));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_UnitType,::Ifc4x3_rc1::IfcUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Name));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ConversionFactor));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ConversionOffset));data_->setArgument(4,attr);} }

// Function implementations for IfcConveyorSegment
boost::optional< ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_rc1::IfcConveyorSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConveyorSegment::declaration() const { return *IFC4X3_RC1_IfcConveyorSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConveyorSegment::Class() { return *IFC4X3_RC1_IfcConveyorSegment_type; }
Ifc4x3_rc1::IfcConveyorSegment::IfcConveyorSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConveyorSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConveyorSegment::IfcConveyorSegment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConveyorSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcConveyorSegmentType
::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value Ifc4x3_rc1::IfcConveyorSegmentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcConveyorSegmentType::setPredefinedType(::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcConveyorSegmentType::declaration() const { return *IFC4X3_RC1_IfcConveyorSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcConveyorSegmentType::Class() { return *IFC4X3_RC1_IfcConveyorSegmentType_type; }
Ifc4x3_rc1::IfcConveyorSegmentType::IfcConveyorSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcConveyorSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcConveyorSegmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcConveyorSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCooledBeam
boost::optional< ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value > Ifc4x3_rc1::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCooledBeamTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCooledBeam::declaration() const { return *IFC4X3_RC1_IfcCooledBeam_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCooledBeam::Class() { return *IFC4X3_RC1_IfcCooledBeam_type; }
Ifc4x3_rc1::IfcCooledBeam::IfcCooledBeam(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCooledBeam_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCooledBeam::IfcCooledBeam(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCooledBeam_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCooledBeamTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCooledBeamType
::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value Ifc4x3_rc1::IfcCooledBeamType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCooledBeamType::setPredefinedType(::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCooledBeamTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCooledBeamType::declaration() const { return *IFC4X3_RC1_IfcCooledBeamType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCooledBeamType::Class() { return *IFC4X3_RC1_IfcCooledBeamType_type; }
Ifc4x3_rc1::IfcCooledBeamType::IfcCooledBeamType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCooledBeamType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCooledBeamTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCooledBeamType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCooledBeamTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCoolingTower
boost::optional< ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value > Ifc4x3_rc1::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCoolingTower::declaration() const { return *IFC4X3_RC1_IfcCoolingTower_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoolingTower::Class() { return *IFC4X3_RC1_IfcCoolingTower_type; }
Ifc4x3_rc1::IfcCoolingTower::IfcCoolingTower(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoolingTower_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCoolingTower::IfcCoolingTower(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoolingTower_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCoolingTowerType
::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value Ifc4x3_rc1::IfcCoolingTowerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCoolingTowerType::setPredefinedType(::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCoolingTowerType::declaration() const { return *IFC4X3_RC1_IfcCoolingTowerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoolingTowerType::Class() { return *IFC4X3_RC1_IfcCoolingTowerType_type; }
Ifc4x3_rc1::IfcCoolingTowerType::IfcCoolingTowerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoolingTowerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCoolingTowerType::IfcCoolingTowerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoolingTowerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCoolingTowerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCoordinateOperation
::Ifc4x3_rc1::IfcCoordinateReferenceSystemSelect* Ifc4x3_rc1::IfcCoordinateOperation::SourceCRS() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCoordinateReferenceSystemSelect>(); }
void Ifc4x3_rc1::IfcCoordinateOperation::setSourceCRS(::Ifc4x3_rc1::IfcCoordinateReferenceSystemSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCoordinateReferenceSystem* Ifc4x3_rc1::IfcCoordinateOperation::TargetCRS() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCoordinateReferenceSystem>(); }
void Ifc4x3_rc1::IfcCoordinateOperation::setTargetCRS(::Ifc4x3_rc1::IfcCoordinateReferenceSystem* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCoordinateOperation::declaration() const { return *IFC4X3_RC1_IfcCoordinateOperation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoordinateOperation::Class() { return *IFC4X3_RC1_IfcCoordinateOperation_type; }
Ifc4x3_rc1::IfcCoordinateOperation::IfcCoordinateOperation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoordinateOperation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_rc1::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_rc1::IfcCoordinateReferenceSystem* v2_TargetCRS) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoordinateOperation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SourceCRS));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TargetCRS));data_->setArgument(1,attr);} }

// Function implementations for IfcCoordinateReferenceSystem
std::string Ifc4x3_rc1::IfcCoordinateReferenceSystem::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }

::Ifc4x3_rc1::IfcCoordinateOperation::list::ptr Ifc4x3_rc1::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC1_IfcCoordinateOperation_type, 0)->as<IfcCoordinateOperation>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcCoordinateReferenceSystem::declaration() const { return *IFC4X3_RC1_IfcCoordinateReferenceSystem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoordinateReferenceSystem::Class() { return *IFC4X3_RC1_IfcCoordinateReferenceSystem_type; }
Ifc4x3_rc1::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoordinateReferenceSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoordinateReferenceSystem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_GeodeticDatum) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_GeodeticDatum));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_VerticalDatum) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_VerticalDatum));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcCostItem
boost::optional< ::Ifc4x3_rc1::IfcCostItemTypeEnum::Value > Ifc4x3_rc1::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCostItemTypeEnum::ToString(*v)));data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCostValue >::ptr > Ifc4x3_rc1::IfcCostItem::CostValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcCostValue >(); }
void Ifc4x3_rc1::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr > Ifc4x3_rc1::IfcCostItem::CostQuantities() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcPhysicalQuantity >(); }
void Ifc4x3_rc1::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCostItem::declaration() const { return *IFC4X3_RC1_IfcCostItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCostItem::Class() { return *IFC4X3_RC1_IfcCostItem_type; }
Ifc4x3_rc1::IfcCostItem::IfcCostItem(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCostItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcCostItemTypeEnum::Value > v7_PredefinedType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcCostValue >::ptr > v8_CostValues, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr > v9_CostQuantities) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostItem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcCostItemTypeEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_CostValues) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_CostValues)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CostQuantities) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_CostQuantities)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCostSchedule
boost::optional< ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value > Ifc4x3_rc1::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCostScheduleTypeEnum::ToString(*v)));data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCostSchedule::declaration() const { return *IFC4X3_RC1_IfcCostSchedule_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCostSchedule::Class() { return *IFC4X3_RC1_IfcCostSchedule_type; }
Ifc4x3_rc1::IfcCostSchedule::IfcCostSchedule(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCostSchedule_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcCostScheduleTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_SubmittedOn, boost::optional< std::string > v10_UpdateDate) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostSchedule_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcCostScheduleTypeEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Status));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SubmittedOn) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SubmittedOn));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_UpdateDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_UpdateDate));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcCostValue


const IfcParse::entity& Ifc4x3_rc1::IfcCostValue::declaration() const { return *IFC4X3_RC1_IfcCostValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCostValue::Class() { return *IFC4X3_RC1_IfcCostValue_type; }
Ifc4x3_rc1::IfcCostValue::IfcCostValue(IfcEntityInstanceData* e) : IfcAppliedValue((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCostValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_Components) : IfcAppliedValue((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCostValue_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_AppliedValue));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_UnitBasis));data_->setArgument(3,attr);} if (v5_ApplicableDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableDate));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_FixedUntilDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_FixedUntilDate));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Category));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Condition) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Condition));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ArithmeticOperator) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_ArithmeticOperator,::Ifc4x3_rc1::IfcArithmeticOperatorEnum::ToString(*v9_ArithmeticOperator))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Components) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Components)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcCourse
boost::optional< ::Ifc4x3_rc1::IfcCourseTypeEnum::Value > Ifc4x3_rc1::IfcCourse::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCourseTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCourseTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCourse::declaration() const { return *IFC4X3_RC1_IfcCourse_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCourse::Class() { return *IFC4X3_RC1_IfcCourse_type; }
Ifc4x3_rc1::IfcCourse::IfcCourse(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCourse_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCourse::IfcCourse(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCourseTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCourse_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCourseTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCourseType
::Ifc4x3_rc1::IfcCourseTypeEnum::Value Ifc4x3_rc1::IfcCourseType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCourseTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCourseType::setPredefinedType(::Ifc4x3_rc1::IfcCourseTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCourseTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCourseType::declaration() const { return *IFC4X3_RC1_IfcCourseType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCourseType::Class() { return *IFC4X3_RC1_IfcCourseType_type; }
Ifc4x3_rc1::IfcCourseType::IfcCourseType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCourseType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCourseTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCourseType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCourseTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCovering
boost::optional< ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value > Ifc4x3_rc1::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCoveringTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelCoversSpaces::list::ptr Ifc4x3_rc1::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversSpaces_type, 5)->as<IfcRelCoversSpaces>(); }
::Ifc4x3_rc1::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc1::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversBldgElements_type, 5)->as<IfcRelCoversBldgElements>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcCovering::declaration() const { return *IFC4X3_RC1_IfcCovering_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCovering::Class() { return *IFC4X3_RC1_IfcCovering_type; }
Ifc4x3_rc1::IfcCovering::IfcCovering(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCovering_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCovering::IfcCovering(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCovering_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCoveringTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCoveringType
::Ifc4x3_rc1::IfcCoveringTypeEnum::Value Ifc4x3_rc1::IfcCoveringType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCoveringTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCoveringType::setPredefinedType(::Ifc4x3_rc1::IfcCoveringTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCoveringTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCoveringType::declaration() const { return *IFC4X3_RC1_IfcCoveringType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCoveringType::Class() { return *IFC4X3_RC1_IfcCoveringType_type; }
Ifc4x3_rc1::IfcCoveringType::IfcCoveringType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCoveringType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCoveringTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCoveringType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCoveringTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCrewResource
boost::optional< ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value > Ifc4x3_rc1::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCrewResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCrewResource::declaration() const { return *IFC4X3_RC1_IfcCrewResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCrewResource::Class() { return *IFC4X3_RC1_IfcCrewResource_type; }
Ifc4x3_rc1::IfcCrewResource::IfcCrewResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCrewResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCrewResource::IfcCrewResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCrewResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcCrewResourceTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcCrewResourceType
::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value Ifc4x3_rc1::IfcCrewResourceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcCrewResourceType::setPredefinedType(::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCrewResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCrewResourceType::declaration() const { return *IFC4X3_RC1_IfcCrewResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCrewResourceType::Class() { return *IFC4X3_RC1_IfcCrewResourceType_type; }
Ifc4x3_rc1::IfcCrewResourceType::IfcCrewResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCrewResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCrewResourceType::IfcCrewResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc1::IfcCrewResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCrewResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcCrewResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcCsgPrimitive3D
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcCsgPrimitive3D::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcCsgPrimitive3D::setPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCsgPrimitive3D::declaration() const { return *IFC4X3_RC1_IfcCsgPrimitive3D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCsgPrimitive3D::Class() { return *IFC4X3_RC1_IfcCsgPrimitive3D_type; }
Ifc4x3_rc1::IfcCsgPrimitive3D::IfcCsgPrimitive3D(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCsgPrimitive3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCsgPrimitive3D::IfcCsgPrimitive3D(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCsgPrimitive3D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcCsgSolid
::Ifc4x3_rc1::IfcCsgSelect* Ifc4x3_rc1::IfcCsgSolid::TreeRootExpression() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCsgSelect>(); }
void Ifc4x3_rc1::IfcCsgSolid::setTreeRootExpression(::Ifc4x3_rc1::IfcCsgSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCsgSolid::declaration() const { return *IFC4X3_RC1_IfcCsgSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCsgSolid::Class() { return *IFC4X3_RC1_IfcCsgSolid_type; }
Ifc4x3_rc1::IfcCsgSolid::IfcCsgSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCsgSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCsgSolid::IfcCsgSolid(::Ifc4x3_rc1::IfcCsgSelect* v1_TreeRootExpression) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCsgSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TreeRootExpression));data_->setArgument(0,attr);} }

// Function implementations for IfcCurrencyRelationship
::Ifc4x3_rc1::IfcMonetaryUnit* Ifc4x3_rc1::IfcCurrencyRelationship::RelatingMonetaryUnit() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcMonetaryUnit>(); }
void Ifc4x3_rc1::IfcCurrencyRelationship::setRelatingMonetaryUnit(::Ifc4x3_rc1::IfcMonetaryUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcMonetaryUnit* Ifc4x3_rc1::IfcCurrencyRelationship::RelatedMonetaryUnit() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMonetaryUnit>(); }
void Ifc4x3_rc1::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_rc1::IfcMonetaryUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcCurrencyRelationship::ExchangeRate() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcLibraryInformation* Ifc4x3_rc1::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcLibraryInformation>(); }
void Ifc4x3_rc1::IfcCurrencyRelationship::setRateSource(::Ifc4x3_rc1::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurrencyRelationship::declaration() const { return *IFC4X3_RC1_IfcCurrencyRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurrencyRelationship::Class() { return *IFC4X3_RC1_IfcCurrencyRelationship_type; }
Ifc4x3_rc1::IfcCurrencyRelationship::IfcCurrencyRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurrencyRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcMonetaryUnit* v3_RelatingMonetaryUnit, ::Ifc4x3_rc1::IfcMonetaryUnit* v4_RelatedMonetaryUnit, double v5_ExchangeRate, boost::optional< std::string > v6_RateDateTime, ::Ifc4x3_rc1::IfcLibraryInformation* v7_RateSource) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurrencyRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingMonetaryUnit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedMonetaryUnit));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ExchangeRate));data_->setArgument(4,attr);} if (v6_RateDateTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_RateDateTime));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RateSource));data_->setArgument(6,attr);} }

// Function implementations for IfcCurtainWall
boost::optional< ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value > Ifc4x3_rc1::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCurtainWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurtainWall::declaration() const { return *IFC4X3_RC1_IfcCurtainWall_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurtainWall::Class() { return *IFC4X3_RC1_IfcCurtainWall_type; }
Ifc4x3_rc1::IfcCurtainWall::IfcCurtainWall(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurtainWall_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurtainWall::IfcCurtainWall(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurtainWall_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcCurtainWallTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcCurtainWallType
::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value Ifc4x3_rc1::IfcCurtainWallType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcCurtainWallType::setPredefinedType(::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcCurtainWallTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurtainWallType::declaration() const { return *IFC4X3_RC1_IfcCurtainWallType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurtainWallType::Class() { return *IFC4X3_RC1_IfcCurtainWallType_type; }
Ifc4x3_rc1::IfcCurtainWallType::IfcCurtainWallType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurtainWallType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurtainWallType::IfcCurtainWallType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcCurtainWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurtainWallType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcCurtainWallTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCurve


const IfcParse::entity& Ifc4x3_rc1::IfcCurve::declaration() const { return *IFC4X3_RC1_IfcCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurve::Class() { return *IFC4X3_RC1_IfcCurve_type; }
Ifc4x3_rc1::IfcCurve::IfcCurve(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurve::IfcCurve() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurve_type);  }

// Function implementations for IfcCurveBoundedPlane
::Ifc4x3_rc1::IfcPlane* Ifc4x3_rc1::IfcCurveBoundedPlane::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcPlane>(); }
void Ifc4x3_rc1::IfcCurveBoundedPlane::setBasisSurface(::Ifc4x3_rc1::IfcPlane* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcCurveBoundedPlane::OuterBoundary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcCurveBoundedPlane::setOuterBoundary(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr Ifc4x3_rc1::IfcCurveBoundedPlane::InnerBoundaries() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcCurve >(); }
void Ifc4x3_rc1::IfcCurveBoundedPlane::setInnerBoundaries(aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveBoundedPlane::declaration() const { return *IFC4X3_RC1_IfcCurveBoundedPlane_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveBoundedPlane::Class() { return *IFC4X3_RC1_IfcCurveBoundedPlane_type; }
Ifc4x3_rc1::IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveBoundedPlane_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveBoundedPlane::IfcCurveBoundedPlane(::Ifc4x3_rc1::IfcPlane* v1_BasisSurface, ::Ifc4x3_rc1::IfcCurve* v2_OuterBoundary, aggregate_of< ::Ifc4x3_rc1::IfcCurve >::ptr v3_InnerBoundaries) : IfcBoundedSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveBoundedPlane_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OuterBoundary));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_InnerBoundaries)->generalize());data_->setArgument(2,attr);} }

// Function implementations for IfcCurveBoundedSurface
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcCurveBoundedSurface::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcCurveBoundedSurface::setBasisSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcBoundaryCurve >::ptr Ifc4x3_rc1::IfcCurveBoundedSurface::Boundaries() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcBoundaryCurve >(); }
void Ifc4x3_rc1::IfcCurveBoundedSurface::setBoundaries(aggregate_of< ::Ifc4x3_rc1::IfcBoundaryCurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
bool Ifc4x3_rc1::IfcCurveBoundedSurface::ImplicitOuter() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcCurveBoundedSurface::setImplicitOuter(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveBoundedSurface::declaration() const { return *IFC4X3_RC1_IfcCurveBoundedSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveBoundedSurface::Class() { return *IFC4X3_RC1_IfcCurveBoundedSurface_type; }
Ifc4x3_rc1::IfcCurveBoundedSurface::IfcCurveBoundedSurface(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveBoundedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveBoundedSurface::IfcCurveBoundedSurface(::Ifc4x3_rc1::IfcSurface* v1_BasisSurface, aggregate_of< ::Ifc4x3_rc1::IfcBoundaryCurve >::ptr v2_Boundaries, bool v3_ImplicitOuter) : IfcBoundedSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveBoundedSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Boundaries)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ImplicitOuter));data_->setArgument(2,attr);} }

// Function implementations for IfcCurveSegment2D
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcCurveSegment2D::StartPoint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcCurveSegment2D::setStartPoint(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcCurveSegment2D::StartDirection() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCurveSegment2D::setStartDirection(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcCurveSegment2D::SegmentLength() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcCurveSegment2D::setSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveSegment2D::declaration() const { return *IFC4X3_RC1_IfcCurveSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveSegment2D::Class() { return *IFC4X3_RC1_IfcCurveSegment2D_type; }
Ifc4x3_rc1::IfcCurveSegment2D::IfcCurveSegment2D(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveSegment2D::IfcCurveSegment2D(::Ifc4x3_rc1::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveSegment2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_StartPoint));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartDirection));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SegmentLength));data_->setArgument(2,attr);} }

// Function implementations for IfcCurveStyle
::Ifc4x3_rc1::IfcCurveFontOrScaledCurveFontSelect* Ifc4x3_rc1::IfcCurveStyle::CurveFont() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurveFontOrScaledCurveFontSelect>(); }
void Ifc4x3_rc1::IfcCurveStyle::setCurveFont(::Ifc4x3_rc1::IfcCurveFontOrScaledCurveFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcCurveStyle::CurveWidth() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcSizeSelect>(); }
void Ifc4x3_rc1::IfcCurveStyle::setCurveWidth(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcColour* Ifc4x3_rc1::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcColour>(); }
void Ifc4x3_rc1::IfcCurveStyle::setCurveColour(::Ifc4x3_rc1::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyle::declaration() const { return *IFC4X3_RC1_IfcCurveStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyle::Class() { return *IFC4X3_RC1_IfcCurveStyle_type; }
Ifc4x3_rc1::IfcCurveStyle::IfcCurveStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, ::Ifc4x3_rc1::IfcSizeSelect* v3_CurveWidth, ::Ifc4x3_rc1::IfcColour* v4_CurveColour, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveStyle_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CurveFont));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CurveWidth));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_CurveColour));data_->setArgument(3,attr);} if (v5_ModelOrDraughting) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ModelOrDraughting));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcCurveStyleFont
boost::optional< std::string > Ifc4x3_rc1::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >::ptr Ifc4x3_rc1::IfcCurveStyleFont::PatternList() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >(); }
void Ifc4x3_rc1::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyleFont::declaration() const { return *IFC4X3_RC1_IfcCurveStyleFont_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyleFont::Class() { return *IFC4X3_RC1_IfcCurveStyleFont_type; }
Ifc4x3_rc1::IfcCurveStyleFont::IfcCurveStyleFont(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveStyleFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_rc1::IfcCurveStyleFontPattern >::ptr v2_PatternList) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveStyleFont_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PatternList)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcCurveStyleFontAndScaling
boost::optional< std::string > Ifc4x3_rc1::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCurveStyleFontSelect* Ifc4x3_rc1::IfcCurveStyleFontAndScaling::CurveFont() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurveStyleFontSelect>(); }
void Ifc4x3_rc1::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x3_rc1::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcCurveStyleFontAndScaling::CurveFontScaling() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcCurveStyleFontAndScaling::setCurveFontScaling(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyleFontAndScaling::declaration() const { return *IFC4X3_RC1_IfcCurveStyleFontAndScaling_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyleFontAndScaling::Class() { return *IFC4X3_RC1_IfcCurveStyleFontAndScaling_type; }
Ifc4x3_rc1::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveStyleFontAndScaling_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcCurveStyleFontSelect* v2_CurveFont, double v3_CurveFontScaling) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveStyleFontAndScaling_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CurveFont));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CurveFontScaling));data_->setArgument(2,attr);} }

// Function implementations for IfcCurveStyleFontPattern
double Ifc4x3_rc1::IfcCurveStyleFontPattern::VisibleSegmentLength() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcCurveStyleFontPattern::setVisibleSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcCurveStyleFontPattern::InvisibleSegmentLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCurveStyleFontPattern::setInvisibleSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyleFontPattern::declaration() const { return *IFC4X3_RC1_IfcCurveStyleFontPattern_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCurveStyleFontPattern::Class() { return *IFC4X3_RC1_IfcCurveStyleFontPattern_type; }
Ifc4x3_rc1::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCurveStyleFontPattern_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCurveStyleFontPattern_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_VisibleSegmentLength));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_InvisibleSegmentLength));data_->setArgument(1,attr);} }

// Function implementations for IfcCylindricalSurface
double Ifc4x3_rc1::IfcCylindricalSurface::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcCylindricalSurface::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcCylindricalSurface::declaration() const { return *IFC4X3_RC1_IfcCylindricalSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcCylindricalSurface::Class() { return *IFC4X3_RC1_IfcCylindricalSurface_type; }
Ifc4x3_rc1::IfcCylindricalSurface::IfcCylindricalSurface(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcCylindricalSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcCylindricalSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Radius));data_->setArgument(1,attr);} }

// Function implementations for IfcDamper
boost::optional< ::Ifc4x3_rc1::IfcDamperTypeEnum::Value > Ifc4x3_rc1::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDamper::declaration() const { return *IFC4X3_RC1_IfcDamper_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDamper::Class() { return *IFC4X3_RC1_IfcDamper_type; }
Ifc4x3_rc1::IfcDamper::IfcDamper(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDamper_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDamper::IfcDamper(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDamperTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDamper_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDamperTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDamperType
::Ifc4x3_rc1::IfcDamperTypeEnum::Value Ifc4x3_rc1::IfcDamperType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDamperTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDamperType::setPredefinedType(::Ifc4x3_rc1::IfcDamperTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDamperTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDamperType::declaration() const { return *IFC4X3_RC1_IfcDamperType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDamperType::Class() { return *IFC4X3_RC1_IfcDamperType_type; }
Ifc4x3_rc1::IfcDamperType::IfcDamperType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDamperType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDamperType::IfcDamperType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDamperTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDamperType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDamperTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDeepFoundation


const IfcParse::entity& Ifc4x3_rc1::IfcDeepFoundation::declaration() const { return *IFC4X3_RC1_IfcDeepFoundation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDeepFoundation::Class() { return *IFC4X3_RC1_IfcDeepFoundation_type; }
Ifc4x3_rc1::IfcDeepFoundation::IfcDeepFoundation(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDeepFoundation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDeepFoundation::IfcDeepFoundation(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDeepFoundation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcDeepFoundationType


const IfcParse::entity& Ifc4x3_rc1::IfcDeepFoundationType::declaration() const { return *IFC4X3_RC1_IfcDeepFoundationType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDeepFoundationType::Class() { return *IFC4X3_RC1_IfcDeepFoundationType_type; }
Ifc4x3_rc1::IfcDeepFoundationType::IfcDeepFoundationType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDeepFoundationType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDeepFoundationType::IfcDeepFoundationType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDeepFoundationType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDerivedProfileDef
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcDerivedProfileDef::ParentProfile() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* Ifc4x3_rc1::IfcDerivedProfileDef::Operator() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCartesianTransformationOperator2D>(); }
void Ifc4x3_rc1::IfcDerivedProfileDef::setOperator(::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDerivedProfileDef::declaration() const { return *IFC4X3_RC1_IfcDerivedProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDerivedProfileDef::Class() { return *IFC4X3_RC1_IfcDerivedProfileDef_type; }
Ifc4x3_rc1::IfcDerivedProfileDef::IfcDerivedProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDerivedProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDerivedProfileDef::IfcDerivedProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcProfileDef* v3_ParentProfile, ::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ParentProfile));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Operator));data_->setArgument(3,attr);} if (v5_Label) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Label));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcDerivedUnit
aggregate_of< ::Ifc4x3_rc1::IfcDerivedUnitElement >::ptr Ifc4x3_rc1::IfcDerivedUnit::Elements() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcDerivedUnitElement >(); }
void Ifc4x3_rc1::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_rc1::IfcDerivedUnitElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcDerivedUnitEnum::Value Ifc4x3_rc1::IfcDerivedUnit::UnitType() const {  return ::Ifc4x3_rc1::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc1::IfcDerivedUnit::setUnitType(::Ifc4x3_rc1::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDerivedUnit::declaration() const { return *IFC4X3_RC1_IfcDerivedUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDerivedUnit::Class() { return *IFC4X3_RC1_IfcDerivedUnit_type; }
Ifc4x3_rc1::IfcDerivedUnit::IfcDerivedUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDerivedUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDerivedUnit::IfcDerivedUnit(aggregate_of< ::Ifc4x3_rc1::IfcDerivedUnitElement >::ptr v1_Elements, ::Ifc4x3_rc1::IfcDerivedUnitEnum::Value v2_UnitType, boost::optional< std::string > v3_UserDefinedType) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Elements)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_UnitType,::Ifc4x3_rc1::IfcDerivedUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);} if (v3_UserDefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcDerivedUnitElement
::Ifc4x3_rc1::IfcNamedUnit* Ifc4x3_rc1::IfcDerivedUnitElement::Unit() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcNamedUnit>(); }
void Ifc4x3_rc1::IfcDerivedUnitElement::setUnit(::Ifc4x3_rc1::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
int Ifc4x3_rc1::IfcDerivedUnitElement::Exponent() const {  int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcDerivedUnitElement::setExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDerivedUnitElement::declaration() const { return *IFC4X3_RC1_IfcDerivedUnitElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDerivedUnitElement::Class() { return *IFC4X3_RC1_IfcDerivedUnitElement_type; }
Ifc4x3_rc1::IfcDerivedUnitElement::IfcDerivedUnitElement(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDerivedUnitElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDerivedUnitElement::IfcDerivedUnitElement(::Ifc4x3_rc1::IfcNamedUnit* v1_Unit, int v2_Exponent) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDerivedUnitElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Unit));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Exponent));data_->setArgument(1,attr);} }

// Function implementations for IfcDimensionalExponents
int Ifc4x3_rc1::IfcDimensionalExponents::LengthExponent() const {  int v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setLengthExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
int Ifc4x3_rc1::IfcDimensionalExponents::MassExponent() const {  int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setMassExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
int Ifc4x3_rc1::IfcDimensionalExponents::TimeExponent() const {  int v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setTimeExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
int Ifc4x3_rc1::IfcDimensionalExponents::ElectricCurrentExponent() const {  int v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setElectricCurrentExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
int Ifc4x3_rc1::IfcDimensionalExponents::ThermodynamicTemperatureExponent() const {  int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setThermodynamicTemperatureExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
int Ifc4x3_rc1::IfcDimensionalExponents::AmountOfSubstanceExponent() const {  int v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setAmountOfSubstanceExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
int Ifc4x3_rc1::IfcDimensionalExponents::LuminousIntensityExponent() const {  int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcDimensionalExponents::setLuminousIntensityExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDimensionalExponents::declaration() const { return *IFC4X3_RC1_IfcDimensionalExponents_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDimensionalExponents::Class() { return *IFC4X3_RC1_IfcDimensionalExponents_type; }
Ifc4x3_rc1::IfcDimensionalExponents::IfcDimensionalExponents(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDimensionalExponents_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDimensionalExponents_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_LengthExponent));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_MassExponent));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TimeExponent));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ElectricCurrentExponent));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ThermodynamicTemperatureExponent));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_AmountOfSubstanceExponent));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_LuminousIntensityExponent));data_->setArgument(6,attr);} }

// Function implementations for IfcDirection
std::vector< double > /*[2:3]*/ Ifc4x3_rc1::IfcDirection::DirectionRatios() const {  std::vector< double > /*[2:3]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcDirection::setDirectionRatios(std::vector< double > /*[2:3]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDirection::declaration() const { return *IFC4X3_RC1_IfcDirection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDirection::Class() { return *IFC4X3_RC1_IfcDirection_type; }
Ifc4x3_rc1::IfcDirection::IfcDirection(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDirection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionRatios) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_DirectionRatios));data_->setArgument(0,attr);} }

// Function implementations for IfcDirectrixCurveSweptAreaSolid
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcDirectrixCurveSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::Class() { return *IFC4X3_RC1_IfcDirectrixCurveSweptAreaSolid_type; }
Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDirectrixCurveSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirectrixCurveSweptAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Directrix));data_->setArgument(2,attr);} if (v4_StartParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_StartParam));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EndParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EndParam));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcDirectrixDistanceSweptAreaSolid
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcDistanceExpression* Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::StartDistance() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcDistanceExpression>(); }
void Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::setStartDistance(::Ifc4x3_rc1::IfcDistanceExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcDistanceExpression* Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::EndDistance() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcDistanceExpression>(); }
void Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::setEndDistance(::Ifc4x3_rc1::IfcDistanceExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcDirectrixDistanceSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::Class() { return *IFC4X3_RC1_IfcDirectrixDistanceSweptAreaSolid_type; }
Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDirectrixDistanceSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcCurve* v3_Directrix, ::Ifc4x3_rc1::IfcDistanceExpression* v4_StartDistance, ::Ifc4x3_rc1::IfcDistanceExpression* v5_EndDistance) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDirectrixDistanceSweptAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Directrix));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistance));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndDistance));data_->setArgument(4,attr);} }

// Function implementations for IfcDiscreteAccessory
boost::optional< ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_rc1::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDiscreteAccessory::declaration() const { return *IFC4X3_RC1_IfcDiscreteAccessory_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDiscreteAccessory::Class() { return *IFC4X3_RC1_IfcDiscreteAccessory_type; }
Ifc4x3_rc1::IfcDiscreteAccessory::IfcDiscreteAccessory(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDiscreteAccessory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDiscreteAccessory::IfcDiscreteAccessory(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDiscreteAccessory_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDiscreteAccessoryType
::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value Ifc4x3_rc1::IfcDiscreteAccessoryType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDiscreteAccessoryType::setPredefinedType(::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDiscreteAccessoryType::declaration() const { return *IFC4X3_RC1_IfcDiscreteAccessoryType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDiscreteAccessoryType::Class() { return *IFC4X3_RC1_IfcDiscreteAccessoryType_type; }
Ifc4x3_rc1::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDiscreteAccessoryType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDiscreteAccessoryType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDiscreteAccessoryTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDistanceExpression
double Ifc4x3_rc1::IfcDistanceExpression::DistanceAlong() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcDistanceExpression::setDistanceAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcDistanceExpression::AlongHorizontal() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDistanceExpression::setAlongHorizontal(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistanceExpression::declaration() const { return *IFC4X3_RC1_IfcDistanceExpression_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistanceExpression::Class() { return *IFC4X3_RC1_IfcDistanceExpression_type; }
Ifc4x3_rc1::IfcDistanceExpression::IfcDistanceExpression(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistanceExpression_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistanceExpression::IfcDistanceExpression(double v1_DistanceAlong, boost::optional< double > v2_OffsetLateral, boost::optional< double > v3_OffsetVertical, boost::optional< double > v4_OffsetLongitudinal, boost::optional< bool > v5_AlongHorizontal) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistanceExpression_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_DistanceAlong));data_->setArgument(0,attr);} if (v2_OffsetLateral) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_OffsetLateral));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_OffsetVertical) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_OffsetVertical));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_OffsetLongitudinal) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_OffsetLongitudinal));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_AlongHorizontal) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_AlongHorizontal));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcDistributionBoard
boost::optional< ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value > Ifc4x3_rc1::IfcDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionBoard::declaration() const { return *IFC4X3_RC1_IfcDistributionBoard_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionBoard::Class() { return *IFC4X3_RC1_IfcDistributionBoard_type; }
Ifc4x3_rc1::IfcDistributionBoard::IfcDistributionBoard(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionBoard_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionBoard::IfcDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionBoard_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDistributionBoardType
::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value Ifc4x3_rc1::IfcDistributionBoardType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDistributionBoardType::setPredefinedType(::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionBoardType::declaration() const { return *IFC4X3_RC1_IfcDistributionBoardType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionBoardType::Class() { return *IFC4X3_RC1_IfcDistributionBoardType_type; }
Ifc4x3_rc1::IfcDistributionBoardType::IfcDistributionBoardType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionBoardType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionBoardType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDistributionBoardTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDistributionChamberElement
boost::optional< ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_rc1::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionChamberElement::declaration() const { return *IFC4X3_RC1_IfcDistributionChamberElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionChamberElement::Class() { return *IFC4X3_RC1_IfcDistributionChamberElement_type; }
Ifc4x3_rc1::IfcDistributionChamberElement::IfcDistributionChamberElement(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionChamberElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionChamberElement::IfcDistributionChamberElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionChamberElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDistributionChamberElementType
::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value Ifc4x3_rc1::IfcDistributionChamberElementType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDistributionChamberElementType::setPredefinedType(::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionChamberElementType::declaration() const { return *IFC4X3_RC1_IfcDistributionChamberElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionChamberElementType::Class() { return *IFC4X3_RC1_IfcDistributionChamberElementType_type; }
Ifc4x3_rc1::IfcDistributionChamberElementType::IfcDistributionChamberElementType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionChamberElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionChamberElementType::IfcDistributionChamberElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionChamberElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDistributionChamberElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDistributionCircuit


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionCircuit::declaration() const { return *IFC4X3_RC1_IfcDistributionCircuit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionCircuit::Class() { return *IFC4X3_RC1_IfcDistributionCircuit_type; }
Ifc4x3_rc1::IfcDistributionCircuit::IfcDistributionCircuit(IfcEntityInstanceData* e) : IfcDistributionSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionCircuit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionCircuit::IfcDistributionCircuit(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcDistributionSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionCircuit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LongName));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcDistributionControlElement

::Ifc4x3_rc1::IfcRelFlowControlElements::list::ptr Ifc4x3_rc1::IfcDistributionControlElement::AssignedToFlowElement() const { return data_->getInverse(IFC4X3_RC1_IfcRelFlowControlElements_type, 4)->as<IfcRelFlowControlElements>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcDistributionControlElement::declaration() const { return *IFC4X3_RC1_IfcDistributionControlElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionControlElement::Class() { return *IFC4X3_RC1_IfcDistributionControlElement_type; }
Ifc4x3_rc1::IfcDistributionControlElement::IfcDistributionControlElement(IfcEntityInstanceData* e) : IfcDistributionElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionControlElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionControlElement::IfcDistributionControlElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionControlElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcDistributionControlElementType


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionControlElementType::declaration() const { return *IFC4X3_RC1_IfcDistributionControlElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionControlElementType::Class() { return *IFC4X3_RC1_IfcDistributionControlElementType_type; }
Ifc4x3_rc1::IfcDistributionControlElementType::IfcDistributionControlElementType(IfcEntityInstanceData* e) : IfcDistributionElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionControlElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionControlElementType::IfcDistributionControlElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionControlElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDistributionElement

::Ifc4x3_rc1::IfcRelConnectsPortToElement::list::ptr Ifc4x3_rc1::IfcDistributionElement::HasPorts() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsPortToElement_type, 5)->as<IfcRelConnectsPortToElement>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcDistributionElement::declaration() const { return *IFC4X3_RC1_IfcDistributionElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionElement::Class() { return *IFC4X3_RC1_IfcDistributionElement_type; }
Ifc4x3_rc1::IfcDistributionElement::IfcDistributionElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionElement::IfcDistributionElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcDistributionElementType


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionElementType::declaration() const { return *IFC4X3_RC1_IfcDistributionElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionElementType::Class() { return *IFC4X3_RC1_IfcDistributionElementType_type; }
Ifc4x3_rc1::IfcDistributionElementType::IfcDistributionElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionElementType::IfcDistributionElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDistributionFlowElement

::Ifc4x3_rc1::IfcRelFlowControlElements::list::ptr Ifc4x3_rc1::IfcDistributionFlowElement::HasControlElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelFlowControlElements_type, 5)->as<IfcRelFlowControlElements>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcDistributionFlowElement::declaration() const { return *IFC4X3_RC1_IfcDistributionFlowElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionFlowElement::Class() { return *IFC4X3_RC1_IfcDistributionFlowElement_type; }
Ifc4x3_rc1::IfcDistributionFlowElement::IfcDistributionFlowElement(IfcEntityInstanceData* e) : IfcDistributionElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionFlowElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionFlowElement::IfcDistributionFlowElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionFlowElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcDistributionFlowElementType


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionFlowElementType::declaration() const { return *IFC4X3_RC1_IfcDistributionFlowElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionFlowElementType::Class() { return *IFC4X3_RC1_IfcDistributionFlowElementType_type; }
Ifc4x3_rc1::IfcDistributionFlowElementType::IfcDistributionFlowElementType(IfcEntityInstanceData* e) : IfcDistributionElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionFlowElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionFlowElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDistributionPort
boost::optional< ::Ifc4x3_rc1::IfcFlowDirectionEnum::Value > Ifc4x3_rc1::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc1::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowDirectionEnum::ToString(*v)));data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value > Ifc4x3_rc1::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionPortTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > Ifc4x3_rc1::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionPort::declaration() const { return *IFC4X3_RC1_IfcDistributionPort_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionPort::Class() { return *IFC4X3_RC1_IfcDistributionPort_type; }
Ifc4x3_rc1::IfcDistributionPort::IfcDistributionPort(IfcEntityInstanceData* e) : IfcPort((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionPort_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_rc1::IfcFlowDirectionEnum::Value > v8_FlowDirection, boost::optional< ::Ifc4x3_rc1::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v10_SystemType) : IfcPort((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionPort_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_FlowDirection) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_FlowDirection,::Ifc4x3_rc1::IfcFlowDirectionEnum::ToString(*v8_FlowDirection))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDistributionPortTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_SystemType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_SystemType,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v10_SystemType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcDistributionSystem
boost::optional< std::string > Ifc4x3_rc1::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > Ifc4x3_rc1::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v)));data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDistributionSystem::declaration() const { return *IFC4X3_RC1_IfcDistributionSystem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDistributionSystem::Class() { return *IFC4X3_RC1_IfcDistributionSystem_type; }
Ifc4x3_rc1::IfcDistributionSystem::IfcDistributionSystem(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDistributionSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDistributionSystem::IfcDistributionSystem(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDistributionSystem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LongName));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcDistributionSystemEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcDocumentInformation
std::string Ifc4x3_rc1::IfcDocumentInformation::Identification() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setIdentification(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc1::IfcDocumentInformation::Name() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setEditors(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value > Ifc4x3_rc1::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); }
void Ifc4x3_rc1::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::ToString(*v)));data_->setArgument(15,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDocumentStatusEnum::Value > Ifc4x3_rc1::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); }
void Ifc4x3_rc1::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc1::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDocumentStatusEnum::ToString(*v)));data_->setArgument(16,attr);} }

::Ifc4x3_rc1::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc1::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesDocument_type, 5)->as<IfcRelAssociatesDocument>(); }
::Ifc4x3_rc1::IfcDocumentReference::list::ptr Ifc4x3_rc1::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X3_RC1_IfcDocumentReference_type, 4)->as<IfcDocumentReference>(); }
::Ifc4x3_rc1::IfcDocumentInformationRelationship::list::ptr Ifc4x3_rc1::IfcDocumentInformation::IsPointedTo() const { return data_->getInverse(IFC4X3_RC1_IfcDocumentInformationRelationship_type, 3)->as<IfcDocumentInformationRelationship>(); }
::Ifc4x3_rc1::IfcDocumentInformationRelationship::list::ptr Ifc4x3_rc1::IfcDocumentInformation::IsPointer() const { return data_->getInverse(IFC4X3_RC1_IfcDocumentInformationRelationship_type, 2)->as<IfcDocumentInformationRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcDocumentInformation::declaration() const { return *IFC4X3_RC1_IfcDocumentInformation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDocumentInformation::Class() { return *IFC4X3_RC1_IfcDocumentInformation_type; }
Ifc4x3_rc1::IfcDocumentInformation::IfcDocumentInformation(IfcEntityInstanceData* e) : IfcExternalInformation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDocumentInformation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcActorSelect* v9_DocumentOwner, boost::optional< aggregate_of_instance::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< ::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, boost::optional< ::Ifc4x3_rc1::IfcDocumentStatusEnum::Value > v17_Status) : IfcExternalInformation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentInformation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Identification));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Name));data_->setArgument(1,attr);} if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Location));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Purpose));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_IntendedUse) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_IntendedUse));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Scope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Scope));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Revision) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Revision));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_DocumentOwner));data_->setArgument(8,attr);} if (v10_Editors) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Editors));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_CreationTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_CreationTime));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_LastRevisionTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_LastRevisionTime));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_ElectronicFormat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_ElectronicFormat));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_ValidFrom) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_ValidFrom));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_ValidUntil) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_ValidUntil));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_Confidentiality) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v16_Confidentiality,::Ifc4x3_rc1::IfcDocumentConfidentialityEnum::ToString(*v16_Confidentiality))));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v17_Status,::Ifc4x3_rc1::IfcDocumentStatusEnum::ToString(*v17_Status))));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } }

// Function implementations for IfcDocumentInformationRelationship
::Ifc4x3_rc1::IfcDocumentInformation* Ifc4x3_rc1::IfcDocumentInformationRelationship::RelatingDocument() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcDocumentInformation>(); }
void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x3_rc1::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcDocumentInformation >::ptr Ifc4x3_rc1::IfcDocumentInformationRelationship::RelatedDocuments() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcDocumentInformation >(); }
void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_rc1::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDocumentInformationRelationship::declaration() const { return *IFC4X3_RC1_IfcDocumentInformationRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDocumentInformationRelationship::Class() { return *IFC4X3_RC1_IfcDocumentInformationRelationship_type; }
Ifc4x3_rc1::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDocumentInformationRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcDocumentInformation* v3_RelatingDocument, aggregate_of< ::Ifc4x3_rc1::IfcDocumentInformation >::ptr v4_RelatedDocuments, boost::optional< std::string > v5_RelationshipType) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentInformationRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingDocument));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedDocuments)->generalize());data_->setArgument(3,attr);} if (v5_RelationshipType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_RelationshipType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcDocumentReference
boost::optional< std::string > Ifc4x3_rc1::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcDocumentInformation* Ifc4x3_rc1::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcDocumentInformation>(); }
void Ifc4x3_rc1::IfcDocumentReference::setReferencedDocument(::Ifc4x3_rc1::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }

::Ifc4x3_rc1::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc1::IfcDocumentReference::DocumentRefForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesDocument_type, 5)->as<IfcRelAssociatesDocument>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcDocumentReference::declaration() const { return *IFC4X3_RC1_IfcDocumentReference_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDocumentReference::Class() { return *IFC4X3_RC1_IfcDocumentReference_type; }
Ifc4x3_rc1::IfcDocumentReference::IfcDocumentReference(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDocumentReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcDocumentInformation* v5_ReferencedDocument) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDocumentReference_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ReferencedDocument));data_->setArgument(4,attr);} }

// Function implementations for IfcDoor
boost::optional< double > Ifc4x3_rc1::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > Ifc4x3_rc1::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > Ifc4x3_rc1::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(*v)));data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDoor::declaration() const { return *IFC4X3_RC1_IfcDoor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDoor::Class() { return *IFC4X3_RC1_IfcDoor_type; }
Ifc4x3_rc1::IfcDoor::IfcDoor(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDoor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_OverallHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_OverallHeight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_OverallWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_OverallWidth));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_OperationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v12_OperationType,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(*v12_OperationType))));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_UserDefinedOperationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_UserDefinedOperationType));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcDoorLiningProperties
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x3_rc1::IfcShapeAspect>(); }
void Ifc4x3_rc1::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc1::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDoorLiningProperties::declaration() const { return *IFC4X3_RC1_IfcDoorLiningProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDoorLiningProperties::Class() { return *IFC4X3_RC1_IfcDoorLiningProperties_type; }
Ifc4x3_rc1::IfcDoorLiningProperties::IfcDoorLiningProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDoorLiningProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcShapeAspect* v15_ShapeAspectStyle, boost::optional< double > v16_LiningToPanelOffsetX, boost::optional< double > v17_LiningToPanelOffsetY) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorLiningProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_LiningDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_LiningDepth));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LiningThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LiningThickness));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ThresholdDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ThresholdDepth));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_ThresholdThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_ThresholdThickness));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_TransomThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_TransomThickness));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_TransomOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_TransomOffset));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_LiningOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_LiningOffset));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_ThresholdOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_ThresholdOffset));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_CasingThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_CasingThickness));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_CasingDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_CasingDepth));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v15_ShapeAspectStyle));data_->setArgument(14,attr);} if (v16_LiningToPanelOffsetX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_LiningToPanelOffsetX));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_LiningToPanelOffsetY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_LiningToPanelOffsetY));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } }

// Function implementations for IfcDoorPanelProperties
boost::optional< double > Ifc4x3_rc1::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcDoorPanelOperationEnum::Value Ifc4x3_rc1::IfcDoorPanelProperties::PanelOperation() const {  return ::Ifc4x3_rc1::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_rc1::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcDoorPanelPositionEnum::Value Ifc4x3_rc1::IfcDoorPanelProperties::PanelPosition() const {  return ::Ifc4x3_rc1::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_rc1::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcShapeAspect>(); }
void Ifc4x3_rc1::IfcDoorPanelProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDoorPanelProperties::declaration() const { return *IFC4X3_RC1_IfcDoorPanelProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDoorPanelProperties::Class() { return *IFC4X3_RC1_IfcDoorPanelProperties_type; }
Ifc4x3_rc1::IfcDoorPanelProperties::IfcDoorPanelProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDoorPanelProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDoorPanelProperties::IfcDoorPanelProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, ::Ifc4x3_rc1::IfcDoorPanelOperationEnum::Value v6_PanelOperation, boost::optional< double > v7_PanelWidth, ::Ifc4x3_rc1::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4x3_rc1::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorPanelProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_PanelDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_PanelDepth));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PanelOperation,::Ifc4x3_rc1::IfcDoorPanelOperationEnum::ToString(v6_PanelOperation))));data_->setArgument(5,attr);} if (v7_PanelWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_PanelWidth));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PanelPosition,::Ifc4x3_rc1::IfcDoorPanelPositionEnum::ToString(v8_PanelPosition))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_ShapeAspectStyle));data_->setArgument(8,attr);} }

// Function implementations for IfcDoorStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcDoorStandardCase::declaration() const { return *IFC4X3_RC1_IfcDoorStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDoorStandardCase::Class() { return *IFC4X3_RC1_IfcDoorStandardCase_type; }
Ifc4x3_rc1::IfcDoorStandardCase::IfcDoorStandardCase(IfcEntityInstanceData* e) : IfcDoor((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDoorStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDoorStandardCase::IfcDoorStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc1::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcDoor((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_OverallHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_OverallHeight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_OverallWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_OverallWidth));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_OperationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v12_OperationType,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(*v12_OperationType))));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_UserDefinedOperationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_UserDefinedOperationType));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcDoorStyle
::Ifc4x3_rc1::IfcDoorStyleOperationEnum::Value Ifc4x3_rc1::IfcDoorStyle::OperationType() const {  return ::Ifc4x3_rc1::IfcDoorStyleOperationEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDoorStyle::setOperationType(::Ifc4x3_rc1::IfcDoorStyleOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorStyleOperationEnum::ToString(v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcDoorStyleConstructionEnum::Value Ifc4x3_rc1::IfcDoorStyle::ConstructionType() const {  return ::Ifc4x3_rc1::IfcDoorStyleConstructionEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDoorStyle::setConstructionType(::Ifc4x3_rc1::IfcDoorStyleConstructionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorStyleConstructionEnum::ToString(v)));data_->setArgument(9,attr);} }
bool Ifc4x3_rc1::IfcDoorStyle::ParameterTakesPrecedence() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcDoorStyle::setParameterTakesPrecedence(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
bool Ifc4x3_rc1::IfcDoorStyle::Sizeable() const {  bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcDoorStyle::setSizeable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDoorStyle::declaration() const { return *IFC4X3_RC1_IfcDoorStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDoorStyle::Class() { return *IFC4X3_RC1_IfcDoorStyle_type; }
Ifc4x3_rc1::IfcDoorStyle::IfcDoorStyle(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDoorStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDoorStyle::IfcDoorStyle(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc1::IfcDoorStyleOperationEnum::Value v9_OperationType, ::Ifc4x3_rc1::IfcDoorStyleConstructionEnum::Value v10_ConstructionType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorStyle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_OperationType,::Ifc4x3_rc1::IfcDoorStyleOperationEnum::ToString(v9_OperationType))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_ConstructionType,::Ifc4x3_rc1::IfcDoorStyleConstructionEnum::ToString(v10_ConstructionType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_ParameterTakesPrecedence));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_Sizeable));data_->setArgument(11,attr);} }

// Function implementations for IfcDoorType
::Ifc4x3_rc1::IfcDoorTypeEnum::Value Ifc4x3_rc1::IfcDoorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDoorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDoorType::setPredefinedType(::Ifc4x3_rc1::IfcDoorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value Ifc4x3_rc1::IfcDoorType::OperationType() const {  return ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcDoorType::setOperationType(::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDoorType::declaration() const { return *IFC4X3_RC1_IfcDoorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDoorType::Class() { return *IFC4X3_RC1_IfcDoorType_type; }
Ifc4x3_rc1::IfcDoorType::IfcDoorType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDoorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDoorType::IfcDoorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4x3_rc1::IfcDoorTypeOperationEnum::Value v11_OperationType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDoorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDoorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_OperationType,::Ifc4x3_rc1::IfcDoorTypeOperationEnum::ToString(v11_OperationType))));data_->setArgument(10,attr);} if (v12_ParameterTakesPrecedence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_ParameterTakesPrecedence));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_UserDefinedOperationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_UserDefinedOperationType));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcDraughtingPreDefinedColour


const IfcParse::entity& Ifc4x3_rc1::IfcDraughtingPreDefinedColour::declaration() const { return *IFC4X3_RC1_IfcDraughtingPreDefinedColour_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDraughtingPreDefinedColour::Class() { return *IFC4X3_RC1_IfcDraughtingPreDefinedColour_type; }
Ifc4x3_rc1::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(IfcEntityInstanceData* e) : IfcPreDefinedColour((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDraughtingPreDefinedColour_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(std::string v1_Name) : IfcPreDefinedColour((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDraughtingPreDefinedColour_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcDraughtingPreDefinedCurveFont


const IfcParse::entity& Ifc4x3_rc1::IfcDraughtingPreDefinedCurveFont::declaration() const { return *IFC4X3_RC1_IfcDraughtingPreDefinedCurveFont_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDraughtingPreDefinedCurveFont::Class() { return *IFC4X3_RC1_IfcDraughtingPreDefinedCurveFont_type; }
Ifc4x3_rc1::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(IfcEntityInstanceData* e) : IfcPreDefinedCurveFont((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDraughtingPreDefinedCurveFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedCurveFont((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDraughtingPreDefinedCurveFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcDuctFitting
boost::optional< ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value > Ifc4x3_rc1::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDuctFitting::declaration() const { return *IFC4X3_RC1_IfcDuctFitting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDuctFitting::Class() { return *IFC4X3_RC1_IfcDuctFitting_type; }
Ifc4x3_rc1::IfcDuctFitting::IfcDuctFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDuctFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDuctFitting::IfcDuctFitting(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctFitting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDuctFittingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDuctFittingType
::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value Ifc4x3_rc1::IfcDuctFittingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDuctFittingType::setPredefinedType(::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDuctFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDuctFittingType::declaration() const { return *IFC4X3_RC1_IfcDuctFittingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDuctFittingType::Class() { return *IFC4X3_RC1_IfcDuctFittingType_type; }
Ifc4x3_rc1::IfcDuctFittingType::IfcDuctFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDuctFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDuctFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctFittingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDuctFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDuctSegment
boost::optional< ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value > Ifc4x3_rc1::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDuctSegment::declaration() const { return *IFC4X3_RC1_IfcDuctSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDuctSegment::Class() { return *IFC4X3_RC1_IfcDuctSegment_type; }
Ifc4x3_rc1::IfcDuctSegment::IfcDuctSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDuctSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDuctSegment::IfcDuctSegment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDuctSegmentType
::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value Ifc4x3_rc1::IfcDuctSegmentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDuctSegmentType::setPredefinedType(::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDuctSegmentType::declaration() const { return *IFC4X3_RC1_IfcDuctSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDuctSegmentType::Class() { return *IFC4X3_RC1_IfcDuctSegmentType_type; }
Ifc4x3_rc1::IfcDuctSegmentType::IfcDuctSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDuctSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSegmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDuctSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDuctSilencer
boost::optional< ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value > Ifc4x3_rc1::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDuctSilencer::declaration() const { return *IFC4X3_RC1_IfcDuctSilencer_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDuctSilencer::Class() { return *IFC4X3_RC1_IfcDuctSilencer_type; }
Ifc4x3_rc1::IfcDuctSilencer::IfcDuctSilencer(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDuctSilencer_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDuctSilencer::IfcDuctSilencer(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSilencer_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcDuctSilencerType
::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value Ifc4x3_rc1::IfcDuctSilencerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcDuctSilencerType::setPredefinedType(::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcDuctSilencerType::declaration() const { return *IFC4X3_RC1_IfcDuctSilencerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcDuctSilencerType::Class() { return *IFC4X3_RC1_IfcDuctSilencerType_type; }
Ifc4x3_rc1::IfcDuctSilencerType::IfcDuctSilencerType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcDuctSilencerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcDuctSilencerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcDuctSilencerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEarthworksCut
boost::optional< ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value > Ifc4x3_rc1::IfcEarthworksCut::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksCut::declaration() const { return *IFC4X3_RC1_IfcEarthworksCut_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksCut::Class() { return *IFC4X3_RC1_IfcEarthworksCut_type; }
Ifc4x3_rc1::IfcEarthworksCut::IfcEarthworksCut(IfcEntityInstanceData* e) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEarthworksCut_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEarthworksCut::IfcEarthworksCut(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksCut_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcEarthworksCutTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcEarthworksElement


const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksElement::declaration() const { return *IFC4X3_RC1_IfcEarthworksElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksElement::Class() { return *IFC4X3_RC1_IfcEarthworksElement_type; }
Ifc4x3_rc1::IfcEarthworksElement::IfcEarthworksElement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEarthworksElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcEarthworksFill
boost::optional< ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value > Ifc4x3_rc1::IfcEarthworksFill::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksFill::declaration() const { return *IFC4X3_RC1_IfcEarthworksFill_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEarthworksFill::Class() { return *IFC4X3_RC1_IfcEarthworksFill_type; }
Ifc4x3_rc1::IfcEarthworksFill::IfcEarthworksFill(IfcEntityInstanceData* e) : IfcEarthworksElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEarthworksFill_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEarthworksFill::IfcEarthworksFill(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEarthworksFill_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcEarthworksFillTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcEdge
::Ifc4x3_rc1::IfcVertex* Ifc4x3_rc1::IfcEdge::EdgeStart() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcVertex>(); }
void Ifc4x3_rc1::IfcEdge::setEdgeStart(::Ifc4x3_rc1::IfcVertex* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcVertex* Ifc4x3_rc1::IfcEdge::EdgeEnd() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcVertex>(); }
void Ifc4x3_rc1::IfcEdge::setEdgeEnd(::Ifc4x3_rc1::IfcVertex* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEdge::declaration() const { return *IFC4X3_RC1_IfcEdge_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEdge::Class() { return *IFC4X3_RC1_IfcEdge_type; }
Ifc4x3_rc1::IfcEdge::IfcEdge(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEdge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEdge::IfcEdge(::Ifc4x3_rc1::IfcVertex* v1_EdgeStart, ::Ifc4x3_rc1::IfcVertex* v2_EdgeEnd) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEdge_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_EdgeStart));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_EdgeEnd));data_->setArgument(1,attr);} }

// Function implementations for IfcEdgeCurve
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcEdgeCurve::EdgeGeometry() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcEdgeCurve::setEdgeGeometry(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
bool Ifc4x3_rc1::IfcEdgeCurve::SameSense() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcEdgeCurve::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEdgeCurve::declaration() const { return *IFC4X3_RC1_IfcEdgeCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEdgeCurve::Class() { return *IFC4X3_RC1_IfcEdgeCurve_type; }
Ifc4x3_rc1::IfcEdgeCurve::IfcEdgeCurve(IfcEntityInstanceData* e) : IfcEdge((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEdgeCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEdgeCurve::IfcEdgeCurve(::Ifc4x3_rc1::IfcVertex* v1_EdgeStart, ::Ifc4x3_rc1::IfcVertex* v2_EdgeEnd, ::Ifc4x3_rc1::IfcCurve* v3_EdgeGeometry, bool v4_SameSense) : IfcEdge((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEdgeCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_EdgeStart));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_EdgeEnd));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_EdgeGeometry));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_SameSense));data_->setArgument(3,attr);} }

// Function implementations for IfcEdgeLoop
aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr Ifc4x3_rc1::IfcEdgeLoop::EdgeList() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcOrientedEdge >(); }
void Ifc4x3_rc1::IfcEdgeLoop::setEdgeList(aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEdgeLoop::declaration() const { return *IFC4X3_RC1_IfcEdgeLoop_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEdgeLoop::Class() { return *IFC4X3_RC1_IfcEdgeLoop_type; }
Ifc4x3_rc1::IfcEdgeLoop::IfcEdgeLoop(IfcEntityInstanceData* e) : IfcLoop((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEdgeLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr v1_EdgeList) : IfcLoop((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEdgeLoop_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_EdgeList)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcElectricAppliance
boost::optional< ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value > Ifc4x3_rc1::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricAppliance::declaration() const { return *IFC4X3_RC1_IfcElectricAppliance_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricAppliance::Class() { return *IFC4X3_RC1_IfcElectricAppliance_type; }
Ifc4x3_rc1::IfcElectricAppliance::IfcElectricAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricAppliance::IfcElectricAppliance(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricAppliance_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricApplianceType
::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value Ifc4x3_rc1::IfcElectricApplianceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricApplianceType::setPredefinedType(::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricApplianceType::declaration() const { return *IFC4X3_RC1_IfcElectricApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricApplianceType::Class() { return *IFC4X3_RC1_IfcElectricApplianceType_type; }
Ifc4x3_rc1::IfcElectricApplianceType::IfcElectricApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricApplianceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricDistributionBoard
boost::optional< ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_rc1::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricDistributionBoard::declaration() const { return *IFC4X3_RC1_IfcElectricDistributionBoard_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricDistributionBoard::Class() { return *IFC4X3_RC1_IfcElectricDistributionBoard_type; }
Ifc4x3_rc1::IfcElectricDistributionBoard::IfcElectricDistributionBoard(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricDistributionBoard_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricDistributionBoard::IfcElectricDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricDistributionBoard_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricDistributionBoardType
::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value Ifc4x3_rc1::IfcElectricDistributionBoardType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricDistributionBoardType::setPredefinedType(::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricDistributionBoardType::declaration() const { return *IFC4X3_RC1_IfcElectricDistributionBoardType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricDistributionBoardType::Class() { return *IFC4X3_RC1_IfcElectricDistributionBoardType_type; }
Ifc4x3_rc1::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricDistributionBoardType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricDistributionBoardType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricDistributionBoardTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricFlowStorageDevice
boost::optional< ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_rc1::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X3_RC1_IfcElectricFlowStorageDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowStorageDevice::Class() { return *IFC4X3_RC1_IfcElectricFlowStorageDevice_type; }
Ifc4x3_rc1::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(IfcEntityInstanceData* e) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricFlowStorageDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowStorageDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricFlowStorageDeviceType
::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::declaration() const { return *IFC4X3_RC1_IfcElectricFlowStorageDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::Class() { return *IFC4X3_RC1_IfcElectricFlowStorageDeviceType_type; }
Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(IfcEntityInstanceData* e) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricFlowStorageDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowStorageDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricFlowStorageDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricFlowTreatmentDevice
boost::optional< ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::declaration() const { return *IFC4X3_RC1_IfcElectricFlowTreatmentDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::Class() { return *IFC4X3_RC1_IfcElectricFlowTreatmentDevice_type; }
Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricFlowTreatmentDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowTreatmentDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricFlowTreatmentDeviceType
::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::declaration() const { return *IFC4X3_RC1_IfcElectricFlowTreatmentDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::Class() { return *IFC4X3_RC1_IfcElectricFlowTreatmentDeviceType_type; }
Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricFlowTreatmentDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricFlowTreatmentDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricGenerator
boost::optional< ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_rc1::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricGenerator::declaration() const { return *IFC4X3_RC1_IfcElectricGenerator_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricGenerator::Class() { return *IFC4X3_RC1_IfcElectricGenerator_type; }
Ifc4x3_rc1::IfcElectricGenerator::IfcElectricGenerator(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricGenerator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricGenerator::IfcElectricGenerator(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricGenerator_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricGeneratorType
::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value Ifc4x3_rc1::IfcElectricGeneratorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricGeneratorType::setPredefinedType(::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricGeneratorType::declaration() const { return *IFC4X3_RC1_IfcElectricGeneratorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricGeneratorType::Class() { return *IFC4X3_RC1_IfcElectricGeneratorType_type; }
Ifc4x3_rc1::IfcElectricGeneratorType::IfcElectricGeneratorType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricGeneratorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricGeneratorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricGeneratorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricMotor
boost::optional< ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value > Ifc4x3_rc1::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricMotorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricMotor::declaration() const { return *IFC4X3_RC1_IfcElectricMotor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricMotor::Class() { return *IFC4X3_RC1_IfcElectricMotor_type; }
Ifc4x3_rc1::IfcElectricMotor::IfcElectricMotor(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricMotor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricMotor::IfcElectricMotor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricMotor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricMotorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricMotorType
::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value Ifc4x3_rc1::IfcElectricMotorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricMotorType::setPredefinedType(::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricMotorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricMotorType::declaration() const { return *IFC4X3_RC1_IfcElectricMotorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricMotorType::Class() { return *IFC4X3_RC1_IfcElectricMotorType_type; }
Ifc4x3_rc1::IfcElectricMotorType::IfcElectricMotorType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricMotorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricMotorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricMotorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricMotorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricTimeControl
boost::optional< ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_rc1::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricTimeControl::declaration() const { return *IFC4X3_RC1_IfcElectricTimeControl_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricTimeControl::Class() { return *IFC4X3_RC1_IfcElectricTimeControl_type; }
Ifc4x3_rc1::IfcElectricTimeControl::IfcElectricTimeControl(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricTimeControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricTimeControl::IfcElectricTimeControl(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricTimeControl_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElectricTimeControlType
::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value Ifc4x3_rc1::IfcElectricTimeControlType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElectricTimeControlType::setPredefinedType(::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElectricTimeControlType::declaration() const { return *IFC4X3_RC1_IfcElectricTimeControlType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElectricTimeControlType::Class() { return *IFC4X3_RC1_IfcElectricTimeControlType_type; }
Ifc4x3_rc1::IfcElectricTimeControlType::IfcElectricTimeControlType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElectricTimeControlType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElectricTimeControlType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElectricTimeControlTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElement
boost::optional< std::string > Ifc4x3_rc1::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }

::Ifc4x3_rc1::IfcRelFillsElement::list::ptr Ifc4x3_rc1::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X3_RC1_IfcRelFillsElement_type, 5)->as<IfcRelFillsElement>(); }
::Ifc4x3_rc1::IfcRelConnectsElements::list::ptr Ifc4x3_rc1::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsElements_type, 5)->as<IfcRelConnectsElements>(); }
::Ifc4x3_rc1::IfcRelInterferesElements::list::ptr Ifc4x3_rc1::IfcElement::IsInterferedByElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelInterferesElements_type, 5)->as<IfcRelInterferesElements>(); }
::Ifc4x3_rc1::IfcRelInterferesElements::list::ptr Ifc4x3_rc1::IfcElement::InterferesElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelInterferesElements_type, 4)->as<IfcRelInterferesElements>(); }
::Ifc4x3_rc1::IfcRelProjectsElement::list::ptr Ifc4x3_rc1::IfcElement::HasProjections() const { return data_->getInverse(IFC4X3_RC1_IfcRelProjectsElement_type, 4)->as<IfcRelProjectsElement>(); }
::Ifc4x3_rc1::IfcRelVoidsElement::list::ptr Ifc4x3_rc1::IfcElement::HasOpenings() const { return data_->getInverse(IFC4X3_RC1_IfcRelVoidsElement_type, 4)->as<IfcRelVoidsElement>(); }
::Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::list::ptr Ifc4x3_rc1::IfcElement::IsConnectionRealization() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type, 7)->as<IfcRelConnectsWithRealizingElements>(); }
::Ifc4x3_rc1::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc1::IfcElement::ProvidesBoundaries() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary_type, 5)->as<IfcRelSpaceBoundary>(); }
::Ifc4x3_rc1::IfcRelConnectsElements::list::ptr Ifc4x3_rc1::IfcElement::ConnectedFrom() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsElements_type, 6)->as<IfcRelConnectsElements>(); }
::Ifc4x3_rc1::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcElement::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC1_IfcRelContainedInSpatialStructure_type, 4)->as<IfcRelContainedInSpatialStructure>(); }
::Ifc4x3_rc1::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc1::IfcElement::HasCoverings() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversBldgElements_type, 4)->as<IfcRelCoversBldgElements>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcElement::declaration() const { return *IFC4X3_RC1_IfcElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElement::Class() { return *IFC4X3_RC1_IfcElement_type; }
Ifc4x3_rc1::IfcElement::IfcElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcElementAssembly
boost::optional< ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value > Ifc4x3_rc1::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(*v)));data_->setArgument(8,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value > Ifc4x3_rc1::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElementAssembly::declaration() const { return *IFC4X3_RC1_IfcElementAssembly_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementAssembly::Class() { return *IFC4X3_RC1_IfcElementAssembly_type; }
Ifc4x3_rc1::IfcElementAssembly::IfcElementAssembly(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementAssembly_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementAssembly::IfcElementAssembly(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, boost::optional< ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementAssembly_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_AssemblyPlace) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_AssemblyPlace,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(*v9_AssemblyPlace))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcElementAssemblyType
::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value Ifc4x3_rc1::IfcElementAssemblyType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcElementAssemblyType::setPredefinedType(::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElementAssemblyType::declaration() const { return *IFC4X3_RC1_IfcElementAssemblyType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementAssemblyType::Class() { return *IFC4X3_RC1_IfcElementAssemblyType_type; }
Ifc4x3_rc1::IfcElementAssemblyType::IfcElementAssemblyType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementAssemblyType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementAssemblyType::IfcElementAssemblyType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::Value v10_PredefinedType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementAssemblyType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcElementAssemblyTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElementComponent


const IfcParse::entity& Ifc4x3_rc1::IfcElementComponent::declaration() const { return *IFC4X3_RC1_IfcElementComponent_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementComponent::Class() { return *IFC4X3_RC1_IfcElementComponent_type; }
Ifc4x3_rc1::IfcElementComponent::IfcElementComponent(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementComponent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementComponent::IfcElementComponent(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementComponent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcElementComponentType


const IfcParse::entity& Ifc4x3_rc1::IfcElementComponentType::declaration() const { return *IFC4X3_RC1_IfcElementComponentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementComponentType::Class() { return *IFC4X3_RC1_IfcElementComponentType_type; }
Ifc4x3_rc1::IfcElementComponentType::IfcElementComponentType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementComponentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementComponentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElementQuantity
boost::optional< std::string > Ifc4x3_rc1::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr Ifc4x3_rc1::IfcElementQuantity::Quantities() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcPhysicalQuantity >(); }
void Ifc4x3_rc1::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElementQuantity::declaration() const { return *IFC4X3_RC1_IfcElementQuantity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementQuantity::Class() { return *IFC4X3_RC1_IfcElementQuantity_type; }
Ifc4x3_rc1::IfcElementQuantity::IfcElementQuantity(IfcEntityInstanceData* e) : IfcQuantitySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr v6_Quantities) : IfcQuantitySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementQuantity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_MethodOfMeasurement) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_MethodOfMeasurement));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Quantities)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcElementType
boost::optional< std::string > Ifc4x3_rc1::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElementType::declaration() const { return *IFC4X3_RC1_IfcElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementType::Class() { return *IFC4X3_RC1_IfcElementType_type; }
Ifc4x3_rc1::IfcElementType::IfcElementType(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementType::IfcElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcElementarySurface
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcElementarySurface::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcElementarySurface::setPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcElementarySurface::declaration() const { return *IFC4X3_RC1_IfcElementarySurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcElementarySurface::Class() { return *IFC4X3_RC1_IfcElementarySurface_type; }
Ifc4x3_rc1::IfcElementarySurface::IfcElementarySurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcElementarySurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcElementarySurface::IfcElementarySurface(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position) : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcElementarySurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcEllipse
double Ifc4x3_rc1::IfcEllipse::SemiAxis1() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcEllipse::setSemiAxis1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcEllipse::SemiAxis2() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcEllipse::setSemiAxis2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEllipse::declaration() const { return *IFC4X3_RC1_IfcEllipse_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEllipse::Class() { return *IFC4X3_RC1_IfcEllipse_type; }
Ifc4x3_rc1::IfcEllipse::IfcEllipse(IfcEntityInstanceData* e) : IfcConic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEllipse_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEllipse::IfcEllipse(::Ifc4x3_rc1::IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2) : IfcConic((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEllipse_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SemiAxis1));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SemiAxis2));data_->setArgument(2,attr);} }

// Function implementations for IfcEllipseProfileDef
double Ifc4x3_rc1::IfcEllipseProfileDef::SemiAxis1() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcEllipseProfileDef::setSemiAxis1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcEllipseProfileDef::SemiAxis2() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcEllipseProfileDef::setSemiAxis2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEllipseProfileDef::declaration() const { return *IFC4X3_RC1_IfcEllipseProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEllipseProfileDef::Class() { return *IFC4X3_RC1_IfcEllipseProfileDef_type; }
Ifc4x3_rc1::IfcEllipseProfileDef::IfcEllipseProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEllipseProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEllipseProfileDef::IfcEllipseProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEllipseProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_SemiAxis1));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_SemiAxis2));data_->setArgument(4,attr);} }

// Function implementations for IfcEnergyConversionDevice


const IfcParse::entity& Ifc4x3_rc1::IfcEnergyConversionDevice::declaration() const { return *IFC4X3_RC1_IfcEnergyConversionDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEnergyConversionDevice::Class() { return *IFC4X3_RC1_IfcEnergyConversionDevice_type; }
Ifc4x3_rc1::IfcEnergyConversionDevice::IfcEnergyConversionDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEnergyConversionDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEnergyConversionDevice::IfcEnergyConversionDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEnergyConversionDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcEnergyConversionDeviceType


const IfcParse::entity& Ifc4x3_rc1::IfcEnergyConversionDeviceType::declaration() const { return *IFC4X3_RC1_IfcEnergyConversionDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEnergyConversionDeviceType::Class() { return *IFC4X3_RC1_IfcEnergyConversionDeviceType_type; }
Ifc4x3_rc1::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEnergyConversionDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEnergyConversionDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcEngine
boost::optional< ::Ifc4x3_rc1::IfcEngineTypeEnum::Value > Ifc4x3_rc1::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEngineTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEngine::declaration() const { return *IFC4X3_RC1_IfcEngine_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEngine::Class() { return *IFC4X3_RC1_IfcEngine_type; }
Ifc4x3_rc1::IfcEngine::IfcEngine(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEngine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEngine::IfcEngine(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcEngineTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEngine_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcEngineTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcEngineType
::Ifc4x3_rc1::IfcEngineTypeEnum::Value Ifc4x3_rc1::IfcEngineType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcEngineTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcEngineType::setPredefinedType(::Ifc4x3_rc1::IfcEngineTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcEngineTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEngineType::declaration() const { return *IFC4X3_RC1_IfcEngineType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEngineType::Class() { return *IFC4X3_RC1_IfcEngineType_type; }
Ifc4x3_rc1::IfcEngineType::IfcEngineType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEngineType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcEngineTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEngineType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcEngineTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEvaporativeCooler
boost::optional< ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_rc1::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEvaporativeCooler::declaration() const { return *IFC4X3_RC1_IfcEvaporativeCooler_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEvaporativeCooler::Class() { return *IFC4X3_RC1_IfcEvaporativeCooler_type; }
Ifc4x3_rc1::IfcEvaporativeCooler::IfcEvaporativeCooler(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEvaporativeCooler_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEvaporativeCooler::IfcEvaporativeCooler(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporativeCooler_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcEvaporativeCoolerType
::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value Ifc4x3_rc1::IfcEvaporativeCoolerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcEvaporativeCoolerType::setPredefinedType(::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEvaporativeCoolerType::declaration() const { return *IFC4X3_RC1_IfcEvaporativeCoolerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEvaporativeCoolerType::Class() { return *IFC4X3_RC1_IfcEvaporativeCoolerType_type; }
Ifc4x3_rc1::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEvaporativeCoolerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporativeCoolerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcEvaporativeCoolerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEvaporator
boost::optional< ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value > Ifc4x3_rc1::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEvaporatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEvaporator::declaration() const { return *IFC4X3_RC1_IfcEvaporator_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEvaporator::Class() { return *IFC4X3_RC1_IfcEvaporator_type; }
Ifc4x3_rc1::IfcEvaporator::IfcEvaporator(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEvaporator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEvaporator::IfcEvaporator(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporator_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcEvaporatorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcEvaporatorType
::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value Ifc4x3_rc1::IfcEvaporatorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcEvaporatorType::setPredefinedType(::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcEvaporatorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEvaporatorType::declaration() const { return *IFC4X3_RC1_IfcEvaporatorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEvaporatorType::Class() { return *IFC4X3_RC1_IfcEvaporatorType_type; }
Ifc4x3_rc1::IfcEvaporatorType::IfcEvaporatorType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEvaporatorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcEvaporatorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvaporatorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcEvaporatorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEvent
boost::optional< ::Ifc4x3_rc1::IfcEventTypeEnum::Value > Ifc4x3_rc1::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEventTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEventTypeEnum::ToString(*v)));data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value > Ifc4x3_rc1::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcEventTime* Ifc4x3_rc1::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcEventTime>(); }
void Ifc4x3_rc1::IfcEvent::setEventOccurenceTime(::Ifc4x3_rc1::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEvent::declaration() const { return *IFC4X3_RC1_IfcEvent_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEvent::Class() { return *IFC4X3_RC1_IfcEvent_type; }
Ifc4x3_rc1::IfcEvent::IfcEvent(IfcEntityInstanceData* e) : IfcProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEvent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcEventTypeEnum::Value > v8_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, boost::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4x3_rc1::IfcEventTime* v11_EventOccurenceTime) : IfcProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEvent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_PredefinedType,::Ifc4x3_rc1::IfcEventTypeEnum::ToString(*v8_PredefinedType))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_EventTriggerType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_EventTriggerType,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(*v9_EventTriggerType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_UserDefinedEventTriggerType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_UserDefinedEventTriggerType));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_EventOccurenceTime));data_->setArgument(10,attr);} }

// Function implementations for IfcEventTime
boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEventTime::declaration() const { return *IFC4X3_RC1_IfcEventTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEventTime::Class() { return *IFC4X3_RC1_IfcEventTime_type; }
Ifc4x3_rc1::IfcEventTime::IfcEventTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEventTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEventTime::IfcEventTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ActualDate, boost::optional< std::string > v5_EarlyDate, boost::optional< std::string > v6_LateDate, boost::optional< std::string > v7_ScheduleDate) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventTime_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ActualDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ActualDate));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EarlyDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EarlyDate));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LateDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LateDate));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ScheduleDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ScheduleDate));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcEventType
::Ifc4x3_rc1::IfcEventTypeEnum::Value Ifc4x3_rc1::IfcEventType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcEventTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcEventType::setPredefinedType(::Ifc4x3_rc1::IfcEventTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcEventTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value Ifc4x3_rc1::IfcEventType::EventTriggerType() const {  return ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcEventType::setEventTriggerType(::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcEventType::declaration() const { return *IFC4X3_RC1_IfcEventType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcEventType::Class() { return *IFC4X3_RC1_IfcEventType_type; }
Ifc4x3_rc1::IfcEventType::IfcEventType(IfcEntityInstanceData* e) : IfcTypeProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcEventType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_rc1::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4x3_rc1::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, boost::optional< std::string > v12_UserDefinedEventTriggerType) : IfcTypeProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcEventType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ProcessType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ProcessType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcEventTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_EventTriggerType,::Ifc4x3_rc1::IfcEventTriggerTypeEnum::ToString(v11_EventTriggerType))));data_->setArgument(10,attr);} if (v12_UserDefinedEventTriggerType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_UserDefinedEventTriggerType));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } }

// Function implementations for IfcExtendedProperties
boost::optional< std::string > Ifc4x3_rc1::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr Ifc4x3_rc1::IfcExtendedProperties::Properties() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcProperty >(); }
void Ifc4x3_rc1::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcExtendedProperties::declaration() const { return *IFC4X3_RC1_IfcExtendedProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExtendedProperties::Class() { return *IFC4X3_RC1_IfcExtendedProperties_type; }
Ifc4x3_rc1::IfcExtendedProperties::IfcExtendedProperties(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExtendedProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExtendedProperties::IfcExtendedProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v3_Properties) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExtendedProperties_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Properties)->generalize());data_->setArgument(2,attr);} }

// Function implementations for IfcExternalInformation


const IfcParse::entity& Ifc4x3_rc1::IfcExternalInformation::declaration() const { return *IFC4X3_RC1_IfcExternalInformation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternalInformation::Class() { return *IFC4X3_RC1_IfcExternalInformation_type; }
Ifc4x3_rc1::IfcExternalInformation::IfcExternalInformation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternalInformation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalInformation_type);  }

// Function implementations for IfcExternalReference
boost::optional< std::string > Ifc4x3_rc1::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }

::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 2)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcExternalReference::declaration() const { return *IFC4X3_RC1_IfcExternalReference_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternalReference::Class() { return *IFC4X3_RC1_IfcExternalReference_type; }
Ifc4x3_rc1::IfcExternalReference::IfcExternalReference(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternalReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternalReference::IfcExternalReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalReference_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcExternalReferenceRelationship
::Ifc4x3_rc1::IfcExternalReference* Ifc4x3_rc1::IfcExternalReferenceRelationship::RelatingReference() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcExternalReference>(); }
void Ifc4x3_rc1::IfcExternalReferenceRelationship::setRelatingReference(::Ifc4x3_rc1::IfcExternalReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcExternalReferenceRelationship::RelatedResourceObjects() const {  aggregate_of_instance::ptr v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcExternalReferenceRelationship::setRelatedResourceObjects(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcExternalReferenceRelationship::declaration() const { return *IFC4X3_RC1_IfcExternalReferenceRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternalReferenceRelationship::Class() { return *IFC4X3_RC1_IfcExternalReferenceRelationship_type; }
Ifc4x3_rc1::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternalReferenceRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcExternalReference* v3_RelatingReference, aggregate_of_instance::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalReferenceRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingReference));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedResourceObjects));data_->setArgument(3,attr);} }

// Function implementations for IfcExternalSpatialElement
boost::optional< ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_rc1::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc1::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary_type, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcExternalSpatialElement::declaration() const { return *IFC4X3_RC1_IfcExternalSpatialElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternalSpatialElement::Class() { return *IFC4X3_RC1_IfcExternalSpatialElement_type; }
Ifc4x3_rc1::IfcExternalSpatialElement::IfcExternalSpatialElement(IfcEntityInstanceData* e) : IfcExternalSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternalSpatialElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternalSpatialElement::IfcExternalSpatialElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType) : IfcExternalSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalSpatialElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcExternalSpatialElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcExternalSpatialStructureElement


const IfcParse::entity& Ifc4x3_rc1::IfcExternalSpatialStructureElement::declaration() const { return *IFC4X3_RC1_IfcExternalSpatialStructureElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternalSpatialStructureElement::Class() { return *IFC4X3_RC1_IfcExternalSpatialStructureElement_type; }
Ifc4x3_rc1::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(IfcEntityInstanceData* e) : IfcSpatialElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternalSpatialStructureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcSpatialElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternalSpatialStructureElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcExternallyDefinedHatchStyle


const IfcParse::entity& Ifc4x3_rc1::IfcExternallyDefinedHatchStyle::declaration() const { return *IFC4X3_RC1_IfcExternallyDefinedHatchStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternallyDefinedHatchStyle::Class() { return *IFC4X3_RC1_IfcExternallyDefinedHatchStyle_type; }
Ifc4x3_rc1::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternallyDefinedHatchStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternallyDefinedHatchStyle_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcExternallyDefinedSurfaceStyle


const IfcParse::entity& Ifc4x3_rc1::IfcExternallyDefinedSurfaceStyle::declaration() const { return *IFC4X3_RC1_IfcExternallyDefinedSurfaceStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternallyDefinedSurfaceStyle::Class() { return *IFC4X3_RC1_IfcExternallyDefinedSurfaceStyle_type; }
Ifc4x3_rc1::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternallyDefinedSurfaceStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternallyDefinedSurfaceStyle_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcExternallyDefinedTextFont


const IfcParse::entity& Ifc4x3_rc1::IfcExternallyDefinedTextFont::declaration() const { return *IFC4X3_RC1_IfcExternallyDefinedTextFont_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExternallyDefinedTextFont::Class() { return *IFC4X3_RC1_IfcExternallyDefinedTextFont_type; }
Ifc4x3_rc1::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExternallyDefinedTextFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExternallyDefinedTextFont_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcExtrudedAreaSolid
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcExtrudedAreaSolid::ExtrudedDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcExtrudedAreaSolid::setExtrudedDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcExtrudedAreaSolid::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcExtrudedAreaSolid::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcExtrudedAreaSolid::declaration() const { return *IFC4X3_RC1_IfcExtrudedAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExtrudedAreaSolid::Class() { return *IFC4X3_RC1_IfcExtrudedAreaSolid_type; }
Ifc4x3_rc1::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExtrudedAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExtrudedAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ExtrudedDirection));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);} }

// Function implementations for IfcExtrudedAreaSolidTapered
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcExtrudedAreaSolidTapered::EndSweptArea() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcExtrudedAreaSolidTapered::setEndSweptArea(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcExtrudedAreaSolidTapered::declaration() const { return *IFC4X3_RC1_IfcExtrudedAreaSolidTapered_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcExtrudedAreaSolidTapered::Class() { return *IFC4X3_RC1_IfcExtrudedAreaSolidTapered_type; }
Ifc4x3_rc1::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(IfcEntityInstanceData* e) : IfcExtrudedAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcExtrudedAreaSolidTapered_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcDirection* v3_ExtrudedDirection, double v4_Depth, ::Ifc4x3_rc1::IfcProfileDef* v5_EndSweptArea) : IfcExtrudedAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcExtrudedAreaSolidTapered_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ExtrudedDirection));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndSweptArea));data_->setArgument(4,attr);} }

// Function implementations for IfcFace
aggregate_of< ::Ifc4x3_rc1::IfcFaceBound >::ptr Ifc4x3_rc1::IfcFace::Bounds() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcFaceBound >(); }
void Ifc4x3_rc1::IfcFace::setBounds(aggregate_of< ::Ifc4x3_rc1::IfcFaceBound >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }

::Ifc4x3_rc1::IfcTextureMap::list::ptr Ifc4x3_rc1::IfcFace::HasTextureMaps() const { return data_->getInverse(IFC4X3_RC1_IfcTextureMap_type, 2)->as<IfcTextureMap>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcFace::declaration() const { return *IFC4X3_RC1_IfcFace_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFace::Class() { return *IFC4X3_RC1_IfcFace_type; }
Ifc4x3_rc1::IfcFace::IfcFace(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFace::IfcFace(aggregate_of< ::Ifc4x3_rc1::IfcFaceBound >::ptr v1_Bounds) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Bounds)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcFaceBasedSurfaceModel
aggregate_of< ::Ifc4x3_rc1::IfcConnectedFaceSet >::ptr Ifc4x3_rc1::IfcFaceBasedSurfaceModel::FbsmFaces() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcConnectedFaceSet >(); }
void Ifc4x3_rc1::IfcFaceBasedSurfaceModel::setFbsmFaces(aggregate_of< ::Ifc4x3_rc1::IfcConnectedFaceSet >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFaceBasedSurfaceModel::declaration() const { return *IFC4X3_RC1_IfcFaceBasedSurfaceModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFaceBasedSurfaceModel::Class() { return *IFC4X3_RC1_IfcFaceBasedSurfaceModel_type; }
Ifc4x3_rc1::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFaceBasedSurfaceModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(aggregate_of< ::Ifc4x3_rc1::IfcConnectedFaceSet >::ptr v1_FbsmFaces) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFaceBasedSurfaceModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_FbsmFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcFaceBound
::Ifc4x3_rc1::IfcLoop* Ifc4x3_rc1::IfcFaceBound::Bound() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcLoop>(); }
void Ifc4x3_rc1::IfcFaceBound::setBound(::Ifc4x3_rc1::IfcLoop* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
bool Ifc4x3_rc1::IfcFaceBound::Orientation() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcFaceBound::setOrientation(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFaceBound::declaration() const { return *IFC4X3_RC1_IfcFaceBound_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFaceBound::Class() { return *IFC4X3_RC1_IfcFaceBound_type; }
Ifc4x3_rc1::IfcFaceBound::IfcFaceBound(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFaceBound_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFaceBound::IfcFaceBound(::Ifc4x3_rc1::IfcLoop* v1_Bound, bool v2_Orientation) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFaceBound_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Bound));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Orientation));data_->setArgument(1,attr);} }

// Function implementations for IfcFaceOuterBound


const IfcParse::entity& Ifc4x3_rc1::IfcFaceOuterBound::declaration() const { return *IFC4X3_RC1_IfcFaceOuterBound_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFaceOuterBound::Class() { return *IFC4X3_RC1_IfcFaceOuterBound_type; }
Ifc4x3_rc1::IfcFaceOuterBound::IfcFaceOuterBound(IfcEntityInstanceData* e) : IfcFaceBound((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFaceOuterBound_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFaceOuterBound::IfcFaceOuterBound(::Ifc4x3_rc1::IfcLoop* v1_Bound, bool v2_Orientation) : IfcFaceBound((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFaceOuterBound_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Bound));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Orientation));data_->setArgument(1,attr);} }

// Function implementations for IfcFaceSurface
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcFaceSurface::FaceSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcFaceSurface::setFaceSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
bool Ifc4x3_rc1::IfcFaceSurface::SameSense() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcFaceSurface::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFaceSurface::declaration() const { return *IFC4X3_RC1_IfcFaceSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFaceSurface::Class() { return *IFC4X3_RC1_IfcFaceSurface_type; }
Ifc4x3_rc1::IfcFaceSurface::IfcFaceSurface(IfcEntityInstanceData* e) : IfcFace((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFaceSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFaceSurface::IfcFaceSurface(aggregate_of< ::Ifc4x3_rc1::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_rc1::IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFace((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFaceSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Bounds)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_FaceSurface));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SameSense));data_->setArgument(2,attr);} }

// Function implementations for IfcFacetedBrep


const IfcParse::entity& Ifc4x3_rc1::IfcFacetedBrep::declaration() const { return *IFC4X3_RC1_IfcFacetedBrep_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFacetedBrep::Class() { return *IFC4X3_RC1_IfcFacetedBrep_type; }
Ifc4x3_rc1::IfcFacetedBrep::IfcFacetedBrep(IfcEntityInstanceData* e) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFacetedBrep_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFacetedBrep::IfcFacetedBrep(::Ifc4x3_rc1::IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacetedBrep_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);} }

// Function implementations for IfcFacetedBrepWithVoids
aggregate_of< ::Ifc4x3_rc1::IfcClosedShell >::ptr Ifc4x3_rc1::IfcFacetedBrepWithVoids::Voids() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcClosedShell >(); }
void Ifc4x3_rc1::IfcFacetedBrepWithVoids::setVoids(aggregate_of< ::Ifc4x3_rc1::IfcClosedShell >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFacetedBrepWithVoids::declaration() const { return *IFC4X3_RC1_IfcFacetedBrepWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFacetedBrepWithVoids::Class() { return *IFC4X3_RC1_IfcFacetedBrepWithVoids_type; }
Ifc4x3_rc1::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(IfcEntityInstanceData* e) : IfcFacetedBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFacetedBrepWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc4x3_rc1::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_rc1::IfcClosedShell >::ptr v2_Voids) : IfcFacetedBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacetedBrepWithVoids_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Voids)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcFacility


const IfcParse::entity& Ifc4x3_rc1::IfcFacility::declaration() const { return *IFC4X3_RC1_IfcFacility_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFacility::Class() { return *IFC4X3_RC1_IfcFacility_type; }
Ifc4x3_rc1::IfcFacility::IfcFacility(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFacility_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFacility::IfcFacility(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacility_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFacilityPart
::Ifc4x3_rc1::IfcFacilityPartTypeSelect* Ifc4x3_rc1::IfcFacilityPart::PredefinedType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcFacilityPartTypeSelect>(); }
void Ifc4x3_rc1::IfcFacilityPart::setPredefinedType(::Ifc4x3_rc1::IfcFacilityPartTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcFacilityUsageEnum::Value Ifc4x3_rc1::IfcFacilityPart::UsageType() const {  return ::Ifc4x3_rc1::IfcFacilityUsageEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcFacilityPart::setUsageType(::Ifc4x3_rc1::IfcFacilityUsageEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFacilityUsageEnum::ToString(v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFacilityPart::declaration() const { return *IFC4X3_RC1_IfcFacilityPart_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFacilityPart::Class() { return *IFC4X3_RC1_IfcFacilityPart_type; }
Ifc4x3_rc1::IfcFacilityPart::IfcFacilityPart(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFacilityPart_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_rc1::IfcFacilityPartTypeSelect* v10_PredefinedType, ::Ifc4x3_rc1::IfcFacilityUsageEnum::Value v11_UsageType) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFacilityPart_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_PredefinedType));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_UsageType,::Ifc4x3_rc1::IfcFacilityUsageEnum::ToString(v11_UsageType))));data_->setArgument(10,attr);} }

// Function implementations for IfcFailureConnectionCondition
boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFailureConnectionCondition::declaration() const { return *IFC4X3_RC1_IfcFailureConnectionCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFailureConnectionCondition::Class() { return *IFC4X3_RC1_IfcFailureConnectionCondition_type; }
Ifc4x3_rc1::IfcFailureConnectionCondition::IfcFailureConnectionCondition(IfcEntityInstanceData* e) : IfcStructuralConnectionCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFailureConnectionCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFailureConnectionCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_TensionFailureX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_TensionFailureX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_TensionFailureY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_TensionFailureY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_TensionFailureZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_TensionFailureZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_CompressionFailureX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_CompressionFailureX));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_CompressionFailureY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_CompressionFailureY));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_CompressionFailureZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_CompressionFailureZ));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcFan
boost::optional< ::Ifc4x3_rc1::IfcFanTypeEnum::Value > Ifc4x3_rc1::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFanTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFanTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFan::declaration() const { return *IFC4X3_RC1_IfcFan_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFan::Class() { return *IFC4X3_RC1_IfcFan_type; }
Ifc4x3_rc1::IfcFan::IfcFan(IfcEntityInstanceData* e) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFan_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFan::IfcFan(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFanTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFan_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFanTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFanType
::Ifc4x3_rc1::IfcFanTypeEnum::Value Ifc4x3_rc1::IfcFanType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFanTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFanType::setPredefinedType(::Ifc4x3_rc1::IfcFanTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFanTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFanType::declaration() const { return *IFC4X3_RC1_IfcFanType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFanType::Class() { return *IFC4X3_RC1_IfcFanType_type; }
Ifc4x3_rc1::IfcFanType::IfcFanType(IfcEntityInstanceData* e) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFanType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFanTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFanType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFanTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFastener
boost::optional< ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value > Ifc4x3_rc1::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFastenerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFastener::declaration() const { return *IFC4X3_RC1_IfcFastener_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFastener::Class() { return *IFC4X3_RC1_IfcFastener_type; }
Ifc4x3_rc1::IfcFastener::IfcFastener(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFastener_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFastener::IfcFastener(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFastener_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFastenerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFastenerType
::Ifc4x3_rc1::IfcFastenerTypeEnum::Value Ifc4x3_rc1::IfcFastenerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFastenerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFastenerType::setPredefinedType(::Ifc4x3_rc1::IfcFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFastenerType::declaration() const { return *IFC4X3_RC1_IfcFastenerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFastenerType::Class() { return *IFC4X3_RC1_IfcFastenerType_type; }
Ifc4x3_rc1::IfcFastenerType::IfcFastenerType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFastenerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFastenerType::IfcFastenerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFastenerTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFastenerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFastenerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFeatureElement


const IfcParse::entity& Ifc4x3_rc1::IfcFeatureElement::declaration() const { return *IFC4X3_RC1_IfcFeatureElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFeatureElement::Class() { return *IFC4X3_RC1_IfcFeatureElement_type; }
Ifc4x3_rc1::IfcFeatureElement::IfcFeatureElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFeatureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFeatureElement::IfcFeatureElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFeatureElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFeatureElementAddition

::Ifc4x3_rc1::IfcRelProjectsElement::list::ptr Ifc4x3_rc1::IfcFeatureElementAddition::ProjectsElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelProjectsElement_type, 5)->as<IfcRelProjectsElement>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcFeatureElementAddition::declaration() const { return *IFC4X3_RC1_IfcFeatureElementAddition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFeatureElementAddition::Class() { return *IFC4X3_RC1_IfcFeatureElementAddition_type; }
Ifc4x3_rc1::IfcFeatureElementAddition::IfcFeatureElementAddition(IfcEntityInstanceData* e) : IfcFeatureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFeatureElementAddition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFeatureElementAddition::IfcFeatureElementAddition(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFeatureElementAddition_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFeatureElementSubtraction

::Ifc4x3_rc1::IfcRelVoidsElement::list::ptr Ifc4x3_rc1::IfcFeatureElementSubtraction::VoidsElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelVoidsElement_type, 5)->as<IfcRelVoidsElement>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcFeatureElementSubtraction::declaration() const { return *IFC4X3_RC1_IfcFeatureElementSubtraction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFeatureElementSubtraction::Class() { return *IFC4X3_RC1_IfcFeatureElementSubtraction_type; }
Ifc4x3_rc1::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(IfcEntityInstanceData* e) : IfcFeatureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFeatureElementSubtraction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFeatureElementSubtraction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFillAreaStyle
aggregate_of_instance::ptr Ifc4x3_rc1::IfcFillAreaStyle::FillStyles() const {  aggregate_of_instance::ptr v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcFillAreaStyle::setFillStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcFillAreaStyle::ModelorDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcFillAreaStyle::setModelorDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyle::declaration() const { return *IFC4X3_RC1_IfcFillAreaStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyle::Class() { return *IFC4X3_RC1_IfcFillAreaStyle_type; }
Ifc4x3_rc1::IfcFillAreaStyle::IfcFillAreaStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFillAreaStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFillAreaStyle::IfcFillAreaStyle(boost::optional< std::string > v1_Name, aggregate_of_instance::ptr v2_FillStyles, boost::optional< bool > v3_ModelorDraughting) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFillAreaStyle_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_FillStyles));data_->setArgument(1,attr);} if (v3_ModelorDraughting) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_ModelorDraughting));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcFillAreaStyleHatching
::Ifc4x3_rc1::IfcCurveStyle* Ifc4x3_rc1::IfcFillAreaStyleHatching::HatchLineAppearance() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurveStyle>(); }
void Ifc4x3_rc1::IfcFillAreaStyleHatching::setHatchLineAppearance(::Ifc4x3_rc1::IfcCurveStyle* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcHatchLineDistanceSelect* Ifc4x3_rc1::IfcFillAreaStyleHatching::StartOfNextHatchLine() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcHatchLineDistanceSelect>(); }
void Ifc4x3_rc1::IfcFillAreaStyleHatching::setStartOfNextHatchLine(::Ifc4x3_rc1::IfcHatchLineDistanceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcFillAreaStyleHatching::PointOfReferenceHatchLine() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcFillAreaStyleHatching::setPointOfReferenceHatchLine(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcFillAreaStyleHatching::PatternStart() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcFillAreaStyleHatching::setPatternStart(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcFillAreaStyleHatching::HatchLineAngle() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcFillAreaStyleHatching::setHatchLineAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyleHatching::declaration() const { return *IFC4X3_RC1_IfcFillAreaStyleHatching_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyleHatching::Class() { return *IFC4X3_RC1_IfcFillAreaStyleHatching_type; }
Ifc4x3_rc1::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFillAreaStyleHatching_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(::Ifc4x3_rc1::IfcCurveStyle* v1_HatchLineAppearance, ::Ifc4x3_rc1::IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, ::Ifc4x3_rc1::IfcCartesianPoint* v3_PointOfReferenceHatchLine, ::Ifc4x3_rc1::IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFillAreaStyleHatching_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_HatchLineAppearance));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartOfNextHatchLine));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_PointOfReferenceHatchLine));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_PatternStart));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HatchLineAngle));data_->setArgument(4,attr);} }

// Function implementations for IfcFillAreaStyleTiles
aggregate_of< ::Ifc4x3_rc1::IfcVector >::ptr Ifc4x3_rc1::IfcFillAreaStyleTiles::TilingPattern() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcVector >(); }
void Ifc4x3_rc1::IfcFillAreaStyleTiles::setTilingPattern(aggregate_of< ::Ifc4x3_rc1::IfcVector >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcStyledItem >::ptr Ifc4x3_rc1::IfcFillAreaStyleTiles::Tiles() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcStyledItem >(); }
void Ifc4x3_rc1::IfcFillAreaStyleTiles::setTiles(aggregate_of< ::Ifc4x3_rc1::IfcStyledItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcFillAreaStyleTiles::TilingScale() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcFillAreaStyleTiles::setTilingScale(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyleTiles::declaration() const { return *IFC4X3_RC1_IfcFillAreaStyleTiles_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFillAreaStyleTiles::Class() { return *IFC4X3_RC1_IfcFillAreaStyleTiles_type; }
Ifc4x3_rc1::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFillAreaStyleTiles_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_rc1::IfcVector >::ptr v1_TilingPattern, aggregate_of< ::Ifc4x3_rc1::IfcStyledItem >::ptr v2_Tiles, double v3_TilingScale) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFillAreaStyleTiles_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TilingPattern)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Tiles)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TilingScale));data_->setArgument(2,attr);} }

// Function implementations for IfcFilter
boost::optional< ::Ifc4x3_rc1::IfcFilterTypeEnum::Value > Ifc4x3_rc1::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFilterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFilter::declaration() const { return *IFC4X3_RC1_IfcFilter_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFilter::Class() { return *IFC4X3_RC1_IfcFilter_type; }
Ifc4x3_rc1::IfcFilter::IfcFilter(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFilter_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFilter::IfcFilter(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFilterTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFilter_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFilterTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFilterType
::Ifc4x3_rc1::IfcFilterTypeEnum::Value Ifc4x3_rc1::IfcFilterType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFilterTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFilterType::setPredefinedType(::Ifc4x3_rc1::IfcFilterTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFilterTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFilterType::declaration() const { return *IFC4X3_RC1_IfcFilterType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFilterType::Class() { return *IFC4X3_RC1_IfcFilterType_type; }
Ifc4x3_rc1::IfcFilterType::IfcFilterType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFilterType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFilterTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFilterType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFilterTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFireSuppressionTerminal
boost::optional< ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_rc1::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFireSuppressionTerminal::declaration() const { return *IFC4X3_RC1_IfcFireSuppressionTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFireSuppressionTerminal::Class() { return *IFC4X3_RC1_IfcFireSuppressionTerminal_type; }
Ifc4x3_rc1::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFireSuppressionTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFireSuppressionTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFireSuppressionTerminalType
::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value Ifc4x3_rc1::IfcFireSuppressionTerminalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFireSuppressionTerminalType::setPredefinedType(::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFireSuppressionTerminalType::declaration() const { return *IFC4X3_RC1_IfcFireSuppressionTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFireSuppressionTerminalType::Class() { return *IFC4X3_RC1_IfcFireSuppressionTerminalType_type; }
Ifc4x3_rc1::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFireSuppressionTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFireSuppressionTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFireSuppressionTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFixedReferenceSweptAreaSolid
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcFixedReferenceSweptAreaSolid::FixedReference() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcFixedReferenceSweptAreaSolid::setFixedReference(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFixedReferenceSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcFixedReferenceSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFixedReferenceSweptAreaSolid::Class() { return *IFC4X3_RC1_IfcFixedReferenceSweptAreaSolid_type; }
Ifc4x3_rc1::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(IfcEntityInstanceData* e) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFixedReferenceSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, ::Ifc4x3_rc1::IfcDirection* v6_FixedReference) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFixedReferenceSweptAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Directrix));data_->setArgument(2,attr);} if (v4_StartParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_StartParam));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EndParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EndParam));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_FixedReference));data_->setArgument(5,attr);} }

// Function implementations for IfcFlowController


const IfcParse::entity& Ifc4x3_rc1::IfcFlowController::declaration() const { return *IFC4X3_RC1_IfcFlowController_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowController::Class() { return *IFC4X3_RC1_IfcFlowController_type; }
Ifc4x3_rc1::IfcFlowController::IfcFlowController(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowController_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowController::IfcFlowController(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowController_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowControllerType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowControllerType::declaration() const { return *IFC4X3_RC1_IfcFlowControllerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowControllerType::Class() { return *IFC4X3_RC1_IfcFlowControllerType_type; }
Ifc4x3_rc1::IfcFlowControllerType::IfcFlowControllerType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowControllerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowControllerType::IfcFlowControllerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowControllerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowFitting


const IfcParse::entity& Ifc4x3_rc1::IfcFlowFitting::declaration() const { return *IFC4X3_RC1_IfcFlowFitting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowFitting::Class() { return *IFC4X3_RC1_IfcFlowFitting_type; }
Ifc4x3_rc1::IfcFlowFitting::IfcFlowFitting(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowFitting::IfcFlowFitting(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowFitting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowFittingType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowFittingType::declaration() const { return *IFC4X3_RC1_IfcFlowFittingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowFittingType::Class() { return *IFC4X3_RC1_IfcFlowFittingType_type; }
Ifc4x3_rc1::IfcFlowFittingType::IfcFlowFittingType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowFittingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowInstrument
boost::optional< ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_rc1::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFlowInstrument::declaration() const { return *IFC4X3_RC1_IfcFlowInstrument_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowInstrument::Class() { return *IFC4X3_RC1_IfcFlowInstrument_type; }
Ifc4x3_rc1::IfcFlowInstrument::IfcFlowInstrument(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowInstrument_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowInstrument::IfcFlowInstrument(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowInstrument_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowInstrumentType
::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value Ifc4x3_rc1::IfcFlowInstrumentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFlowInstrumentType::setPredefinedType(::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFlowInstrumentType::declaration() const { return *IFC4X3_RC1_IfcFlowInstrumentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowInstrumentType::Class() { return *IFC4X3_RC1_IfcFlowInstrumentType_type; }
Ifc4x3_rc1::IfcFlowInstrumentType::IfcFlowInstrumentType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowInstrumentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowInstrumentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFlowInstrumentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFlowMeter
boost::optional< ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value > Ifc4x3_rc1::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFlowMeterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFlowMeter::declaration() const { return *IFC4X3_RC1_IfcFlowMeter_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowMeter::Class() { return *IFC4X3_RC1_IfcFlowMeter_type; }
Ifc4x3_rc1::IfcFlowMeter::IfcFlowMeter(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowMeter_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowMeter::IfcFlowMeter(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMeter_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFlowMeterTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowMeterType
::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value Ifc4x3_rc1::IfcFlowMeterType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFlowMeterType::setPredefinedType(::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFlowMeterTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFlowMeterType::declaration() const { return *IFC4X3_RC1_IfcFlowMeterType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowMeterType::Class() { return *IFC4X3_RC1_IfcFlowMeterType_type; }
Ifc4x3_rc1::IfcFlowMeterType::IfcFlowMeterType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowMeterType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowMeterType::IfcFlowMeterType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFlowMeterTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMeterType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFlowMeterTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFlowMovingDevice


const IfcParse::entity& Ifc4x3_rc1::IfcFlowMovingDevice::declaration() const { return *IFC4X3_RC1_IfcFlowMovingDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowMovingDevice::Class() { return *IFC4X3_RC1_IfcFlowMovingDevice_type; }
Ifc4x3_rc1::IfcFlowMovingDevice::IfcFlowMovingDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowMovingDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowMovingDevice::IfcFlowMovingDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMovingDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowMovingDeviceType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowMovingDeviceType::declaration() const { return *IFC4X3_RC1_IfcFlowMovingDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowMovingDeviceType::Class() { return *IFC4X3_RC1_IfcFlowMovingDeviceType_type; }
Ifc4x3_rc1::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowMovingDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowMovingDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowSegment


const IfcParse::entity& Ifc4x3_rc1::IfcFlowSegment::declaration() const { return *IFC4X3_RC1_IfcFlowSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowSegment::Class() { return *IFC4X3_RC1_IfcFlowSegment_type; }
Ifc4x3_rc1::IfcFlowSegment::IfcFlowSegment(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowSegment::IfcFlowSegment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowSegmentType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowSegmentType::declaration() const { return *IFC4X3_RC1_IfcFlowSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowSegmentType::Class() { return *IFC4X3_RC1_IfcFlowSegmentType_type; }
Ifc4x3_rc1::IfcFlowSegmentType::IfcFlowSegmentType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowSegmentType::IfcFlowSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowSegmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowStorageDevice


const IfcParse::entity& Ifc4x3_rc1::IfcFlowStorageDevice::declaration() const { return *IFC4X3_RC1_IfcFlowStorageDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowStorageDevice::Class() { return *IFC4X3_RC1_IfcFlowStorageDevice_type; }
Ifc4x3_rc1::IfcFlowStorageDevice::IfcFlowStorageDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowStorageDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowStorageDevice::IfcFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowStorageDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowStorageDeviceType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowStorageDeviceType::declaration() const { return *IFC4X3_RC1_IfcFlowStorageDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowStorageDeviceType::Class() { return *IFC4X3_RC1_IfcFlowStorageDeviceType_type; }
Ifc4x3_rc1::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowStorageDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowStorageDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowTerminal


const IfcParse::entity& Ifc4x3_rc1::IfcFlowTerminal::declaration() const { return *IFC4X3_RC1_IfcFlowTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowTerminal::Class() { return *IFC4X3_RC1_IfcFlowTerminal_type; }
Ifc4x3_rc1::IfcFlowTerminal::IfcFlowTerminal(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowTerminal::IfcFlowTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowTerminalType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowTerminalType::declaration() const { return *IFC4X3_RC1_IfcFlowTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowTerminalType::Class() { return *IFC4X3_RC1_IfcFlowTerminalType_type; }
Ifc4x3_rc1::IfcFlowTerminalType::IfcFlowTerminalType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowTerminalType::IfcFlowTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFlowTreatmentDevice


const IfcParse::entity& Ifc4x3_rc1::IfcFlowTreatmentDevice::declaration() const { return *IFC4X3_RC1_IfcFlowTreatmentDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowTreatmentDevice::Class() { return *IFC4X3_RC1_IfcFlowTreatmentDevice_type; }
Ifc4x3_rc1::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowTreatmentDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowTreatmentDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFlowTreatmentDeviceType


const IfcParse::entity& Ifc4x3_rc1::IfcFlowTreatmentDeviceType::declaration() const { return *IFC4X3_RC1_IfcFlowTreatmentDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFlowTreatmentDeviceType::Class() { return *IFC4X3_RC1_IfcFlowTreatmentDeviceType_type; }
Ifc4x3_rc1::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFlowTreatmentDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFlowTreatmentDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFooting
boost::optional< ::Ifc4x3_rc1::IfcFootingTypeEnum::Value > Ifc4x3_rc1::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFootingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFooting::declaration() const { return *IFC4X3_RC1_IfcFooting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFooting::Class() { return *IFC4X3_RC1_IfcFooting_type; }
Ifc4x3_rc1::IfcFooting::IfcFooting(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFooting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFooting::IfcFooting(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFootingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFooting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFootingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFootingType
::Ifc4x3_rc1::IfcFootingTypeEnum::Value Ifc4x3_rc1::IfcFootingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcFootingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFootingType::setPredefinedType(::Ifc4x3_rc1::IfcFootingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcFootingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFootingType::declaration() const { return *IFC4X3_RC1_IfcFootingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFootingType::Class() { return *IFC4X3_RC1_IfcFootingType_type; }
Ifc4x3_rc1::IfcFootingType::IfcFootingType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFootingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFootingType::IfcFootingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcFootingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFootingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcFootingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFurnishingElement


const IfcParse::entity& Ifc4x3_rc1::IfcFurnishingElement::declaration() const { return *IFC4X3_RC1_IfcFurnishingElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFurnishingElement::Class() { return *IFC4X3_RC1_IfcFurnishingElement_type; }
Ifc4x3_rc1::IfcFurnishingElement::IfcFurnishingElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFurnishingElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFurnishingElement::IfcFurnishingElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnishingElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcFurnishingElementType


const IfcParse::entity& Ifc4x3_rc1::IfcFurnishingElementType::declaration() const { return *IFC4X3_RC1_IfcFurnishingElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFurnishingElementType::Class() { return *IFC4X3_RC1_IfcFurnishingElementType_type; }
Ifc4x3_rc1::IfcFurnishingElementType::IfcFurnishingElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFurnishingElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnishingElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFurniture
boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > Ifc4x3_rc1::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFurniture::declaration() const { return *IFC4X3_RC1_IfcFurniture_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFurniture::Class() { return *IFC4X3_RC1_IfcFurniture_type; }
Ifc4x3_rc1::IfcFurniture::IfcFurniture(IfcEntityInstanceData* e) : IfcFurnishingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFurniture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurniture_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcFurnitureType
::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value Ifc4x3_rc1::IfcFurnitureType::AssemblyPlace() const {  return ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > Ifc4x3_rc1::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcFurnitureType::declaration() const { return *IFC4X3_RC1_IfcFurnitureType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcFurnitureType::Class() { return *IFC4X3_RC1_IfcFurnitureType_type; }
Ifc4x3_rc1::IfcFurnitureType::IfcFurnitureType(IfcEntityInstanceData* e) : IfcFurnishingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcFurnitureType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, boost::optional< ::Ifc4x3_rc1::IfcFurnitureTypeEnum::Value > v11_PredefinedType) : IfcFurnishingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcFurnitureType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_AssemblyPlace,::Ifc4x3_rc1::IfcAssemblyPlaceEnum::ToString(v10_AssemblyPlace))));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcFurnitureTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcGeographicElement
boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > Ifc4x3_rc1::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcGeographicElement::declaration() const { return *IFC4X3_RC1_IfcGeographicElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeographicElement::Class() { return *IFC4X3_RC1_IfcGeographicElement_type; }
Ifc4x3_rc1::IfcGeographicElement::IfcGeographicElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeographicElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeographicElement::IfcGeographicElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > v9_PredefinedType) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeographicElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcGeographicElementType
::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value Ifc4x3_rc1::IfcGeographicElementType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcGeographicElementType::setPredefinedType(::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcGeographicElementType::declaration() const { return *IFC4X3_RC1_IfcGeographicElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeographicElementType::Class() { return *IFC4X3_RC1_IfcGeographicElementType_type; }
Ifc4x3_rc1::IfcGeographicElementType::IfcGeographicElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeographicElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeographicElementType::IfcGeographicElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value v10_PredefinedType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeographicElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcGeometricCurveSet


const IfcParse::entity& Ifc4x3_rc1::IfcGeometricCurveSet::declaration() const { return *IFC4X3_RC1_IfcGeometricCurveSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeometricCurveSet::Class() { return *IFC4X3_RC1_IfcGeometricCurveSet_type; }
Ifc4x3_rc1::IfcGeometricCurveSet::IfcGeometricCurveSet(IfcEntityInstanceData* e) : IfcGeometricSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeometricCurveSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of_instance::ptr v1_Elements) : IfcGeometricSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricCurveSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Elements));data_->setArgument(0,attr);} }

// Function implementations for IfcGeometricRepresentationContext
int Ifc4x3_rc1::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const {  int v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcGeometricRepresentationContext::WorldCoordinateSystem() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(); }
void Ifc4x3_rc1::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcGeometricRepresentationContext::setTrueNorth(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }

::Ifc4x3_rc1::IfcGeometricRepresentationSubContext::list::ptr Ifc4x3_rc1::IfcGeometricRepresentationContext::HasSubContexts() const { return data_->getInverse(IFC4X3_RC1_IfcGeometricRepresentationSubContext_type, 6)->as<IfcGeometricRepresentationSubContext>(); }
::Ifc4x3_rc1::IfcCoordinateOperation::list::ptr Ifc4x3_rc1::IfcGeometricRepresentationContext::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC1_IfcCoordinateOperation_type, 0)->as<IfcCoordinateOperation>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationContext::declaration() const { return *IFC4X3_RC1_IfcGeometricRepresentationContext_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationContext::Class() { return *IFC4X3_RC1_IfcGeometricRepresentationContext_type; }
Ifc4x3_rc1::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(IfcEntityInstanceData* e) : IfcRepresentationContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeometricRepresentationContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, ::Ifc4x3_rc1::IfcAxis2Placement* v5_WorldCoordinateSystem, ::Ifc4x3_rc1::IfcDirection* v6_TrueNorth) : IfcRepresentationContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricRepresentationContext_type);  if (v1_ContextIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_ContextIdentifier));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_ContextType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ContextType));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CoordinateSpaceDimension));data_->setArgument(2,attr);} if (v4_Precision) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Precision));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_WorldCoordinateSystem));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_TrueNorth));data_->setArgument(5,attr);} }

// Function implementations for IfcGeometricRepresentationItem


const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationItem::declaration() const { return *IFC4X3_RC1_IfcGeometricRepresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationItem::Class() { return *IFC4X3_RC1_IfcGeometricRepresentationItem_type; }
Ifc4x3_rc1::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeometricRepresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricRepresentationItem_type);  }

// Function implementations for IfcGeometricRepresentationSubContext
::Ifc4x3_rc1::IfcGeometricRepresentationContext* Ifc4x3_rc1::IfcGeometricRepresentationSubContext::ParentContext() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcGeometricRepresentationContext>(); }
void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_rc1::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcGeometricProjectionEnum::Value Ifc4x3_rc1::IfcGeometricRepresentationSubContext::TargetView() const {  return ::Ifc4x3_rc1::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_rc1::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X3_RC1_IfcGeometricRepresentationSubContext_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeometricRepresentationSubContext::Class() { return *IFC4X3_RC1_IfcGeometricRepresentationSubContext_type; }
Ifc4x3_rc1::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(IfcEntityInstanceData* e) : IfcGeometricRepresentationContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeometricRepresentationSubContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, ::Ifc4x3_rc1::IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, ::Ifc4x3_rc1::IfcGeometricProjectionEnum::Value v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView) : IfcGeometricRepresentationContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricRepresentationSubContext_type);  if (v1_ContextIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_ContextIdentifier));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_ContextType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ContextType));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ParentContext));data_->setArgument(6,attr);} if (v8_TargetScale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_TargetScale));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_TargetView,::Ifc4x3_rc1::IfcGeometricProjectionEnum::ToString(v9_TargetView))));data_->setArgument(8,attr);} if (v10_UserDefinedTargetView) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_UserDefinedTargetView));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcGeometricSet
aggregate_of_instance::ptr Ifc4x3_rc1::IfcGeometricSet::Elements() const {  aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcGeometricSet::setElements(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcGeometricSet::declaration() const { return *IFC4X3_RC1_IfcGeometricSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeometricSet::Class() { return *IFC4X3_RC1_IfcGeometricSet_type; }
Ifc4x3_rc1::IfcGeometricSet::IfcGeometricSet(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeometricSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeometricSet::IfcGeometricSet(aggregate_of_instance::ptr v1_Elements) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeometricSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Elements));data_->setArgument(0,attr);} }

// Function implementations for IfcGeomodel


const IfcParse::entity& Ifc4x3_rc1::IfcGeomodel::declaration() const { return *IFC4X3_RC1_IfcGeomodel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeomodel::Class() { return *IFC4X3_RC1_IfcGeomodel_type; }
Ifc4x3_rc1::IfcGeomodel::IfcGeomodel(IfcEntityInstanceData* e) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeomodel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeomodel::IfcGeomodel(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeomodel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcGeoslice


const IfcParse::entity& Ifc4x3_rc1::IfcGeoslice::declaration() const { return *IFC4X3_RC1_IfcGeoslice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeoslice::Class() { return *IFC4X3_RC1_IfcGeoslice_type; }
Ifc4x3_rc1::IfcGeoslice::IfcGeoslice(IfcEntityInstanceData* e) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeoslice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeoslice::IfcGeoslice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeoslice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcGeotechnicalAssembly


const IfcParse::entity& Ifc4x3_rc1::IfcGeotechnicalAssembly::declaration() const { return *IFC4X3_RC1_IfcGeotechnicalAssembly_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeotechnicalAssembly::Class() { return *IFC4X3_RC1_IfcGeotechnicalAssembly_type; }
Ifc4x3_rc1::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(IfcEntityInstanceData* e) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeotechnicalAssembly_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeotechnicalAssembly_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcGeotechnicalElement


const IfcParse::entity& Ifc4x3_rc1::IfcGeotechnicalElement::declaration() const { return *IFC4X3_RC1_IfcGeotechnicalElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeotechnicalElement::Class() { return *IFC4X3_RC1_IfcGeotechnicalElement_type; }
Ifc4x3_rc1::IfcGeotechnicalElement::IfcGeotechnicalElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeotechnicalElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeotechnicalElement::IfcGeotechnicalElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeotechnicalElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcGeotechnicalStratum


const IfcParse::entity& Ifc4x3_rc1::IfcGeotechnicalStratum::declaration() const { return *IFC4X3_RC1_IfcGeotechnicalStratum_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGeotechnicalStratum::Class() { return *IFC4X3_RC1_IfcGeotechnicalStratum_type; }
Ifc4x3_rc1::IfcGeotechnicalStratum::IfcGeotechnicalStratum(IfcEntityInstanceData* e) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGeotechnicalStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGeotechnicalStratum::IfcGeotechnicalStratum(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGeotechnicalStratum_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcGrid
aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr Ifc4x3_rc1::IfcGrid::UAxes() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcGridAxis >(); }
void Ifc4x3_rc1::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr Ifc4x3_rc1::IfcGrid::VAxes() const {  aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcGridAxis >(); }
void Ifc4x3_rc1::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr > Ifc4x3_rc1::IfcGrid::WAxes() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcGridAxis >(); }
void Ifc4x3_rc1::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcGridTypeEnum::Value > Ifc4x3_rc1::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcGridTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcGridTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcGrid::declaration() const { return *IFC4X3_RC1_IfcGrid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGrid::Class() { return *IFC4X3_RC1_IfcGrid_type; }
Ifc4x3_rc1::IfcGrid::IfcGrid(IfcEntityInstanceData* e) : IfcPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGrid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v8_UAxes, aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v9_VAxes, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr > v10_WAxes, boost::optional< ::Ifc4x3_rc1::IfcGridTypeEnum::Value > v11_PredefinedType) : IfcPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGrid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_UAxes)->generalize());data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_VAxes)->generalize());data_->setArgument(8,attr);} if (v10_WAxes) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_WAxes)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcGridTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcGridAxis
boost::optional< std::string > Ifc4x3_rc1::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcGridAxis::AxisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcGridAxis::setAxisCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
bool Ifc4x3_rc1::IfcGridAxis::SameSense() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcGridAxis::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }

::Ifc4x3_rc1::IfcGrid::list::ptr Ifc4x3_rc1::IfcGridAxis::PartOfW() const { return data_->getInverse(IFC4X3_RC1_IfcGrid_type, 9)->as<IfcGrid>(); }
::Ifc4x3_rc1::IfcGrid::list::ptr Ifc4x3_rc1::IfcGridAxis::PartOfV() const { return data_->getInverse(IFC4X3_RC1_IfcGrid_type, 8)->as<IfcGrid>(); }
::Ifc4x3_rc1::IfcGrid::list::ptr Ifc4x3_rc1::IfcGridAxis::PartOfU() const { return data_->getInverse(IFC4X3_RC1_IfcGrid_type, 7)->as<IfcGrid>(); }
::Ifc4x3_rc1::IfcVirtualGridIntersection::list::ptr Ifc4x3_rc1::IfcGridAxis::HasIntersections() const { return data_->getInverse(IFC4X3_RC1_IfcVirtualGridIntersection_type, 0)->as<IfcVirtualGridIntersection>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcGridAxis::declaration() const { return *IFC4X3_RC1_IfcGridAxis_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGridAxis::Class() { return *IFC4X3_RC1_IfcGridAxis_type; }
Ifc4x3_rc1::IfcGridAxis::IfcGridAxis(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGridAxis_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGridAxis::IfcGridAxis(boost::optional< std::string > v1_AxisTag, ::Ifc4x3_rc1::IfcCurve* v2_AxisCurve, bool v3_SameSense) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGridAxis_type);  if (v1_AxisTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_AxisTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AxisCurve));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SameSense));data_->setArgument(2,attr);} }

// Function implementations for IfcGridPlacement
::Ifc4x3_rc1::IfcVirtualGridIntersection* Ifc4x3_rc1::IfcGridPlacement::PlacementLocation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcVirtualGridIntersection>(); }
void Ifc4x3_rc1::IfcGridPlacement::setPlacementLocation(::Ifc4x3_rc1::IfcVirtualGridIntersection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcGridPlacementDirectionSelect* Ifc4x3_rc1::IfcGridPlacement::PlacementRefDirection() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcGridPlacementDirectionSelect>(); }
void Ifc4x3_rc1::IfcGridPlacement::setPlacementRefDirection(::Ifc4x3_rc1::IfcGridPlacementDirectionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcGridPlacement::declaration() const { return *IFC4X3_RC1_IfcGridPlacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGridPlacement::Class() { return *IFC4X3_RC1_IfcGridPlacement_type; }
Ifc4x3_rc1::IfcGridPlacement::IfcGridPlacement(IfcEntityInstanceData* e) : IfcObjectPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGridPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGridPlacement::IfcGridPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc1::IfcVirtualGridIntersection* v2_PlacementLocation, ::Ifc4x3_rc1::IfcGridPlacementDirectionSelect* v3_PlacementRefDirection) : IfcObjectPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGridPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PlacementRelTo));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PlacementLocation));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_PlacementRefDirection));data_->setArgument(2,attr);} }

// Function implementations for IfcGroup

::Ifc4x3_rc1::IfcRelAssignsToGroup::list::ptr Ifc4x3_rc1::IfcGroup::IsGroupedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToGroup_type, 6)->as<IfcRelAssignsToGroup>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcGroup::declaration() const { return *IFC4X3_RC1_IfcGroup_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcGroup::Class() { return *IFC4X3_RC1_IfcGroup_type; }
Ifc4x3_rc1::IfcGroup::IfcGroup(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcGroup::IfcGroup(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcGroup_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcHalfSpaceSolid
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcHalfSpaceSolid::BaseSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcHalfSpaceSolid::setBaseSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
bool Ifc4x3_rc1::IfcHalfSpaceSolid::AgreementFlag() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcHalfSpaceSolid::setAgreementFlag(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcHalfSpaceSolid::declaration() const { return *IFC4X3_RC1_IfcHalfSpaceSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcHalfSpaceSolid::Class() { return *IFC4X3_RC1_IfcHalfSpaceSolid_type; }
Ifc4x3_rc1::IfcHalfSpaceSolid::IfcHalfSpaceSolid(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcHalfSpaceSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_rc1::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHalfSpaceSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BaseSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AgreementFlag));data_->setArgument(1,attr);} }

// Function implementations for IfcHeatExchanger
boost::optional< ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value > Ifc4x3_rc1::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcHeatExchanger::declaration() const { return *IFC4X3_RC1_IfcHeatExchanger_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcHeatExchanger::Class() { return *IFC4X3_RC1_IfcHeatExchanger_type; }
Ifc4x3_rc1::IfcHeatExchanger::IfcHeatExchanger(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcHeatExchanger_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcHeatExchanger::IfcHeatExchanger(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatExchanger_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcHeatExchangerType
::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value Ifc4x3_rc1::IfcHeatExchangerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcHeatExchangerType::setPredefinedType(::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcHeatExchangerType::declaration() const { return *IFC4X3_RC1_IfcHeatExchangerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcHeatExchangerType::Class() { return *IFC4X3_RC1_IfcHeatExchangerType_type; }
Ifc4x3_rc1::IfcHeatExchangerType::IfcHeatExchangerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcHeatExchangerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHeatExchangerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcHeatExchangerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcHumidifier
boost::optional< ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value > Ifc4x3_rc1::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcHumidifier::declaration() const { return *IFC4X3_RC1_IfcHumidifier_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcHumidifier::Class() { return *IFC4X3_RC1_IfcHumidifier_type; }
Ifc4x3_rc1::IfcHumidifier::IfcHumidifier(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcHumidifier_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcHumidifier::IfcHumidifier(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHumidifier_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcHumidifierType
::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value Ifc4x3_rc1::IfcHumidifierType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcHumidifierTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcHumidifierType::setPredefinedType(::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcHumidifierType::declaration() const { return *IFC4X3_RC1_IfcHumidifierType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcHumidifierType::Class() { return *IFC4X3_RC1_IfcHumidifierType_type; }
Ifc4x3_rc1::IfcHumidifierType::IfcHumidifierType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcHumidifierType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcHumidifierType::IfcHumidifierType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcHumidifierTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcHumidifierType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcHumidifierTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcIShapeProfileDef
double Ifc4x3_rc1::IfcIShapeProfileDef::OverallWidth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setOverallWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcIShapeProfileDef::OverallDepth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setOverallDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcIShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcIShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcIShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIShapeProfileDef::Class() { return *IFC4X3_RC1_IfcIShapeProfileDef_type; }
Ifc4x3_rc1::IfcIShapeProfileDef::IfcIShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIShapeProfileDef::IfcIShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_OverallWidth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_OverallDepth));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WebThickness));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_FlangeThickness));data_->setArgument(6,attr);} if (v8_FilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_FilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_FlangeEdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_FlangeEdgeRadius));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_FlangeSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_FlangeSlope));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcImageTexture
std::string Ifc4x3_rc1::IfcImageTexture::URLReference() const {  std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcImageTexture::setURLReference(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcImageTexture::declaration() const { return *IFC4X3_RC1_IfcImageTexture_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcImageTexture::Class() { return *IFC4X3_RC1_IfcImageTexture_type; }
Ifc4x3_rc1::IfcImageTexture::IfcImageTexture(IfcEntityInstanceData* e) : IfcSurfaceTexture((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcImageTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference) : IfcSurfaceTexture((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImageTexture_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_RepeatS));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RepeatT));data_->setArgument(1,attr);} if (v3_Mode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Mode));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TextureTransform));data_->setArgument(3,attr);} if (v5_Parameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Parameter));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_URLReference));data_->setArgument(5,attr);} }

// Function implementations for IfcImpactProtectionDevice
::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect* Ifc4x3_rc1::IfcImpactProtectionDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect>(); }
void Ifc4x3_rc1::IfcImpactProtectionDevice::setPredefinedType(::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcImpactProtectionDevice::declaration() const { return *IFC4X3_RC1_IfcImpactProtectionDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcImpactProtectionDevice::Class() { return *IFC4X3_RC1_IfcImpactProtectionDevice_type; }
Ifc4x3_rc1::IfcImpactProtectionDevice::IfcImpactProtectionDevice(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcImpactProtectionDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcImpactProtectionDevice::IfcImpactProtectionDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect* v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImpactProtectionDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_PredefinedType));data_->setArgument(8,attr);} }

// Function implementations for IfcImpactProtectionDeviceType
::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect* Ifc4x3_rc1::IfcImpactProtectionDeviceType::PredefinedType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect>(); }
void Ifc4x3_rc1::IfcImpactProtectionDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcImpactProtectionDeviceType::declaration() const { return *IFC4X3_RC1_IfcImpactProtectionDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcImpactProtectionDeviceType::Class() { return *IFC4X3_RC1_IfcImpactProtectionDeviceType_type; }
Ifc4x3_rc1::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcImpactProtectionDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcImpactProtectionDeviceTypeSelect* v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcImpactProtectionDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_PredefinedType));data_->setArgument(9,attr);} }

// Function implementations for IfcInclinedReferenceSweptAreaSolid
boost::optional< bool > Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::FixedAxisVertical() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } bool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcAxisLateralInclination* Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::Inclinating() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcAxisLateralInclination>(); }
void Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::setInclinating(::Ifc4x3_rc1::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcInclinedReferenceSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::Class() { return *IFC4X3_RC1_IfcInclinedReferenceSweptAreaSolid_type; }
Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSolid(IfcEntityInstanceData* e) : IfcDirectrixDistanceSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcInclinedReferenceSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcCurve* v3_Directrix, ::Ifc4x3_rc1::IfcDistanceExpression* v4_StartDistance, ::Ifc4x3_rc1::IfcDistanceExpression* v5_EndDistance, boost::optional< bool > v6_FixedAxisVertical, ::Ifc4x3_rc1::IfcAxisLateralInclination* v7_Inclinating) : IfcDirectrixDistanceSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInclinedReferenceSweptAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Directrix));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDistance));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndDistance));data_->setArgument(4,attr);} if (v6_FixedAxisVertical) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_FixedAxisVertical));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Inclinating));data_->setArgument(6,attr);} }

// Function implementations for IfcIndexedColourMap
::Ifc4x3_rc1::IfcTessellatedFaceSet* Ifc4x3_rc1::IfcIndexedColourMap::MappedTo() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcTessellatedFaceSet>(); }
void Ifc4x3_rc1::IfcIndexedColourMap::setMappedTo(::Ifc4x3_rc1::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcColourRgbList* Ifc4x3_rc1::IfcIndexedColourMap::Colours() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcColourRgbList>(); }
void Ifc4x3_rc1::IfcIndexedColourMap::setColours(::Ifc4x3_rc1::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::vector< int > /*[1:?]*/ Ifc4x3_rc1::IfcIndexedColourMap::ColourIndex() const {  std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcIndexedColourMap::setColourIndex(std::vector< int > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIndexedColourMap::declaration() const { return *IFC4X3_RC1_IfcIndexedColourMap_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIndexedColourMap::Class() { return *IFC4X3_RC1_IfcIndexedColourMap_type; }
Ifc4x3_rc1::IfcIndexedColourMap::IfcIndexedColourMap(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIndexedColourMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_rc1::IfcTessellatedFaceSet* v1_MappedTo, boost::optional< double > v2_Opacity, ::Ifc4x3_rc1::IfcColourRgbList* v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIndexedColourMap_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MappedTo));data_->setArgument(0,attr);} if (v2_Opacity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Opacity));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Colours));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ColourIndex));data_->setArgument(3,attr);} }

// Function implementations for IfcIndexedPolyCurve
::Ifc4x3_rc1::IfcCartesianPointList* Ifc4x3_rc1::IfcIndexedPolyCurve::Points() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPointList>(); }
void Ifc4x3_rc1::IfcIndexedPolyCurve::setPoints(::Ifc4x3_rc1::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolyCurve::declaration() const { return *IFC4X3_RC1_IfcIndexedPolyCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolyCurve::Class() { return *IFC4X3_RC1_IfcIndexedPolyCurve_type; }
Ifc4x3_rc1::IfcIndexedPolyCurve::IfcIndexedPolyCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIndexedPolyCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIndexedPolyCurve::IfcIndexedPolyCurve(::Ifc4x3_rc1::IfcCartesianPointList* v1_Points, boost::optional< aggregate_of_instance::ptr > v2_Segments, boost::optional< bool > v3_SelfIntersect) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIndexedPolyCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Points));data_->setArgument(0,attr);} if (v2_Segments) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Segments));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_SelfIntersect) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_SelfIntersect));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcIndexedPolygonalFace
std::vector< int > /*[3:?]*/ Ifc4x3_rc1::IfcIndexedPolygonalFace::CoordIndex() const {  std::vector< int > /*[3:?]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcIndexedPolygonalFace::setCoordIndex(std::vector< int > /*[3:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }

::Ifc4x3_rc1::IfcPolygonalFaceSet::list::ptr Ifc4x3_rc1::IfcIndexedPolygonalFace::ToFaceSet() const { return data_->getInverse(IFC4X3_RC1_IfcPolygonalFaceSet_type, 2)->as<IfcPolygonalFaceSet>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolygonalFace::declaration() const { return *IFC4X3_RC1_IfcIndexedPolygonalFace_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolygonalFace::Class() { return *IFC4X3_RC1_IfcIndexedPolygonalFace_type; }
Ifc4x3_rc1::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(IfcEntityInstanceData* e) : IfcTessellatedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIndexedPolygonalFace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(std::vector< int > /*[3:?]*/ v1_CoordIndex) : IfcTessellatedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIndexedPolygonalFace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CoordIndex));data_->setArgument(0,attr);} }

// Function implementations for IfcIndexedPolygonalFaceWithVoids
std::vector< std::vector< int > > Ifc4x3_rc1::IfcIndexedPolygonalFaceWithVoids::InnerCoordIndices() const {  std::vector< std::vector< int > > v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcIndexedPolygonalFaceWithVoids::setInnerCoordIndices(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolygonalFaceWithVoids::declaration() const { return *IFC4X3_RC1_IfcIndexedPolygonalFaceWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIndexedPolygonalFaceWithVoids::Class() { return *IFC4X3_RC1_IfcIndexedPolygonalFaceWithVoids_type; }
Ifc4x3_rc1::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(IfcEntityInstanceData* e) : IfcIndexedPolygonalFace((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIndexedPolygonalFaceWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices) : IfcIndexedPolygonalFace((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIndexedPolygonalFaceWithVoids_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CoordIndex));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_InnerCoordIndices));data_->setArgument(1,attr);} }

// Function implementations for IfcIndexedTextureMap
::Ifc4x3_rc1::IfcTessellatedFaceSet* Ifc4x3_rc1::IfcIndexedTextureMap::MappedTo() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcTessellatedFaceSet>(); }
void Ifc4x3_rc1::IfcIndexedTextureMap::setMappedTo(::Ifc4x3_rc1::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcTextureVertexList* Ifc4x3_rc1::IfcIndexedTextureMap::TexCoords() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcTextureVertexList>(); }
void Ifc4x3_rc1::IfcIndexedTextureMap::setTexCoords(::Ifc4x3_rc1::IfcTextureVertexList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIndexedTextureMap::declaration() const { return *IFC4X3_RC1_IfcIndexedTextureMap_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIndexedTextureMap::Class() { return *IFC4X3_RC1_IfcIndexedTextureMap_type; }
Ifc4x3_rc1::IfcIndexedTextureMap::IfcIndexedTextureMap(IfcEntityInstanceData* e) : IfcTextureCoordinate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIndexedTextureMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_rc1::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_rc1::IfcTextureVertexList* v3_TexCoords) : IfcTextureCoordinate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIndexedTextureMap_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Maps)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_MappedTo));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TexCoords));data_->setArgument(2,attr);} }

// Function implementations for IfcIndexedTriangleTextureMap
boost::optional< std::vector< std::vector< int > > > Ifc4x3_rc1::IfcIndexedTriangleTextureMap::TexCoordIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::vector< int > > v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X3_RC1_IfcIndexedTriangleTextureMap_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIndexedTriangleTextureMap::Class() { return *IFC4X3_RC1_IfcIndexedTriangleTextureMap_type; }
Ifc4x3_rc1::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(IfcEntityInstanceData* e) : IfcIndexedTextureMap((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIndexedTriangleTextureMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_rc1::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_rc1::IfcTextureVertexList* v3_TexCoords, boost::optional< std::vector< std::vector< int > > > v4_TexCoordIndex) : IfcIndexedTextureMap((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIndexedTriangleTextureMap_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Maps)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_MappedTo));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TexCoords));data_->setArgument(2,attr);} if (v4_TexCoordIndex) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_TexCoordIndex));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcInterceptor
boost::optional< ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value > Ifc4x3_rc1::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcInterceptorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcInterceptor::declaration() const { return *IFC4X3_RC1_IfcInterceptor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcInterceptor::Class() { return *IFC4X3_RC1_IfcInterceptor_type; }
Ifc4x3_rc1::IfcInterceptor::IfcInterceptor(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcInterceptor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcInterceptor::IfcInterceptor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInterceptor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcInterceptorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcInterceptorType
::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value Ifc4x3_rc1::IfcInterceptorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcInterceptorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcInterceptorType::setPredefinedType(::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcInterceptorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcInterceptorType::declaration() const { return *IFC4X3_RC1_IfcInterceptorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcInterceptorType::Class() { return *IFC4X3_RC1_IfcInterceptorType_type; }
Ifc4x3_rc1::IfcInterceptorType::IfcInterceptorType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcInterceptorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcInterceptorType::IfcInterceptorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcInterceptorTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInterceptorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcInterceptorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcIntersectionCurve


const IfcParse::entity& Ifc4x3_rc1::IfcIntersectionCurve::declaration() const { return *IFC4X3_RC1_IfcIntersectionCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIntersectionCurve::Class() { return *IFC4X3_RC1_IfcIntersectionCurve_type; }
Ifc4x3_rc1::IfcIntersectionCurve::IfcIntersectionCurve(IfcEntityInstanceData* e) : IfcSurfaceCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIntersectionCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_rc1::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_rc1::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIntersectionCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Curve3D));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AssociatedGeometry)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_MasterRepresentation,::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation))));data_->setArgument(2,attr);} }

// Function implementations for IfcInventory
boost::optional< ::Ifc4x3_rc1::IfcInventoryTypeEnum::Value > Ifc4x3_rc1::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcInventoryTypeEnum::ToString(*v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcInventory::setJurisdiction(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > Ifc4x3_rc1::IfcInventory::ResponsiblePersons() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcPerson >(); }
void Ifc4x3_rc1::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcCostValue>(); }
void Ifc4x3_rc1::IfcInventory::setCurrentValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcCostValue* Ifc4x3_rc1::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcCostValue>(); }
void Ifc4x3_rc1::IfcInventory::setOriginalValue(::Ifc4x3_rc1::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcInventory::declaration() const { return *IFC4X3_RC1_IfcInventory_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcInventory::Class() { return *IFC4X3_RC1_IfcInventory_type; }
Ifc4x3_rc1::IfcInventory::IfcInventory(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcInventory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcInventory::IfcInventory(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_rc1::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4x3_rc1::IfcActorSelect* v7_Jurisdiction, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v8_ResponsiblePersons, boost::optional< std::string > v9_LastUpdateDate, ::Ifc4x3_rc1::IfcCostValue* v10_CurrentValue, ::Ifc4x3_rc1::IfcCostValue* v11_OriginalValue) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcInventory_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_PredefinedType,::Ifc4x3_rc1::IfcInventoryTypeEnum::ToString(*v6_PredefinedType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Jurisdiction));data_->setArgument(6,attr);} if (v8_ResponsiblePersons) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_ResponsiblePersons)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LastUpdateDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_LastUpdateDate));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_CurrentValue));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_OriginalValue));data_->setArgument(10,attr);} }

// Function implementations for IfcIrregularTimeSeries
aggregate_of< ::Ifc4x3_rc1::IfcIrregularTimeSeriesValue >::ptr Ifc4x3_rc1::IfcIrregularTimeSeries::Values() const {  aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcIrregularTimeSeriesValue >(); }
void Ifc4x3_rc1::IfcIrregularTimeSeries::setValues(aggregate_of< ::Ifc4x3_rc1::IfcIrregularTimeSeriesValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIrregularTimeSeries::declaration() const { return *IFC4X3_RC1_IfcIrregularTimeSeries_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIrregularTimeSeries::Class() { return *IFC4X3_RC1_IfcIrregularTimeSeries_type; }
Ifc4x3_rc1::IfcIrregularTimeSeries::IfcIrregularTimeSeries(IfcEntityInstanceData* e) : IfcTimeSeries((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIrregularTimeSeries_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIrregularTimeSeries::IfcIrregularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_rc1::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_rc1::IfcUnit* v8_Unit, aggregate_of< ::Ifc4x3_rc1::IfcIrregularTimeSeriesValue >::ptr v9_Values) : IfcTimeSeries((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIrregularTimeSeries_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_StartTime));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_EndTime));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_TimeSeriesDataType,::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(v6_DataOrigin))));data_->setArgument(5,attr);} if (v7_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_UserDefinedDataOrigin));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Unit));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Values)->generalize());data_->setArgument(8,attr);} }

// Function implementations for IfcIrregularTimeSeriesValue
std::string Ifc4x3_rc1::IfcIrregularTimeSeriesValue::TimeStamp() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcIrregularTimeSeriesValue::setTimeStamp(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcIrregularTimeSeriesValue::ListValues() const {  aggregate_of_instance::ptr v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcIrregularTimeSeriesValue::setListValues(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcIrregularTimeSeriesValue::declaration() const { return *IFC4X3_RC1_IfcIrregularTimeSeriesValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcIrregularTimeSeriesValue::Class() { return *IFC4X3_RC1_IfcIrregularTimeSeriesValue_type; }
Ifc4x3_rc1::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcIrregularTimeSeriesValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_TimeStamp, aggregate_of_instance::ptr v2_ListValues) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcIrregularTimeSeriesValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TimeStamp));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ListValues));data_->setArgument(1,attr);} }

// Function implementations for IfcJunctionBox
boost::optional< ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value > Ifc4x3_rc1::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcJunctionBox::declaration() const { return *IFC4X3_RC1_IfcJunctionBox_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcJunctionBox::Class() { return *IFC4X3_RC1_IfcJunctionBox_type; }
Ifc4x3_rc1::IfcJunctionBox::IfcJunctionBox(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcJunctionBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcJunctionBox::IfcJunctionBox(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcJunctionBox_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcJunctionBoxType
::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value Ifc4x3_rc1::IfcJunctionBoxType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcJunctionBoxType::setPredefinedType(::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcJunctionBoxType::declaration() const { return *IFC4X3_RC1_IfcJunctionBoxType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcJunctionBoxType::Class() { return *IFC4X3_RC1_IfcJunctionBoxType_type; }
Ifc4x3_rc1::IfcJunctionBoxType::IfcJunctionBoxType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcJunctionBoxType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcJunctionBoxType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcJunctionBoxTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcKerb
bool Ifc4x3_rc1::IfcKerb::Mountable() const {  bool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcKerb::setMountable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcKerb::declaration() const { return *IFC4X3_RC1_IfcKerb_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcKerb::Class() { return *IFC4X3_RC1_IfcKerb_type; }
Ifc4x3_rc1::IfcKerb::IfcKerb(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcKerb_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcKerb::IfcKerb(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, bool v9_Mountable) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKerb_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Mountable));data_->setArgument(8,attr);} }

// Function implementations for IfcKerbType
bool Ifc4x3_rc1::IfcKerbType::Mountable() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcKerbType::setMountable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcKerbType::declaration() const { return *IFC4X3_RC1_IfcKerbType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcKerbType::Class() { return *IFC4X3_RC1_IfcKerbType_type; }
Ifc4x3_rc1::IfcKerbType::IfcKerbType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcKerbType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, bool v10_Mountable) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcKerbType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_Mountable));data_->setArgument(9,attr);} }

// Function implementations for IfcLShapeProfileDef
double Ifc4x3_rc1::IfcLShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcLShapeProfileDef::Thickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcLShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLShapeProfileDef::Class() { return *IFC4X3_RC1_IfcLShapeProfileDef_type; }
Ifc4x3_rc1::IfcLShapeProfileDef::IfcLShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);} if (v5_Width) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Width));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Thickness));data_->setArgument(5,attr);} if (v7_FilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_FilletRadius));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_EdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_EdgeRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LegSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_LegSlope));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcLaborResource
boost::optional< ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value > Ifc4x3_rc1::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLaborResource::declaration() const { return *IFC4X3_RC1_IfcLaborResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLaborResource::Class() { return *IFC4X3_RC1_IfcLaborResource_type; }
Ifc4x3_rc1::IfcLaborResource::IfcLaborResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLaborResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLaborResource::IfcLaborResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLaborResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcLaborResourceType
::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value Ifc4x3_rc1::IfcLaborResourceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcLaborResourceType::setPredefinedType(::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLaborResourceType::declaration() const { return *IFC4X3_RC1_IfcLaborResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLaborResourceType::Class() { return *IFC4X3_RC1_IfcLaborResourceType_type; }
Ifc4x3_rc1::IfcLaborResourceType::IfcLaborResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLaborResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLaborResourceType::IfcLaborResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc1::IfcLaborResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLaborResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcLaborResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcLagTime
::Ifc4x3_rc1::IfcTimeOrRatioSelect* Ifc4x3_rc1::IfcLagTime::LagValue() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcTimeOrRatioSelect>(); }
void Ifc4x3_rc1::IfcLagTime::setLagValue(::Ifc4x3_rc1::IfcTimeOrRatioSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcTaskDurationEnum::Value Ifc4x3_rc1::IfcLagTime::DurationType() const {  return ::Ifc4x3_rc1::IfcTaskDurationEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcLagTime::setDurationType(::Ifc4x3_rc1::IfcTaskDurationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(v)));data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLagTime::declaration() const { return *IFC4X3_RC1_IfcLagTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLagTime::Class() { return *IFC4X3_RC1_IfcLagTime_type; }
Ifc4x3_rc1::IfcLagTime::IfcLagTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLagTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_rc1::IfcTimeOrRatioSelect* v4_LagValue, ::Ifc4x3_rc1::IfcTaskDurationEnum::Value v5_DurationType) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLagTime_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_LagValue));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_DurationType,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(v5_DurationType))));data_->setArgument(4,attr);} }

// Function implementations for IfcLamp
boost::optional< ::Ifc4x3_rc1::IfcLampTypeEnum::Value > Ifc4x3_rc1::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLampTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLamp::declaration() const { return *IFC4X3_RC1_IfcLamp_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLamp::Class() { return *IFC4X3_RC1_IfcLamp_type; }
Ifc4x3_rc1::IfcLamp::IfcLamp(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLamp_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLamp::IfcLamp(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcLampTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLamp_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcLampTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcLampType
::Ifc4x3_rc1::IfcLampTypeEnum::Value Ifc4x3_rc1::IfcLampType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcLampTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcLampType::setPredefinedType(::Ifc4x3_rc1::IfcLampTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLampTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLampType::declaration() const { return *IFC4X3_RC1_IfcLampType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLampType::Class() { return *IFC4X3_RC1_IfcLampType_type; }
Ifc4x3_rc1::IfcLampType::IfcLampType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLampType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcLampTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLampType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcLampTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcLibraryInformation
std::string Ifc4x3_rc1::IfcLibraryInformation::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcActorSelect* Ifc4x3_rc1::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcActorSelect>(); }
void Ifc4x3_rc1::IfcLibraryInformation::setPublisher(::Ifc4x3_rc1::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }

::Ifc4x3_rc1::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc1::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesLibrary_type, 5)->as<IfcRelAssociatesLibrary>(); }
::Ifc4x3_rc1::IfcLibraryReference::list::ptr Ifc4x3_rc1::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X3_RC1_IfcLibraryReference_type, 5)->as<IfcLibraryReference>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcLibraryInformation::declaration() const { return *IFC4X3_RC1_IfcLibraryInformation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLibraryInformation::Class() { return *IFC4X3_RC1_IfcLibraryInformation_type; }
Ifc4x3_rc1::IfcLibraryInformation::IfcLibraryInformation(IfcEntityInstanceData* e) : IfcExternalInformation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLibraryInformation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost::optional< std::string > v2_Version, ::Ifc4x3_rc1::IfcActorSelect* v3_Publisher, boost::optional< std::string > v4_VersionDate, boost::optional< std::string > v5_Location, boost::optional< std::string > v6_Description) : IfcExternalInformation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLibraryInformation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Version) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Version));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Publisher));data_->setArgument(2,attr);} if (v4_VersionDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_VersionDate));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Location));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Description));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcLibraryReference
boost::optional< std::string > Ifc4x3_rc1::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcLibraryInformation* Ifc4x3_rc1::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcLibraryInformation>(); }
void Ifc4x3_rc1::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_rc1::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }

::Ifc4x3_rc1::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc1::IfcLibraryReference::LibraryRefForObjects() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesLibrary_type, 5)->as<IfcRelAssociatesLibrary>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcLibraryReference::declaration() const { return *IFC4X3_RC1_IfcLibraryReference_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLibraryReference::Class() { return *IFC4X3_RC1_IfcLibraryReference_type; }
Ifc4x3_rc1::IfcLibraryReference::IfcLibraryReference(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLibraryReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcLibraryInformation* v6_ReferencedLibrary) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLibraryReference_type);  if (v1_Location) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Location));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Identification));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Language) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Language));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ReferencedLibrary));data_->setArgument(5,attr);} }

// Function implementations for IfcLightDistributionData
double Ifc4x3_rc1::IfcLightDistributionData::MainPlaneAngle() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcLightDistributionData::setMainPlaneAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::vector< double > /*[1:?]*/ Ifc4x3_rc1::IfcLightDistributionData::SecondaryPlaneAngle() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcLightDistributionData::setSecondaryPlaneAngle(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
std::vector< double > /*[1:?]*/ Ifc4x3_rc1::IfcLightDistributionData::LuminousIntensity() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcLightDistributionData::setLuminousIntensity(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightDistributionData::declaration() const { return *IFC4X3_RC1_IfcLightDistributionData_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightDistributionData::Class() { return *IFC4X3_RC1_IfcLightDistributionData_type; }
Ifc4x3_rc1::IfcLightDistributionData::IfcLightDistributionData(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightDistributionData_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightDistributionData_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MainPlaneAngle));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SecondaryPlaneAngle));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_LuminousIntensity));data_->setArgument(2,attr);} }

// Function implementations for IfcLightFixture
boost::optional< ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value > Ifc4x3_rc1::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLightFixtureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightFixture::declaration() const { return *IFC4X3_RC1_IfcLightFixture_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightFixture::Class() { return *IFC4X3_RC1_IfcLightFixture_type; }
Ifc4x3_rc1::IfcLightFixture::IfcLightFixture(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightFixture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightFixture::IfcLightFixture(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightFixture_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcLightFixtureTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcLightFixtureType
::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value Ifc4x3_rc1::IfcLightFixtureType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcLightFixtureType::setPredefinedType(::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLightFixtureTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightFixtureType::declaration() const { return *IFC4X3_RC1_IfcLightFixtureType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightFixtureType::Class() { return *IFC4X3_RC1_IfcLightFixtureType_type; }
Ifc4x3_rc1::IfcLightFixtureType::IfcLightFixtureType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightFixtureType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightFixtureType::IfcLightFixtureType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcLightFixtureTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightFixtureType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcLightFixtureTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcLightIntensityDistribution
::Ifc4x3_rc1::IfcLightDistributionCurveEnum::Value Ifc4x3_rc1::IfcLightIntensityDistribution::LightDistributionCurve() const {  return ::Ifc4x3_rc1::IfcLightDistributionCurveEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcLightIntensityDistribution::setLightDistributionCurve(::Ifc4x3_rc1::IfcLightDistributionCurveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLightDistributionCurveEnum::ToString(v)));data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcLightDistributionData >::ptr Ifc4x3_rc1::IfcLightIntensityDistribution::DistributionData() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcLightDistributionData >(); }
void Ifc4x3_rc1::IfcLightIntensityDistribution::setDistributionData(aggregate_of< ::Ifc4x3_rc1::IfcLightDistributionData >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightIntensityDistribution::declaration() const { return *IFC4X3_RC1_IfcLightIntensityDistribution_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightIntensityDistribution::Class() { return *IFC4X3_RC1_IfcLightIntensityDistribution_type; }
Ifc4x3_rc1::IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightIntensityDistribution_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x3_rc1::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, aggregate_of< ::Ifc4x3_rc1::IfcLightDistributionData >::ptr v2_DistributionData) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightIntensityDistribution_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_LightDistributionCurve,::Ifc4x3_rc1::IfcLightDistributionCurveEnum::ToString(v1_LightDistributionCurve))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_DistributionData)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcLightSource
boost::optional< std::string > Ifc4x3_rc1::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcLightSource::LightColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcLightSource::setLightColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightSource::declaration() const { return *IFC4X3_RC1_IfcLightSource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightSource::Class() { return *IFC4X3_RC1_IfcLightSource_type; }
Ifc4x3_rc1::IfcLightSource::IfcLightSource(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightSource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightSource::IfcLightSource(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightSource_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LightColour));data_->setArgument(1,attr);} if (v3_AmbientIntensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_AmbientIntensity));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Intensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Intensity));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcLightSourceAmbient


const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceAmbient::declaration() const { return *IFC4X3_RC1_IfcLightSourceAmbient_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceAmbient::Class() { return *IFC4X3_RC1_IfcLightSourceAmbient_type; }
Ifc4x3_rc1::IfcLightSourceAmbient::IfcLightSourceAmbient(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightSourceAmbient_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightSourceAmbient::IfcLightSourceAmbient(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightSourceAmbient_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LightColour));data_->setArgument(1,attr);} if (v3_AmbientIntensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_AmbientIntensity));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Intensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Intensity));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcLightSourceDirectional
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcLightSourceDirectional::Orientation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcLightSourceDirectional::setOrientation(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceDirectional::declaration() const { return *IFC4X3_RC1_IfcLightSourceDirectional_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceDirectional::Class() { return *IFC4X3_RC1_IfcLightSourceDirectional_type; }
Ifc4x3_rc1::IfcLightSourceDirectional::IfcLightSourceDirectional(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightSourceDirectional_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightSourceDirectional::IfcLightSourceDirectional(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc1::IfcDirection* v5_Orientation) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightSourceDirectional_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LightColour));data_->setArgument(1,attr);} if (v3_AmbientIntensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_AmbientIntensity));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Intensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Intensity));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Orientation));data_->setArgument(4,attr);} }

// Function implementations for IfcLightSourceGoniometric
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcLightSourceGoniometric::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcLightSourceGoniometric::setPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcLightSourceGoniometric::ColourAppearance() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcLightSourceGoniometric::setColourAppearance(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcLightSourceGoniometric::ColourTemperature() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcLightSourceGoniometric::setColourTemperature(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
double Ifc4x3_rc1::IfcLightSourceGoniometric::LuminousFlux() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcLightSourceGoniometric::setLuminousFlux(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcLightEmissionSourceEnum::Value Ifc4x3_rc1::IfcLightSourceGoniometric::LightEmissionSource() const {  return ::Ifc4x3_rc1::IfcLightEmissionSourceEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcLightSourceGoniometric::setLightEmissionSource(::Ifc4x3_rc1::IfcLightEmissionSourceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLightEmissionSourceEnum::ToString(v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcLightDistributionDataSourceSelect* Ifc4x3_rc1::IfcLightSourceGoniometric::LightDistributionDataSource() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcLightDistributionDataSourceSelect>(); }
void Ifc4x3_rc1::IfcLightSourceGoniometric::setLightDistributionDataSource(::Ifc4x3_rc1::IfcLightDistributionDataSourceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceGoniometric::declaration() const { return *IFC4X3_RC1_IfcLightSourceGoniometric_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceGoniometric::Class() { return *IFC4X3_RC1_IfcLightSourceGoniometric_type; }
Ifc4x3_rc1::IfcLightSourceGoniometric::IfcLightSourceGoniometric(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightSourceGoniometric_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightSourceGoniometric::IfcLightSourceGoniometric(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc1::IfcAxis2Placement3D* v5_Position, ::Ifc4x3_rc1::IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4x3_rc1::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4x3_rc1::IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightSourceGoniometric_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LightColour));data_->setArgument(1,attr);} if (v3_AmbientIntensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_AmbientIntensity));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Intensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Intensity));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Position));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ColourAppearance));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ColourTemperature));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_LuminousFlux));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_LightEmissionSource,::Ifc4x3_rc1::IfcLightEmissionSourceEnum::ToString(v9_LightEmissionSource))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_LightDistributionDataSource));data_->setArgument(9,attr);} }

// Function implementations for IfcLightSourcePositional
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcLightSourcePositional::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcLightSourcePositional::setPosition(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcLightSourcePositional::Radius() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcLightSourcePositional::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcLightSourcePositional::ConstantAttenuation() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcLightSourcePositional::setConstantAttenuation(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
double Ifc4x3_rc1::IfcLightSourcePositional::DistanceAttenuation() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcLightSourcePositional::setDistanceAttenuation(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
double Ifc4x3_rc1::IfcLightSourcePositional::QuadricAttenuation() const {  double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcLightSourcePositional::setQuadricAttenuation(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightSourcePositional::declaration() const { return *IFC4X3_RC1_IfcLightSourcePositional_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightSourcePositional::Class() { return *IFC4X3_RC1_IfcLightSourcePositional_type; }
Ifc4x3_rc1::IfcLightSourcePositional::IfcLightSourcePositional(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightSourcePositional_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc1::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightSourcePositional_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LightColour));data_->setArgument(1,attr);} if (v3_AmbientIntensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_AmbientIntensity));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Intensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Intensity));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Position));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Radius));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ConstantAttenuation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_DistanceAttenuation));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_QuadricAttenuation));data_->setArgument(8,attr);} }

// Function implementations for IfcLightSourceSpot
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcLightSourceSpot::Orientation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcLightSourceSpot::setOrientation(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
double Ifc4x3_rc1::IfcLightSourceSpot::SpreadAngle() const {  double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
double Ifc4x3_rc1::IfcLightSourceSpot::BeamWidthAngle() const {  double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcLightSourceSpot::setBeamWidthAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceSpot::declaration() const { return *IFC4X3_RC1_IfcLightSourceSpot_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLightSourceSpot::Class() { return *IFC4X3_RC1_IfcLightSourceSpot_type; }
Ifc4x3_rc1::IfcLightSourceSpot::IfcLightSourceSpot(IfcEntityInstanceData* e) : IfcLightSourcePositional((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLightSourceSpot_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLightSourceSpot::IfcLightSourceSpot(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc1::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4x3_rc1::IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle) : IfcLightSourcePositional((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLightSourceSpot_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LightColour));data_->setArgument(1,attr);} if (v3_AmbientIntensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_AmbientIntensity));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Intensity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Intensity));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Position));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Radius));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ConstantAttenuation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_DistanceAttenuation));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_QuadricAttenuation));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_Orientation));data_->setArgument(9,attr);} if (v11_ConcentrationExponent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_ConcentrationExponent));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_SpreadAngle));data_->setArgument(11,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v13_BeamWidthAngle));data_->setArgument(12,attr);} }

// Function implementations for IfcLine
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcLine::Pnt() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcLine::setPnt(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcVector* Ifc4x3_rc1::IfcLine::Dir() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcVector>(); }
void Ifc4x3_rc1::IfcLine::setDir(::Ifc4x3_rc1::IfcVector* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLine::declaration() const { return *IFC4X3_RC1_IfcLine_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLine::Class() { return *IFC4X3_RC1_IfcLine_type; }
Ifc4x3_rc1::IfcLine::IfcLine(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLine::IfcLine(::Ifc4x3_rc1::IfcCartesianPoint* v1_Pnt, ::Ifc4x3_rc1::IfcVector* v2_Dir) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLine_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Pnt));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Dir));data_->setArgument(1,attr);} }

// Function implementations for IfcLineSegment2D


const IfcParse::entity& Ifc4x3_rc1::IfcLineSegment2D::declaration() const { return *IFC4X3_RC1_IfcLineSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLineSegment2D::Class() { return *IFC4X3_RC1_IfcLineSegment2D_type; }
Ifc4x3_rc1::IfcLineSegment2D::IfcLineSegment2D(IfcEntityInstanceData* e) : IfcCurveSegment2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLineSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLineSegment2D::IfcLineSegment2D(::Ifc4x3_rc1::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength) : IfcCurveSegment2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLineSegment2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_StartPoint));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartDirection));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SegmentLength));data_->setArgument(2,attr);} }

// Function implementations for IfcLinearAxisWithInclination
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcLinearAxisWithInclination::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcLinearAxisWithInclination::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcAxisLateralInclination* Ifc4x3_rc1::IfcLinearAxisWithInclination::Inclinating() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAxisLateralInclination>(); }
void Ifc4x3_rc1::IfcLinearAxisWithInclination::setInclinating(::Ifc4x3_rc1::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLinearAxisWithInclination::declaration() const { return *IFC4X3_RC1_IfcLinearAxisWithInclination_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLinearAxisWithInclination::Class() { return *IFC4X3_RC1_IfcLinearAxisWithInclination_type; }
Ifc4x3_rc1::IfcLinearAxisWithInclination::IfcLinearAxisWithInclination(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLinearAxisWithInclination_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLinearAxisWithInclination::IfcLinearAxisWithInclination(::Ifc4x3_rc1::IfcCurve* v1_Directrix, ::Ifc4x3_rc1::IfcAxisLateralInclination* v2_Inclinating) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearAxisWithInclination_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Directrix));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Inclinating));data_->setArgument(1,attr);} }

// Function implementations for IfcLinearPlacement
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcLinearPlacement::PlacementMeasuredAlong() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcLinearPlacement::setPlacementMeasuredAlong(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcDistanceExpression* Ifc4x3_rc1::IfcLinearPlacement::Distance() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcDistanceExpression>(); }
void Ifc4x3_rc1::IfcLinearPlacement::setDistance(::Ifc4x3_rc1::IfcDistanceExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcOrientationExpression* Ifc4x3_rc1::IfcLinearPlacement::Orientation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcOrientationExpression>(); }
void Ifc4x3_rc1::IfcLinearPlacement::setOrientation(::Ifc4x3_rc1::IfcOrientationExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcLinearPlacement::CartesianPosition() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcLinearPlacement::setCartesianPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLinearPlacement::declaration() const { return *IFC4X3_RC1_IfcLinearPlacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLinearPlacement::Class() { return *IFC4X3_RC1_IfcLinearPlacement_type; }
Ifc4x3_rc1::IfcLinearPlacement::IfcLinearPlacement(IfcEntityInstanceData* e) : IfcObjectPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLinearPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLinearPlacement::IfcLinearPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc1::IfcCurve* v2_PlacementMeasuredAlong, ::Ifc4x3_rc1::IfcDistanceExpression* v3_Distance, ::Ifc4x3_rc1::IfcOrientationExpression* v4_Orientation, ::Ifc4x3_rc1::IfcAxis2Placement3D* v5_CartesianPosition) : IfcObjectPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PlacementRelTo));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PlacementMeasuredAlong));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Distance));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Orientation));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CartesianPosition));data_->setArgument(4,attr);} }

// Function implementations for IfcLinearPlacementWithInclination
::Ifc4x3_rc1::IfcAxisLateralInclination* Ifc4x3_rc1::IfcLinearPlacementWithInclination::Inclinating() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcAxisLateralInclination>(); }
void Ifc4x3_rc1::IfcLinearPlacementWithInclination::setInclinating(::Ifc4x3_rc1::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLinearPlacementWithInclination::declaration() const { return *IFC4X3_RC1_IfcLinearPlacementWithInclination_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLinearPlacementWithInclination::Class() { return *IFC4X3_RC1_IfcLinearPlacementWithInclination_type; }
Ifc4x3_rc1::IfcLinearPlacementWithInclination::IfcLinearPlacementWithInclination(IfcEntityInstanceData* e) : IfcLinearPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLinearPlacementWithInclination_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLinearPlacementWithInclination::IfcLinearPlacementWithInclination(::Ifc4x3_rc1::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc1::IfcCurve* v2_PlacementMeasuredAlong, ::Ifc4x3_rc1::IfcDistanceExpression* v3_Distance, ::Ifc4x3_rc1::IfcOrientationExpression* v4_Orientation, ::Ifc4x3_rc1::IfcAxis2Placement3D* v5_CartesianPosition, ::Ifc4x3_rc1::IfcAxisLateralInclination* v6_Inclinating) : IfcLinearPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearPlacementWithInclination_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PlacementRelTo));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PlacementMeasuredAlong));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Distance));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Orientation));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CartesianPosition));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Inclinating));data_->setArgument(5,attr);} }

// Function implementations for IfcLinearPositioningElement
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcLinearPositioningElement::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcLinearPositioningElement::setAxis(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLinearPositioningElement::declaration() const { return *IFC4X3_RC1_IfcLinearPositioningElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLinearPositioningElement::Class() { return *IFC4X3_RC1_IfcLinearPositioningElement_type; }
Ifc4x3_rc1::IfcLinearPositioningElement::IfcLinearPositioningElement(IfcEntityInstanceData* e) : IfcPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLinearPositioningElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLinearPositioningElement::IfcLinearPositioningElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcCurve* v8_Axis) : IfcPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearPositioningElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Axis));data_->setArgument(7,attr);} }

// Function implementations for IfcLinearSpanPlacement
double Ifc4x3_rc1::IfcLinearSpanPlacement::Span() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcLinearSpanPlacement::setSpan(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLinearSpanPlacement::declaration() const { return *IFC4X3_RC1_IfcLinearSpanPlacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLinearSpanPlacement::Class() { return *IFC4X3_RC1_IfcLinearSpanPlacement_type; }
Ifc4x3_rc1::IfcLinearSpanPlacement::IfcLinearSpanPlacement(IfcEntityInstanceData* e) : IfcLinearPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLinearSpanPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLinearSpanPlacement::IfcLinearSpanPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc1::IfcCurve* v2_PlacementMeasuredAlong, ::Ifc4x3_rc1::IfcDistanceExpression* v3_Distance, ::Ifc4x3_rc1::IfcOrientationExpression* v4_Orientation, ::Ifc4x3_rc1::IfcAxis2Placement3D* v5_CartesianPosition, double v6_Span) : IfcLinearPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLinearSpanPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PlacementRelTo));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PlacementMeasuredAlong));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Distance));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Orientation));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CartesianPosition));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Span));data_->setArgument(5,attr);} }

// Function implementations for IfcLiquidTerminal
boost::optional< ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_rc1::IfcLiquidTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLiquidTerminal::declaration() const { return *IFC4X3_RC1_IfcLiquidTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLiquidTerminal::Class() { return *IFC4X3_RC1_IfcLiquidTerminal_type; }
Ifc4x3_rc1::IfcLiquidTerminal::IfcLiquidTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLiquidTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLiquidTerminal::IfcLiquidTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLiquidTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcLiquidTerminalType
::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value Ifc4x3_rc1::IfcLiquidTerminalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcLiquidTerminalType::setPredefinedType(::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLiquidTerminalType::declaration() const { return *IFC4X3_RC1_IfcLiquidTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLiquidTerminalType::Class() { return *IFC4X3_RC1_IfcLiquidTerminalType_type; }
Ifc4x3_rc1::IfcLiquidTerminalType::IfcLiquidTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLiquidTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLiquidTerminalType::IfcLiquidTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLiquidTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcLiquidTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcLocalPlacement
::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcLocalPlacement::RelativePlacement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(); }
void Ifc4x3_rc1::IfcLocalPlacement::setRelativePlacement(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcLocalPlacement::declaration() const { return *IFC4X3_RC1_IfcLocalPlacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLocalPlacement::Class() { return *IFC4X3_RC1_IfcLocalPlacement_type; }
Ifc4x3_rc1::IfcLocalPlacement::IfcLocalPlacement(IfcEntityInstanceData* e) : IfcObjectPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLocalPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLocalPlacement::IfcLocalPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc1::IfcAxis2Placement* v2_RelativePlacement) : IfcObjectPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLocalPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PlacementRelTo));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RelativePlacement));data_->setArgument(1,attr);} }

// Function implementations for IfcLoop


const IfcParse::entity& Ifc4x3_rc1::IfcLoop::declaration() const { return *IFC4X3_RC1_IfcLoop_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcLoop::Class() { return *IFC4X3_RC1_IfcLoop_type; }
Ifc4x3_rc1::IfcLoop::IfcLoop(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcLoop::IfcLoop() : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcLoop_type);  }

// Function implementations for IfcManifoldSolidBrep
::Ifc4x3_rc1::IfcClosedShell* Ifc4x3_rc1::IfcManifoldSolidBrep::Outer() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcClosedShell>(); }
void Ifc4x3_rc1::IfcManifoldSolidBrep::setOuter(::Ifc4x3_rc1::IfcClosedShell* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcManifoldSolidBrep::declaration() const { return *IFC4X3_RC1_IfcManifoldSolidBrep_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcManifoldSolidBrep::Class() { return *IFC4X3_RC1_IfcManifoldSolidBrep_type; }
Ifc4x3_rc1::IfcManifoldSolidBrep::IfcManifoldSolidBrep(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcManifoldSolidBrep_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcManifoldSolidBrep::IfcManifoldSolidBrep(::Ifc4x3_rc1::IfcClosedShell* v1_Outer) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcManifoldSolidBrep_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);} }

// Function implementations for IfcMapConversion
double Ifc4x3_rc1::IfcMapConversion::Eastings() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcMapConversion::setEastings(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcMapConversion::Northings() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcMapConversion::OrthogonalHeight() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMapConversion::declaration() const { return *IFC4X3_RC1_IfcMapConversion_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMapConversion::Class() { return *IFC4X3_RC1_IfcMapConversion_type; }
Ifc4x3_rc1::IfcMapConversion::IfcMapConversion(IfcEntityInstanceData* e) : IfcCoordinateOperation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMapConversion_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMapConversion::IfcMapConversion(::Ifc4x3_rc1::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMapConversion_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SourceCRS));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TargetCRS));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Eastings));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Northings));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_OrthogonalHeight));data_->setArgument(4,attr);} if (v6_XAxisAbscissa) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_XAxisAbscissa));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_XAxisOrdinate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_XAxisOrdinate));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Scale) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Scale));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcMappedItem
::Ifc4x3_rc1::IfcRepresentationMap* Ifc4x3_rc1::IfcMappedItem::MappingSource() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcRepresentationMap>(); }
void Ifc4x3_rc1::IfcMappedItem::setMappingSource(::Ifc4x3_rc1::IfcRepresentationMap* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCartesianTransformationOperator* Ifc4x3_rc1::IfcMappedItem::MappingTarget() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCartesianTransformationOperator>(); }
void Ifc4x3_rc1::IfcMappedItem::setMappingTarget(::Ifc4x3_rc1::IfcCartesianTransformationOperator* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMappedItem::declaration() const { return *IFC4X3_RC1_IfcMappedItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMappedItem::Class() { return *IFC4X3_RC1_IfcMappedItem_type; }
Ifc4x3_rc1::IfcMappedItem::IfcMappedItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMappedItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMappedItem::IfcMappedItem(::Ifc4x3_rc1::IfcRepresentationMap* v1_MappingSource, ::Ifc4x3_rc1::IfcCartesianTransformationOperator* v2_MappingTarget) : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMappedItem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MappingSource));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_MappingTarget));data_->setArgument(1,attr);} }

// Function implementations for IfcMarineFacility
::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::Value Ifc4x3_rc1::IfcMarineFacility::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMarineFacility::setPredefinedType(::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMarineFacility::declaration() const { return *IFC4X3_RC1_IfcMarineFacility_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMarineFacility::Class() { return *IFC4X3_RC1_IfcMarineFacility_type; }
Ifc4x3_rc1::IfcMarineFacility::IfcMarineFacility(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMarineFacility_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::Value v10_PredefinedType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMarineFacility_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMarineFacilityTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMaterial
std::string Ifc4x3_rc1::IfcMaterial::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }

::Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_rc1::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type, 3)->as<IfcMaterialDefinitionRepresentation>(); }
::Ifc4x3_rc1::IfcMaterialRelationship::list::ptr Ifc4x3_rc1::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialRelationship_type, 3)->as<IfcMaterialRelationship>(); }
::Ifc4x3_rc1::IfcMaterialRelationship::list::ptr Ifc4x3_rc1::IfcMaterial::RelatesTo() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialRelationship_type, 2)->as<IfcMaterialRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcMaterial::declaration() const { return *IFC4X3_RC1_IfcMaterial_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterial::Class() { return *IFC4X3_RC1_IfcMaterial_type; }
Ifc4x3_rc1::IfcMaterial::IfcMaterial(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterial_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterial::IfcMaterial(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_Category) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterial_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Category));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcMaterialClassificationRelationship
aggregate_of_instance::ptr Ifc4x3_rc1::IfcMaterialClassificationRelationship::MaterialClassifications() const {  aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMaterialClassificationRelationship::setMaterialClassifications(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialClassificationRelationship::ClassifiedMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcMaterial>(); }
void Ifc4x3_rc1::IfcMaterialClassificationRelationship::setClassifiedMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialClassificationRelationship::declaration() const { return *IFC4X3_RC1_IfcMaterialClassificationRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialClassificationRelationship::Class() { return *IFC4X3_RC1_IfcMaterialClassificationRelationship_type; }
Ifc4x3_rc1::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialClassificationRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(aggregate_of_instance::ptr v1_MaterialClassifications, ::Ifc4x3_rc1::IfcMaterial* v2_ClassifiedMaterial) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialClassificationRelationship_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MaterialClassifications));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ClassifiedMaterial));data_->setArgument(1,attr);} }

// Function implementations for IfcMaterialConstituent
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialConstituent::Material() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcMaterial>(); }
void Ifc4x3_rc1::IfcMaterialConstituent::setMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }

::Ifc4x3_rc1::IfcMaterialConstituentSet::list::ptr Ifc4x3_rc1::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialConstituentSet_type, 2)->as<IfcMaterialConstituentSet>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcMaterialConstituent::declaration() const { return *IFC4X3_RC1_IfcMaterialConstituent_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialConstituent::Class() { return *IFC4X3_RC1_IfcMaterialConstituent_type; }
Ifc4x3_rc1::IfcMaterialConstituent::IfcMaterialConstituent(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialConstituent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcMaterial* v3_Material, boost::optional< double > v4_Fraction, boost::optional< std::string > v5_Category) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialConstituent_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Material));data_->setArgument(2,attr);} if (v4_Fraction) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Fraction));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Category));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcMaterialConstituentSet
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcMaterialConstituent >::ptr > Ifc4x3_rc1::IfcMaterialConstituentSet::MaterialConstituents() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcMaterialConstituent >(); }
void Ifc4x3_rc1::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialConstituentSet::declaration() const { return *IFC4X3_RC1_IfcMaterialConstituentSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialConstituentSet::Class() { return *IFC4X3_RC1_IfcMaterialConstituentSet_type; }
Ifc4x3_rc1::IfcMaterialConstituentSet::IfcMaterialConstituentSet(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialConstituentSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialConstituentSet::IfcMaterialConstituentSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcMaterialConstituent >::ptr > v3_MaterialConstituents) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialConstituentSet_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_MaterialConstituents) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_MaterialConstituents)->generalize());data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcMaterialDefinition

::Ifc4x3_rc1::IfcRelAssociatesMaterial::list::ptr Ifc4x3_rc1::IfcMaterialDefinition::AssociatedTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesMaterial_type, 5)->as<IfcRelAssociatesMaterial>(); }
::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcMaterialDefinition::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc1::IfcMaterialProperties::list::ptr Ifc4x3_rc1::IfcMaterialDefinition::HasProperties() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialProperties_type, 3)->as<IfcMaterialProperties>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcMaterialDefinition::declaration() const { return *IFC4X3_RC1_IfcMaterialDefinition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialDefinition::Class() { return *IFC4X3_RC1_IfcMaterialDefinition_type; }
Ifc4x3_rc1::IfcMaterialDefinition::IfcMaterialDefinition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialDefinition::IfcMaterialDefinition() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialDefinition_type);  }

// Function implementations for IfcMaterialDefinitionRepresentation
::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::RepresentedMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMaterial>(); }
void Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::setRepresentedMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::declaration() const { return *IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::Class() { return *IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type; }
Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(IfcEntityInstanceData* e) : IfcProductRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr v3_Representations, ::Ifc4x3_rc1::IfcMaterial* v4_RepresentedMaterial) : IfcProductRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialDefinitionRepresentation_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Representations)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RepresentedMaterial));data_->setArgument(3,attr);} }

// Function implementations for IfcMaterialLayer
::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialLayer::Material() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcMaterial>(); }
void Ifc4x3_rc1::IfcMaterialLayer::setMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcMaterialLayer::LayerThickness() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< boost::logic::tribool > Ifc4x3_rc1::IfcMaterialLayer::IsVentilated() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } boost::logic::tribool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcMaterialLayerSet::list::ptr Ifc4x3_rc1::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialLayerSet_type, 0)->as<IfcMaterialLayerSet>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayer::declaration() const { return *IFC4X3_RC1_IfcMaterialLayer_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayer::Class() { return *IFC4X3_RC1_IfcMaterialLayer_type; }
Ifc4x3_rc1::IfcMaterialLayer::IfcMaterialLayer(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialLayer_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialLayer_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Material));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LayerThickness));data_->setArgument(1,attr);} if (v3_IsVentilated) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_IsVentilated));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Name));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Description));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Category));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Priority) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Priority));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcMaterialLayerSet
aggregate_of< ::Ifc4x3_rc1::IfcMaterialLayer >::ptr Ifc4x3_rc1::IfcMaterialLayerSet::MaterialLayers() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcMaterialLayer >(); }
void Ifc4x3_rc1::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_rc1::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerSet::declaration() const { return *IFC4X3_RC1_IfcMaterialLayerSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerSet::Class() { return *IFC4X3_RC1_IfcMaterialLayerSet_type; }
Ifc4x3_rc1::IfcMaterialLayerSet::IfcMaterialLayerSet(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialLayerSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialLayerSet::IfcMaterialLayerSet(aggregate_of< ::Ifc4x3_rc1::IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName, boost::optional< std::string > v3_Description) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialLayerSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MaterialLayers)->generalize());data_->setArgument(0,attr);} if (v2_LayerSetName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_LayerSetName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcMaterialLayerSetUsage
::Ifc4x3_rc1::IfcMaterialLayerSet* Ifc4x3_rc1::IfcMaterialLayerSetUsage::ForLayerSet() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcMaterialLayerSet>(); }
void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setForLayerSet(::Ifc4x3_rc1::IfcMaterialLayerSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value Ifc4x3_rc1::IfcMaterialLayerSetUsage::LayerSetDirection() const {  return ::Ifc4x3_rc1::IfcLayerSetDirectionEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setLayerSetDirection(::Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLayerSetDirectionEnum::ToString(v)));data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcDirectionSenseEnum::Value Ifc4x3_rc1::IfcMaterialLayerSetUsage::DirectionSense() const {  return ::Ifc4x3_rc1::IfcDirectionSenseEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_rc1::IfcDirectionSenseEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDirectionSenseEnum::ToString(v)));data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X3_RC1_IfcMaterialLayerSetUsage_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerSetUsage::Class() { return *IFC4X3_RC1_IfcMaterialLayerSetUsage_type; }
Ifc4x3_rc1::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcEntityInstanceData* e) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialLayerSetUsage_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(::Ifc4x3_rc1::IfcMaterialLayerSet* v1_ForLayerSet, ::Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4x3_rc1::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, boost::optional< double > v5_ReferenceExtent) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialLayerSetUsage_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ForLayerSet));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_LayerSetDirection,::Ifc4x3_rc1::IfcLayerSetDirectionEnum::ToString(v2_LayerSetDirection))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_DirectionSense,::Ifc4x3_rc1::IfcDirectionSenseEnum::ToString(v3_DirectionSense))));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_OffsetFromReferenceLine));data_->setArgument(3,attr);} if (v5_ReferenceExtent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ReferenceExtent));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcMaterialLayerWithOffsets
::Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value Ifc4x3_rc1::IfcMaterialLayerWithOffsets::OffsetDirection() const {  return ::Ifc4x3_rc1::IfcLayerSetDirectionEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcMaterialLayerWithOffsets::setOffsetDirection(::Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLayerSetDirectionEnum::ToString(v)));data_->setArgument(7,attr);} }
std::vector< double > /*[1:2]*/ Ifc4x3_rc1::IfcMaterialLayerWithOffsets::OffsetValues() const {  std::vector< double > /*[1:2]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcMaterialLayerWithOffsets::setOffsetValues(std::vector< double > /*[1:2]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerWithOffsets::declaration() const { return *IFC4X3_RC1_IfcMaterialLayerWithOffsets_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialLayerWithOffsets::Class() { return *IFC4X3_RC1_IfcMaterialLayerWithOffsets_type; }
Ifc4x3_rc1::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(IfcEntityInstanceData* e) : IfcMaterialLayer((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialLayerWithOffsets_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues) : IfcMaterialLayer((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialLayerWithOffsets_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Material));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LayerThickness));data_->setArgument(1,attr);} if (v3_IsVentilated) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_IsVentilated));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Name));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Description));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Category));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Priority) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Priority));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_OffsetDirection,::Ifc4x3_rc1::IfcLayerSetDirectionEnum::ToString(v8_OffsetDirection))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_OffsetValues));data_->setArgument(8,attr);} }

// Function implementations for IfcMaterialList
aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr Ifc4x3_rc1::IfcMaterialList::Materials() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcMaterial >(); }
void Ifc4x3_rc1::IfcMaterialList::setMaterials(aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialList::declaration() const { return *IFC4X3_RC1_IfcMaterialList_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialList::Class() { return *IFC4X3_RC1_IfcMaterialList_type; }
Ifc4x3_rc1::IfcMaterialList::IfcMaterialList(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr v1_Materials) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialList_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Materials)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcMaterialProfile
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcMaterial>(); }
void Ifc4x3_rc1::IfcMaterialProfile::setMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcMaterialProfile::Profile() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcMaterialProfile::setProfile(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }

::Ifc4x3_rc1::IfcMaterialProfileSet::list::ptr Ifc4x3_rc1::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X3_RC1_IfcMaterialProfileSet_type, 2)->as<IfcMaterialProfileSet>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfile::declaration() const { return *IFC4X3_RC1_IfcMaterialProfile_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfile::Class() { return *IFC4X3_RC1_IfcMaterialProfile_type; }
Ifc4x3_rc1::IfcMaterialProfile::IfcMaterialProfile(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialProfile_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcMaterial* v3_Material, ::Ifc4x3_rc1::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialProfile_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Material));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Profile));data_->setArgument(3,attr);} if (v5_Priority) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Priority));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Category));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcMaterialProfileSet
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcMaterialProfile >::ptr Ifc4x3_rc1::IfcMaterialProfileSet::MaterialProfiles() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcMaterialProfile >(); }
void Ifc4x3_rc1::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_rc1::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcCompositeProfileDef* Ifc4x3_rc1::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCompositeProfileDef>(); }
void Ifc4x3_rc1::IfcMaterialProfileSet::setCompositeProfile(::Ifc4x3_rc1::IfcCompositeProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSet::declaration() const { return *IFC4X3_RC1_IfcMaterialProfileSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSet::Class() { return *IFC4X3_RC1_IfcMaterialProfileSet_type; }
Ifc4x3_rc1::IfcMaterialProfileSet::IfcMaterialProfileSet(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialProfileSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcMaterialProfile >::ptr v3_MaterialProfiles, ::Ifc4x3_rc1::IfcCompositeProfileDef* v4_CompositeProfile) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialProfileSet_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_MaterialProfiles)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_CompositeProfile));data_->setArgument(3,attr);} }

// Function implementations for IfcMaterialProfileSetUsage
::Ifc4x3_rc1::IfcMaterialProfileSet* Ifc4x3_rc1::IfcMaterialProfileSetUsage::ForProfileSet() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcMaterialProfileSet>(); }
void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_rc1::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X3_RC1_IfcMaterialProfileSetUsage_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSetUsage::Class() { return *IFC4X3_RC1_IfcMaterialProfileSetUsage_type; }
Ifc4x3_rc1::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(IfcEntityInstanceData* e) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialProfileSetUsage_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_rc1::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialProfileSetUsage_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ForProfileSet));data_->setArgument(0,attr);} if (v2_CardinalPoint) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_CardinalPoint));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_ReferenceExtent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_ReferenceExtent));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcMaterialProfileSetUsageTapering
::Ifc4x3_rc1::IfcMaterialProfileSet* Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMaterialProfileSet>(); }
void Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_rc1::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X3_RC1_IfcMaterialProfileSetUsageTapering_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::Class() { return *IFC4X3_RC1_IfcMaterialProfileSetUsageTapering_type; }
Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(IfcEntityInstanceData* e) : IfcMaterialProfileSetUsage((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialProfileSetUsageTapering_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(::Ifc4x3_rc1::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent, ::Ifc4x3_rc1::IfcMaterialProfileSet* v4_ForProfileEndSet, boost::optional< int > v5_CardinalEndPoint) : IfcMaterialProfileSetUsage((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialProfileSetUsageTapering_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ForProfileSet));data_->setArgument(0,attr);} if (v2_CardinalPoint) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_CardinalPoint));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_ReferenceExtent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_ReferenceExtent));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ForProfileEndSet));data_->setArgument(3,attr);} if (v5_CardinalEndPoint) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_CardinalEndPoint));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcMaterialProfileWithOffsets
std::vector< double > /*[1:2]*/ Ifc4x3_rc1::IfcMaterialProfileWithOffsets::OffsetValues() const {  std::vector< double > /*[1:2]*/ v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcMaterialProfileWithOffsets::setOffsetValues(std::vector< double > /*[1:2]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileWithOffsets::declaration() const { return *IFC4X3_RC1_IfcMaterialProfileWithOffsets_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProfileWithOffsets::Class() { return *IFC4X3_RC1_IfcMaterialProfileWithOffsets_type; }
Ifc4x3_rc1::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(IfcEntityInstanceData* e) : IfcMaterialProfile((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialProfileWithOffsets_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcMaterial* v3_Material, ::Ifc4x3_rc1::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category, std::vector< double > /*[1:2]*/ v7_OffsetValues) : IfcMaterialProfile((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialProfileWithOffsets_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Material));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Profile));data_->setArgument(3,attr);} if (v5_Priority) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Priority));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Category) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Category));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_OffsetValues));data_->setArgument(6,attr);} }

// Function implementations for IfcMaterialProperties
::Ifc4x3_rc1::IfcMaterialDefinition* Ifc4x3_rc1::IfcMaterialProperties::Material() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcMaterialDefinition>(); }
void Ifc4x3_rc1::IfcMaterialProperties::setMaterial(::Ifc4x3_rc1::IfcMaterialDefinition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProperties::declaration() const { return *IFC4X3_RC1_IfcMaterialProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialProperties::Class() { return *IFC4X3_RC1_IfcMaterialProperties_type; }
Ifc4x3_rc1::IfcMaterialProperties::IfcMaterialProperties(IfcEntityInstanceData* e) : IfcExtendedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialProperties::IfcMaterialProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v3_Properties, ::Ifc4x3_rc1::IfcMaterialDefinition* v4_Material) : IfcExtendedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialProperties_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Properties)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Material));data_->setArgument(3,attr);} }

// Function implementations for IfcMaterialRelationship
::Ifc4x3_rc1::IfcMaterial* Ifc4x3_rc1::IfcMaterialRelationship::RelatingMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcMaterial>(); }
void Ifc4x3_rc1::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_rc1::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr Ifc4x3_rc1::IfcMaterialRelationship::RelatedMaterials() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcMaterial >(); }
void Ifc4x3_rc1::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMaterialRelationship::declaration() const { return *IFC4X3_RC1_IfcMaterialRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialRelationship::Class() { return *IFC4X3_RC1_IfcMaterialRelationship_type; }
Ifc4x3_rc1::IfcMaterialRelationship::IfcMaterialRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialRelationship::IfcMaterialRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcMaterial* v3_RelatingMaterial, aggregate_of< ::Ifc4x3_rc1::IfcMaterial >::ptr v4_RelatedMaterials, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingMaterial));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedMaterials)->generalize());data_->setArgument(3,attr);} if (v5_Expression) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Expression));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcMaterialUsageDefinition

::Ifc4x3_rc1::IfcRelAssociatesMaterial::list::ptr Ifc4x3_rc1::IfcMaterialUsageDefinition::AssociatedTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociatesMaterial_type, 5)->as<IfcRelAssociatesMaterial>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcMaterialUsageDefinition::declaration() const { return *IFC4X3_RC1_IfcMaterialUsageDefinition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMaterialUsageDefinition::Class() { return *IFC4X3_RC1_IfcMaterialUsageDefinition_type; }
Ifc4x3_rc1::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMaterialUsageDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMaterialUsageDefinition_type);  }

// Function implementations for IfcMeasureWithUnit
::Ifc4x3_rc1::IfcValue* Ifc4x3_rc1::IfcMeasureWithUnit::ValueComponent() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcValue>(); }
void Ifc4x3_rc1::IfcMeasureWithUnit::setValueComponent(::Ifc4x3_rc1::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcMeasureWithUnit::UnitComponent() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcMeasureWithUnit::setUnitComponent(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMeasureWithUnit::declaration() const { return *IFC4X3_RC1_IfcMeasureWithUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMeasureWithUnit::Class() { return *IFC4X3_RC1_IfcMeasureWithUnit_type; }
Ifc4x3_rc1::IfcMeasureWithUnit::IfcMeasureWithUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMeasureWithUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_rc1::IfcValue* v1_ValueComponent, ::Ifc4x3_rc1::IfcUnit* v2_UnitComponent) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMeasureWithUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ValueComponent));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_UnitComponent));data_->setArgument(1,attr);} }

// Function implementations for IfcMechanicalFastener
boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_rc1::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMechanicalFastener::declaration() const { return *IFC4X3_RC1_IfcMechanicalFastener_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMechanicalFastener::Class() { return *IFC4X3_RC1_IfcMechanicalFastener_type; }
Ifc4x3_rc1::IfcMechanicalFastener::IfcMechanicalFastener(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMechanicalFastener_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength, boost::optional< ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMechanicalFastener_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_NominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_NominalDiameter));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_NominalLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_NominalLength));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcMechanicalFastenerType
::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc1::IfcMechanicalFastenerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMechanicalFastenerType::declaration() const { return *IFC4X3_RC1_IfcMechanicalFastenerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMechanicalFastenerType::Class() { return *IFC4X3_RC1_IfcMechanicalFastenerType_type; }
Ifc4x3_rc1::IfcMechanicalFastenerType::IfcMechanicalFastenerType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMechanicalFastenerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_NominalLength) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMechanicalFastenerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMechanicalFastenerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_NominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_NominalDiameter));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_NominalLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_NominalLength));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } }

// Function implementations for IfcMedicalDevice
boost::optional< ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_rc1::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMedicalDevice::declaration() const { return *IFC4X3_RC1_IfcMedicalDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMedicalDevice::Class() { return *IFC4X3_RC1_IfcMedicalDevice_type; }
Ifc4x3_rc1::IfcMedicalDevice::IfcMedicalDevice(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMedicalDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMedicalDevice::IfcMedicalDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMedicalDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcMedicalDeviceType
::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value Ifc4x3_rc1::IfcMedicalDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMedicalDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMedicalDeviceType::declaration() const { return *IFC4X3_RC1_IfcMedicalDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMedicalDeviceType::Class() { return *IFC4X3_RC1_IfcMedicalDeviceType_type; }
Ifc4x3_rc1::IfcMedicalDeviceType::IfcMedicalDeviceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMedicalDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMedicalDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMedicalDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMember
boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > Ifc4x3_rc1::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMember::declaration() const { return *IFC4X3_RC1_IfcMember_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMember::Class() { return *IFC4X3_RC1_IfcMember_type; }
Ifc4x3_rc1::IfcMember::IfcMember(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMember::IfcMember(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMember_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcMemberStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcMemberStandardCase::declaration() const { return *IFC4X3_RC1_IfcMemberStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMemberStandardCase::Class() { return *IFC4X3_RC1_IfcMemberStandardCase_type; }
Ifc4x3_rc1::IfcMemberStandardCase::IfcMemberStandardCase(IfcEntityInstanceData* e) : IfcMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMemberStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMemberStandardCase::IfcMemberStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcMemberTypeEnum::Value > v9_PredefinedType) : IfcMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMemberStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcMemberType
::Ifc4x3_rc1::IfcMemberTypeEnum::Value Ifc4x3_rc1::IfcMemberType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMemberTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMemberType::setPredefinedType(::Ifc4x3_rc1::IfcMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMemberType::declaration() const { return *IFC4X3_RC1_IfcMemberType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMemberType::Class() { return *IFC4X3_RC1_IfcMemberType_type; }
Ifc4x3_rc1::IfcMemberType::IfcMemberType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMemberType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcMemberTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMemberType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMemberTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMetric
::Ifc4x3_rc1::IfcBenchmarkEnum::Value Ifc4x3_rc1::IfcMetric::Benchmark() const {  return ::Ifc4x3_rc1::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcMetric::setBenchmark(::Ifc4x3_rc1::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcMetricValueSelect* Ifc4x3_rc1::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcMetricValueSelect>(); }
void Ifc4x3_rc1::IfcMetric::setDataValue(::Ifc4x3_rc1::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcReference* Ifc4x3_rc1::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcReference>(); }
void Ifc4x3_rc1::IfcMetric::setReferencePath(::Ifc4x3_rc1::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMetric::declaration() const { return *IFC4X3_RC1_IfcMetric_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMetric::Class() { return *IFC4X3_RC1_IfcMetric_type; }
Ifc4x3_rc1::IfcMetric::IfcMetric(IfcEntityInstanceData* e) : IfcConstraint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMetric_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMetric::IfcMetric(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_rc1::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc4x3_rc1::IfcBenchmarkEnum::Value v8_Benchmark, boost::optional< std::string > v9_ValueSource, ::Ifc4x3_rc1::IfcMetricValueSelect* v10_DataValue, ::Ifc4x3_rc1::IfcReference* v11_ReferencePath) : IfcConstraint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMetric_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_ConstraintGrade,::Ifc4x3_rc1::IfcConstraintEnum::ToString(v3_ConstraintGrade))));data_->setArgument(2,attr);} if (v4_ConstraintSource) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ConstraintSource));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CreatingActor));data_->setArgument(4,attr);} if (v6_CreationTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_CreationTime));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_UserDefinedGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_UserDefinedGrade));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_Benchmark,::Ifc4x3_rc1::IfcBenchmarkEnum::ToString(v8_Benchmark))));data_->setArgument(7,attr);} if (v9_ValueSource) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ValueSource));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_DataValue));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_ReferencePath));data_->setArgument(10,attr);} }

// Function implementations for IfcMirroredProfileDef


const IfcParse::entity& Ifc4x3_rc1::IfcMirroredProfileDef::declaration() const { return *IFC4X3_RC1_IfcMirroredProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMirroredProfileDef::Class() { return *IFC4X3_RC1_IfcMirroredProfileDef_type; }
Ifc4x3_rc1::IfcMirroredProfileDef::IfcMirroredProfileDef(IfcEntityInstanceData* e) : IfcDerivedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMirroredProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcProfileDef* v3_ParentProfile, boost::optional< std::string > v5_Label) : IfcDerivedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMirroredProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ParentProfile));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(3,attr);} if (v5_Label) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Label));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcMobileTelecommunicationsAppliance
boost::optional< ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::declaration() const { return *IFC4X3_RC1_IfcMobileTelecommunicationsAppliance_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::Class() { return *IFC4X3_RC1_IfcMobileTelecommunicationsAppliance_type; }
Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMobileTelecommunicationsAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMobileTelecommunicationsAppliance_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcMobileTelecommunicationsApplianceType
::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceType::setPredefinedType(::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceType::declaration() const { return *IFC4X3_RC1_IfcMobileTelecommunicationsApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceType::Class() { return *IFC4X3_RC1_IfcMobileTelecommunicationsApplianceType_type; }
Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMobileTelecommunicationsApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMobileTelecommunicationsApplianceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMonetaryUnit
std::string Ifc4x3_rc1::IfcMonetaryUnit::Currency() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcMonetaryUnit::setCurrency(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMonetaryUnit::declaration() const { return *IFC4X3_RC1_IfcMonetaryUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMonetaryUnit::Class() { return *IFC4X3_RC1_IfcMonetaryUnit_type; }
Ifc4x3_rc1::IfcMonetaryUnit::IfcMonetaryUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMonetaryUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMonetaryUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Currency));data_->setArgument(0,attr);} }

// Function implementations for IfcMooringDevice
boost::optional< ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value > Ifc4x3_rc1::IfcMooringDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMooringDevice::declaration() const { return *IFC4X3_RC1_IfcMooringDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMooringDevice::Class() { return *IFC4X3_RC1_IfcMooringDevice_type; }
Ifc4x3_rc1::IfcMooringDevice::IfcMooringDevice(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMooringDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMooringDevice::IfcMooringDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMooringDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcMooringDeviceType
::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value Ifc4x3_rc1::IfcMooringDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMooringDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMooringDeviceType::declaration() const { return *IFC4X3_RC1_IfcMooringDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMooringDeviceType::Class() { return *IFC4X3_RC1_IfcMooringDeviceType_type; }
Ifc4x3_rc1::IfcMooringDeviceType::IfcMooringDeviceType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMooringDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMooringDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMooringDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMotorConnection
boost::optional< ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value > Ifc4x3_rc1::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMotorConnection::declaration() const { return *IFC4X3_RC1_IfcMotorConnection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMotorConnection::Class() { return *IFC4X3_RC1_IfcMotorConnection_type; }
Ifc4x3_rc1::IfcMotorConnection::IfcMotorConnection(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMotorConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMotorConnection::IfcMotorConnection(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMotorConnection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcMotorConnectionType
::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value Ifc4x3_rc1::IfcMotorConnectionType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcMotorConnectionType::setPredefinedType(::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcMotorConnectionType::declaration() const { return *IFC4X3_RC1_IfcMotorConnectionType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcMotorConnectionType::Class() { return *IFC4X3_RC1_IfcMotorConnectionType_type; }
Ifc4x3_rc1::IfcMotorConnectionType::IfcMotorConnectionType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcMotorConnectionType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcMotorConnectionType::IfcMotorConnectionType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcMotorConnectionType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcMotorConnectionTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcNamedUnit
::Ifc4x3_rc1::IfcDimensionalExponents* Ifc4x3_rc1::IfcNamedUnit::Dimensions() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcDimensionalExponents>(); }
void Ifc4x3_rc1::IfcNamedUnit::setDimensions(::Ifc4x3_rc1::IfcDimensionalExponents* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcUnitEnum::Value Ifc4x3_rc1::IfcNamedUnit::UnitType() const {  return ::Ifc4x3_rc1::IfcUnitEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc1::IfcNamedUnit::setUnitType(::Ifc4x3_rc1::IfcUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcUnitEnum::ToString(v)));data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcNamedUnit::declaration() const { return *IFC4X3_RC1_IfcNamedUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcNamedUnit::Class() { return *IFC4X3_RC1_IfcNamedUnit_type; }
Ifc4x3_rc1::IfcNamedUnit::IfcNamedUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcNamedUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_rc1::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc1::IfcUnitEnum::Value v2_UnitType) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNamedUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Dimensions));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_UnitType,::Ifc4x3_rc1::IfcUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);} }

// Function implementations for IfcNavigationElement
boost::optional< ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value > Ifc4x3_rc1::IfcNavigationElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcNavigationElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcNavigationElement::declaration() const { return *IFC4X3_RC1_IfcNavigationElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcNavigationElement::Class() { return *IFC4X3_RC1_IfcNavigationElement_type; }
Ifc4x3_rc1::IfcNavigationElement::IfcNavigationElement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcNavigationElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcNavigationElement::IfcNavigationElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNavigationElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcNavigationElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcNavigationElementType
::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value Ifc4x3_rc1::IfcNavigationElementType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcNavigationElementType::setPredefinedType(::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcNavigationElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcNavigationElementType::declaration() const { return *IFC4X3_RC1_IfcNavigationElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcNavigationElementType::Class() { return *IFC4X3_RC1_IfcNavigationElementType_type; }
Ifc4x3_rc1::IfcNavigationElementType::IfcNavigationElementType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcNavigationElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcNavigationElementType::IfcNavigationElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcNavigationElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcNavigationElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcNavigationElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcObject
boost::optional< std::string > Ifc4x3_rc1::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }

::Ifc4x3_rc1::IfcRelDefinesByObject::list::ptr Ifc4x3_rc1::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByObject_type, 4)->as<IfcRelDefinesByObject>(); }
::Ifc4x3_rc1::IfcRelDefinesByObject::list::ptr Ifc4x3_rc1::IfcObject::Declares() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByObject_type, 5)->as<IfcRelDefinesByObject>(); }
::Ifc4x3_rc1::IfcRelDefinesByType::list::ptr Ifc4x3_rc1::IfcObject::IsTypedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByType_type, 4)->as<IfcRelDefinesByType>(); }
::Ifc4x3_rc1::IfcRelDefinesByProperties::list::ptr Ifc4x3_rc1::IfcObject::IsDefinedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByProperties_type, 4)->as<IfcRelDefinesByProperties>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcObject::declaration() const { return *IFC4X3_RC1_IfcObject_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcObject::Class() { return *IFC4X3_RC1_IfcObject_type; }
Ifc4x3_rc1::IfcObject::IfcObject(IfcEntityInstanceData* e) : IfcObjectDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcObject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcObject::IfcObject(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcObjectDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObject_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcObjectDefinition

::Ifc4x3_rc1::IfcRelAssigns::list::ptr Ifc4x3_rc1::IfcObjectDefinition::HasAssignments() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssigns_type, 4)->as<IfcRelAssigns>(); }
::Ifc4x3_rc1::IfcRelNests::list::ptr Ifc4x3_rc1::IfcObjectDefinition::Nests() const { return data_->getInverse(IFC4X3_RC1_IfcRelNests_type, 5)->as<IfcRelNests>(); }
::Ifc4x3_rc1::IfcRelNests::list::ptr Ifc4x3_rc1::IfcObjectDefinition::IsNestedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelNests_type, 4)->as<IfcRelNests>(); }
::Ifc4x3_rc1::IfcRelDeclares::list::ptr Ifc4x3_rc1::IfcObjectDefinition::HasContext() const { return data_->getInverse(IFC4X3_RC1_IfcRelDeclares_type, 5)->as<IfcRelDeclares>(); }
::Ifc4x3_rc1::IfcRelAggregates::list::ptr Ifc4x3_rc1::IfcObjectDefinition::IsDecomposedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelAggregates_type, 4)->as<IfcRelAggregates>(); }
::Ifc4x3_rc1::IfcRelAggregates::list::ptr Ifc4x3_rc1::IfcObjectDefinition::Decomposes() const { return data_->getInverse(IFC4X3_RC1_IfcRelAggregates_type, 5)->as<IfcRelAggregates>(); }
::Ifc4x3_rc1::IfcRelAssociates::list::ptr Ifc4x3_rc1::IfcObjectDefinition::HasAssociations() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociates_type, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcObjectDefinition::declaration() const { return *IFC4X3_RC1_IfcObjectDefinition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcObjectDefinition::Class() { return *IFC4X3_RC1_IfcObjectDefinition_type; }
Ifc4x3_rc1::IfcObjectDefinition::IfcObjectDefinition(IfcEntityInstanceData* e) : IfcRoot((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcObjectDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcObjectDefinition::IfcObjectDefinition(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectDefinition_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcObjectPlacement
::Ifc4x3_rc1::IfcObjectPlacement* Ifc4x3_rc1::IfcObjectPlacement::PlacementRelTo() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcObjectPlacement>(); }
void Ifc4x3_rc1::IfcObjectPlacement::setPlacementRelTo(::Ifc4x3_rc1::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }

::Ifc4x3_rc1::IfcProduct::list::ptr Ifc4x3_rc1::IfcObjectPlacement::PlacesObject() const { return data_->getInverse(IFC4X3_RC1_IfcProduct_type, 5)->as<IfcProduct>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcObjectPlacement::declaration() const { return *IFC4X3_RC1_IfcObjectPlacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcObjectPlacement::Class() { return *IFC4X3_RC1_IfcObjectPlacement_type; }
Ifc4x3_rc1::IfcObjectPlacement::IfcObjectPlacement(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcObjectPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v1_PlacementRelTo) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjectPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_PlacementRelTo));data_->setArgument(0,attr);} }

// Function implementations for IfcObjective
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcConstraint >::ptr > Ifc4x3_rc1::IfcObjective::BenchmarkValues() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcConstraint >(); }
void Ifc4x3_rc1::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcLogicalOperatorEnum::Value > Ifc4x3_rc1::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc1::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcLogicalOperatorEnum::ToString(*v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcObjectiveEnum::Value Ifc4x3_rc1::IfcObjective::ObjectiveQualifier() const {  return ::Ifc4x3_rc1::IfcObjectiveEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcObjective::setObjectiveQualifier(::Ifc4x3_rc1::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcObjective::declaration() const { return *IFC4X3_RC1_IfcObjective_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcObjective::Class() { return *IFC4X3_RC1_IfcObjective_type; }
Ifc4x3_rc1::IfcObjective::IfcObjective(IfcEntityInstanceData* e) : IfcConstraint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcObjective_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_rc1::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcConstraint >::ptr > v8_BenchmarkValues, boost::optional< ::Ifc4x3_rc1::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4x3_rc1::IfcObjectiveEnum::Value v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier) : IfcConstraint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcObjective_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_ConstraintGrade,::Ifc4x3_rc1::IfcConstraintEnum::ToString(v3_ConstraintGrade))));data_->setArgument(2,attr);} if (v4_ConstraintSource) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ConstraintSource));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CreatingActor));data_->setArgument(4,attr);} if (v6_CreationTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_CreationTime));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_UserDefinedGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_UserDefinedGrade));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_BenchmarkValues) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_BenchmarkValues)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LogicalAggregator) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_LogicalAggregator,::Ifc4x3_rc1::IfcLogicalOperatorEnum::ToString(*v9_LogicalAggregator))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_ObjectiveQualifier,::Ifc4x3_rc1::IfcObjectiveEnum::ToString(v10_ObjectiveQualifier))));data_->setArgument(9,attr);} if (v11_UserDefinedQualifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_UserDefinedQualifier));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcOccupant
boost::optional< ::Ifc4x3_rc1::IfcOccupantTypeEnum::Value > Ifc4x3_rc1::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOccupantTypeEnum::ToString(*v)));data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOccupant::declaration() const { return *IFC4X3_RC1_IfcOccupant_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOccupant::Class() { return *IFC4X3_RC1_IfcOccupant_type; }
Ifc4x3_rc1::IfcOccupant::IfcOccupant(IfcEntityInstanceData* e) : IfcActor((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOccupant_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOccupant::IfcOccupant(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcActorSelect* v6_TheActor, boost::optional< ::Ifc4x3_rc1::IfcOccupantTypeEnum::Value > v7_PredefinedType) : IfcActor((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOccupant_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_TheActor));data_->setArgument(5,attr);} if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcOccupantTypeEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcOffsetCurve
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcOffsetCurve::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcOffsetCurve::setBasisCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurve::declaration() const { return *IFC4X3_RC1_IfcOffsetCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurve::Class() { return *IFC4X3_RC1_IfcOffsetCurve_type; }
Ifc4x3_rc1::IfcOffsetCurve::IfcOffsetCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOffsetCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOffsetCurve::IfcOffsetCurve(::Ifc4x3_rc1::IfcCurve* v1_BasisCurve) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOffsetCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);} }

// Function implementations for IfcOffsetCurve2D
double Ifc4x3_rc1::IfcOffsetCurve2D::Distance() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcOffsetCurve2D::setDistance(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcOffsetCurve2D::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcOffsetCurve2D::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurve2D::declaration() const { return *IFC4X3_RC1_IfcOffsetCurve2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurve2D::Class() { return *IFC4X3_RC1_IfcOffsetCurve2D_type; }
Ifc4x3_rc1::IfcOffsetCurve2D::IfcOffsetCurve2D(IfcEntityInstanceData* e) : IfcOffsetCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOffsetCurve2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOffsetCurve2D::IfcOffsetCurve2D(::Ifc4x3_rc1::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect) : IfcOffsetCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOffsetCurve2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Distance));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SelfIntersect));data_->setArgument(2,attr);} }

// Function implementations for IfcOffsetCurve3D
double Ifc4x3_rc1::IfcOffsetCurve3D::Distance() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcOffsetCurve3D::setDistance(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcOffsetCurve3D::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcOffsetCurve3D::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcOffsetCurve3D::RefDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcOffsetCurve3D::setRefDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurve3D::declaration() const { return *IFC4X3_RC1_IfcOffsetCurve3D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurve3D::Class() { return *IFC4X3_RC1_IfcOffsetCurve3D_type; }
Ifc4x3_rc1::IfcOffsetCurve3D::IfcOffsetCurve3D(IfcEntityInstanceData* e) : IfcOffsetCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOffsetCurve3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_rc1::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, ::Ifc4x3_rc1::IfcDirection* v4_RefDirection) : IfcOffsetCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOffsetCurve3D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Distance));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SelfIntersect));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RefDirection));data_->setArgument(3,attr);} }

// Function implementations for IfcOffsetCurveByDistances
aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr Ifc4x3_rc1::IfcOffsetCurveByDistances::OffsetValues() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcDistanceExpression >(); }
void Ifc4x3_rc1::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurveByDistances::declaration() const { return *IFC4X3_RC1_IfcOffsetCurveByDistances_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOffsetCurveByDistances::Class() { return *IFC4X3_RC1_IfcOffsetCurveByDistances_type; }
Ifc4x3_rc1::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(IfcEntityInstanceData* e) : IfcOffsetCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOffsetCurveByDistances_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(::Ifc4x3_rc1::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v2_OffsetValues, boost::optional< std::string > v3_Tag) : IfcOffsetCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOffsetCurveByDistances_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OffsetValues)->generalize());data_->setArgument(1,attr);} if (v3_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Tag));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcOpenCrossProfileDef
bool Ifc4x3_rc1::IfcOpenCrossProfileDef::HorizontalWidths() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcOpenCrossProfileDef::setHorizontalWidths(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::vector< double > /*[1:?]*/ Ifc4x3_rc1::IfcOpenCrossProfileDef::Widths() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcOpenCrossProfileDef::setWidths(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
std::vector< double > /*[1:?]*/ Ifc4x3_rc1::IfcOpenCrossProfileDef::Slopes() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcOpenCrossProfileDef::setSlopes(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::vector< std::string > /*[2:?]*/ > Ifc4x3_rc1::IfcOpenCrossProfileDef::Tags() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[2:?]*/ v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOpenCrossProfileDef::declaration() const { return *IFC4X3_RC1_IfcOpenCrossProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOpenCrossProfileDef::Class() { return *IFC4X3_RC1_IfcOpenCrossProfileDef_type; }
Ifc4x3_rc1::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOpenCrossProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, bool v3_HorizontalWidths, std::vector< double > /*[1:?]*/ v4_Widths, std::vector< double > /*[1:?]*/ v5_Slopes, boost::optional< std::vector< std::string > /*[2:?]*/ > v6_Tags) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpenCrossProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_HorizontalWidths));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Widths));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Slopes));data_->setArgument(4,attr);} if (v6_Tags) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Tags));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcOpenShell


const IfcParse::entity& Ifc4x3_rc1::IfcOpenShell::declaration() const { return *IFC4X3_RC1_IfcOpenShell_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOpenShell::Class() { return *IFC4X3_RC1_IfcOpenShell_type; }
Ifc4x3_rc1::IfcOpenShell::IfcOpenShell(IfcEntityInstanceData* e) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOpenShell_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_rc1::IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpenShell_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CfsFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcOpeningElement
boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > Ifc4x3_rc1::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOpeningElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelFillsElement::list::ptr Ifc4x3_rc1::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X3_RC1_IfcRelFillsElement_type, 4)->as<IfcRelFillsElement>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcOpeningElement::declaration() const { return *IFC4X3_RC1_IfcOpeningElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOpeningElement::Class() { return *IFC4X3_RC1_IfcOpeningElement_type; }
Ifc4x3_rc1::IfcOpeningElement::IfcOpeningElement(IfcEntityInstanceData* e) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOpeningElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOpeningElement::IfcOpeningElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpeningElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcOpeningElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcOpeningStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcOpeningStandardCase::declaration() const { return *IFC4X3_RC1_IfcOpeningStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOpeningStandardCase::Class() { return *IFC4X3_RC1_IfcOpeningStandardCase_type; }
Ifc4x3_rc1::IfcOpeningStandardCase::IfcOpeningStandardCase(IfcEntityInstanceData* e) : IfcOpeningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOpeningStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcOpeningElementTypeEnum::Value > v9_PredefinedType) : IfcOpeningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOpeningStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcOpeningElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcOrganization
boost::optional< std::string > Ifc4x3_rc1::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc1::IfcOrganization::Name() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > Ifc4x3_rc1::IfcOrganization::Roles() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcActorRole >(); }
void Ifc4x3_rc1::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(3,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > Ifc4x3_rc1::IfcOrganization::Addresses() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcAddress >(); }
void Ifc4x3_rc1::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(4,attr);} }

::Ifc4x3_rc1::IfcOrganizationRelationship::list::ptr Ifc4x3_rc1::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X3_RC1_IfcOrganizationRelationship_type, 3)->as<IfcOrganizationRelationship>(); }
::Ifc4x3_rc1::IfcOrganizationRelationship::list::ptr Ifc4x3_rc1::IfcOrganization::Relates() const { return data_->getInverse(IFC4X3_RC1_IfcOrganizationRelationship_type, 2)->as<IfcOrganizationRelationship>(); }
::Ifc4x3_rc1::IfcPersonAndOrganization::list::ptr Ifc4x3_rc1::IfcOrganization::Engages() const { return data_->getInverse(IFC4X3_RC1_IfcPersonAndOrganization_type, 1)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcOrganization::declaration() const { return *IFC4X3_RC1_IfcOrganization_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOrganization::Class() { return *IFC4X3_RC1_IfcOrganization_type; }
Ifc4x3_rc1::IfcOrganization::IfcOrganization(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOrganization_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOrganization::IfcOrganization(boost::optional< std::string > v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v4_Roles, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v5_Addresses) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOrganization_type);  if (v1_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Identification));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Name));data_->setArgument(1,attr);} if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Roles) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Roles)->generalize());data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Addresses) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Addresses)->generalize());data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcOrganizationRelationship
::Ifc4x3_rc1::IfcOrganization* Ifc4x3_rc1::IfcOrganizationRelationship::RelatingOrganization() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcOrganization>(); }
void Ifc4x3_rc1::IfcOrganizationRelationship::setRelatingOrganization(::Ifc4x3_rc1::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcOrganization >::ptr Ifc4x3_rc1::IfcOrganizationRelationship::RelatedOrganizations() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcOrganization >(); }
void Ifc4x3_rc1::IfcOrganizationRelationship::setRelatedOrganizations(aggregate_of< ::Ifc4x3_rc1::IfcOrganization >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOrganizationRelationship::declaration() const { return *IFC4X3_RC1_IfcOrganizationRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOrganizationRelationship::Class() { return *IFC4X3_RC1_IfcOrganizationRelationship_type; }
Ifc4x3_rc1::IfcOrganizationRelationship::IfcOrganizationRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOrganizationRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOrganizationRelationship::IfcOrganizationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcOrganization* v3_RelatingOrganization, aggregate_of< ::Ifc4x3_rc1::IfcOrganization >::ptr v4_RelatedOrganizations) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOrganizationRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingOrganization));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedOrganizations)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcOrientationExpression
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcOrientationExpression::LateralAxisDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcOrientationExpression::setLateralAxisDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcOrientationExpression::VerticalAxisDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcOrientationExpression::setVerticalAxisDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOrientationExpression::declaration() const { return *IFC4X3_RC1_IfcOrientationExpression_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOrientationExpression::Class() { return *IFC4X3_RC1_IfcOrientationExpression_type; }
Ifc4x3_rc1::IfcOrientationExpression::IfcOrientationExpression(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOrientationExpression_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOrientationExpression::IfcOrientationExpression(::Ifc4x3_rc1::IfcDirection* v1_LateralAxisDirection, ::Ifc4x3_rc1::IfcDirection* v2_VerticalAxisDirection) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOrientationExpression_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_LateralAxisDirection));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_VerticalAxisDirection));data_->setArgument(1,attr);} }

// Function implementations for IfcOrientedEdge
::Ifc4x3_rc1::IfcEdge* Ifc4x3_rc1::IfcOrientedEdge::EdgeElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcEdge>(); }
void Ifc4x3_rc1::IfcOrientedEdge::setEdgeElement(::Ifc4x3_rc1::IfcEdge* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
bool Ifc4x3_rc1::IfcOrientedEdge::Orientation() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcOrientedEdge::setOrientation(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOrientedEdge::declaration() const { return *IFC4X3_RC1_IfcOrientedEdge_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOrientedEdge::Class() { return *IFC4X3_RC1_IfcOrientedEdge_type; }
Ifc4x3_rc1::IfcOrientedEdge::IfcOrientedEdge(IfcEntityInstanceData* e) : IfcEdge((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOrientedEdge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOrientedEdge::IfcOrientedEdge(::Ifc4x3_rc1::IfcEdge* v3_EdgeElement, bool v4_Orientation) : IfcEdge((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOrientedEdge_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_EdgeElement));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Orientation));data_->setArgument(3,attr);} }

// Function implementations for IfcOuterBoundaryCurve


const IfcParse::entity& Ifc4x3_rc1::IfcOuterBoundaryCurve::declaration() const { return *IFC4X3_RC1_IfcOuterBoundaryCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOuterBoundaryCurve::Class() { return *IFC4X3_RC1_IfcOuterBoundaryCurve_type; }
Ifc4x3_rc1::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(IfcEntityInstanceData* e) : IfcBoundaryCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOuterBoundaryCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_rc1::IfcCompositeCurveSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundaryCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOuterBoundaryCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Segments)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SelfIntersect));data_->setArgument(1,attr);} }

// Function implementations for IfcOutlet
boost::optional< ::Ifc4x3_rc1::IfcOutletTypeEnum::Value > Ifc4x3_rc1::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcOutletTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOutlet::declaration() const { return *IFC4X3_RC1_IfcOutlet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOutlet::Class() { return *IFC4X3_RC1_IfcOutlet_type; }
Ifc4x3_rc1::IfcOutlet::IfcOutlet(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOutlet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOutlet::IfcOutlet(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcOutletTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOutlet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcOutletTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcOutletType
::Ifc4x3_rc1::IfcOutletTypeEnum::Value Ifc4x3_rc1::IfcOutletType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcOutletTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcOutletType::setPredefinedType(::Ifc4x3_rc1::IfcOutletTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcOutletTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOutletType::declaration() const { return *IFC4X3_RC1_IfcOutletType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOutletType::Class() { return *IFC4X3_RC1_IfcOutletType_type; }
Ifc4x3_rc1::IfcOutletType::IfcOutletType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOutletType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOutletType::IfcOutletType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcOutletTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOutletType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcOutletTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcOwnerHistory
::Ifc4x3_rc1::IfcPersonAndOrganization* Ifc4x3_rc1::IfcOwnerHistory::OwningUser() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcPersonAndOrganization>(); }
void Ifc4x3_rc1::IfcOwnerHistory::setOwningUser(::Ifc4x3_rc1::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcApplication* Ifc4x3_rc1::IfcOwnerHistory::OwningApplication() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcApplication>(); }
void Ifc4x3_rc1::IfcOwnerHistory::setOwningApplication(::Ifc4x3_rc1::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > Ifc4x3_rc1::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStateEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStateEnum::ToString(*v)));data_->setArgument(2,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcChangeActionEnum::Value > Ifc4x3_rc1::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcChangeActionEnum::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc1::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc1::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcChangeActionEnum::ToString(*v)));data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcPersonAndOrganization* Ifc4x3_rc1::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcPersonAndOrganization>(); }
void Ifc4x3_rc1::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_rc1::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcApplication* Ifc4x3_rc1::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcApplication>(); }
void Ifc4x3_rc1::IfcOwnerHistory::setLastModifyingApplication(::Ifc4x3_rc1::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
int Ifc4x3_rc1::IfcOwnerHistory::CreationDate() const {  int v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcOwnerHistory::setCreationDate(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcOwnerHistory::declaration() const { return *IFC4X3_RC1_IfcOwnerHistory_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcOwnerHistory::Class() { return *IFC4X3_RC1_IfcOwnerHistory_type; }
Ifc4x3_rc1::IfcOwnerHistory::IfcOwnerHistory(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcOwnerHistory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcOwnerHistory::IfcOwnerHistory(::Ifc4x3_rc1::IfcPersonAndOrganization* v1_OwningUser, ::Ifc4x3_rc1::IfcApplication* v2_OwningApplication, boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v3_State, boost::optional< ::Ifc4x3_rc1::IfcChangeActionEnum::Value > v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, ::Ifc4x3_rc1::IfcPersonAndOrganization* v6_LastModifyingUser, ::Ifc4x3_rc1::IfcApplication* v7_LastModifyingApplication, int v8_CreationDate) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcOwnerHistory_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_OwningUser));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwningApplication));data_->setArgument(1,attr);} if (v3_State) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v3_State,::Ifc4x3_rc1::IfcStateEnum::ToString(*v3_State))));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ChangeAction) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v4_ChangeAction,::Ifc4x3_rc1::IfcChangeActionEnum::ToString(*v4_ChangeAction))));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_LastModifiedDate) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_LastModifiedDate));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_LastModifyingUser));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_LastModifyingApplication));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_CreationDate));data_->setArgument(7,attr);} }

// Function implementations for IfcParameterizedProfileDef
::Ifc4x3_rc1::IfcAxis2Placement2D* Ifc4x3_rc1::IfcParameterizedProfileDef::Position() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAxis2Placement2D>(); }
void Ifc4x3_rc1::IfcParameterizedProfileDef::setPosition(::Ifc4x3_rc1::IfcAxis2Placement2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcParameterizedProfileDef::declaration() const { return *IFC4X3_RC1_IfcParameterizedProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcParameterizedProfileDef::Class() { return *IFC4X3_RC1_IfcParameterizedProfileDef_type; }
Ifc4x3_rc1::IfcParameterizedProfileDef::IfcParameterizedProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcParameterizedProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcParameterizedProfileDef::IfcParameterizedProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcParameterizedProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);} }

// Function implementations for IfcPath
aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr Ifc4x3_rc1::IfcPath::EdgeList() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcOrientedEdge >(); }
void Ifc4x3_rc1::IfcPath::setEdgeList(aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPath::declaration() const { return *IFC4X3_RC1_IfcPath_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPath::Class() { return *IFC4X3_RC1_IfcPath_type; }
Ifc4x3_rc1::IfcPath::IfcPath(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPath_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_rc1::IfcOrientedEdge >::ptr v1_EdgeList) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPath_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_EdgeList)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcPavement
boost::optional< bool > Ifc4x3_rc1::IfcPavement::Flexible() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } bool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcPavement::setFlexible(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPavement::declaration() const { return *IFC4X3_RC1_IfcPavement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPavement::Class() { return *IFC4X3_RC1_IfcPavement_type; }
Ifc4x3_rc1::IfcPavement::IfcPavement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPavement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPavement::IfcPavement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< bool > v9_Flexible) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPavement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_Flexible) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Flexible));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPavementType
bool Ifc4x3_rc1::IfcPavementType::Flexible() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcPavementType::setFlexible(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPavementType::declaration() const { return *IFC4X3_RC1_IfcPavementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPavementType::Class() { return *IFC4X3_RC1_IfcPavementType_type; }
Ifc4x3_rc1::IfcPavementType::IfcPavementType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPavementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPavementType::IfcPavementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, bool v10_Flexible) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPavementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_Flexible));data_->setArgument(9,attr);} }

// Function implementations for IfcPcurve
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcPcurve::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcPcurve::setBasisSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcPcurve::ReferenceCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcPcurve::setReferenceCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPcurve::declaration() const { return *IFC4X3_RC1_IfcPcurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPcurve::Class() { return *IFC4X3_RC1_IfcPcurve_type; }
Ifc4x3_rc1::IfcPcurve::IfcPcurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPcurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPcurve::IfcPcurve(::Ifc4x3_rc1::IfcSurface* v1_BasisSurface, ::Ifc4x3_rc1::IfcCurve* v2_ReferenceCurve) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPcurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ReferenceCurve));data_->setArgument(1,attr);} }

// Function implementations for IfcPerformanceHistory
std::string Ifc4x3_rc1::IfcPerformanceHistory::LifeCyclePhase() const {  std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_rc1::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::ToString(*v)));data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPerformanceHistory::declaration() const { return *IFC4X3_RC1_IfcPerformanceHistory_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPerformanceHistory::Class() { return *IFC4X3_RC1_IfcPerformanceHistory_type; }
Ifc4x3_rc1::IfcPerformanceHistory::IfcPerformanceHistory(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPerformanceHistory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPerformanceHistory::IfcPerformanceHistory(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPerformanceHistory_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_LifeCyclePhase));data_->setArgument(6,attr);} if (v8_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_PredefinedType,::Ifc4x3_rc1::IfcPerformanceHistoryTypeEnum::ToString(*v8_PredefinedType))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcPermeableCoveringProperties
::Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::Value Ifc4x3_rc1::IfcPermeableCoveringProperties::OperationType() const {  return ::Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::ToString(v)));data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value Ifc4x3_rc1::IfcPermeableCoveringProperties::PanelPosition() const {  return ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcShapeAspect>(); }
void Ifc4x3_rc1::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPermeableCoveringProperties::declaration() const { return *IFC4X3_RC1_IfcPermeableCoveringProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPermeableCoveringProperties::Class() { return *IFC4X3_RC1_IfcPermeableCoveringProperties_type; }
Ifc4x3_rc1::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPermeableCoveringProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_rc1::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermeableCoveringProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_OperationType,::Ifc4x3_rc1::IfcPermeableCoveringOperationEnum::ToString(v5_OperationType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PanelPosition,::Ifc4x3_rc1::IfcWindowPanelPositionEnum::ToString(v6_PanelPosition))));data_->setArgument(5,attr);} if (v7_FrameDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_FrameDepth));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_FrameThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_FrameThickness));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_ShapeAspectStyle));data_->setArgument(8,attr);} }

// Function implementations for IfcPermit
boost::optional< ::Ifc4x3_rc1::IfcPermitTypeEnum::Value > Ifc4x3_rc1::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPermitTypeEnum::ToString(*v)));data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPermit::declaration() const { return *IFC4X3_RC1_IfcPermit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPermit::Class() { return *IFC4X3_RC1_IfcPermit_type; }
Ifc4x3_rc1::IfcPermit::IfcPermit(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPermit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcPermitTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPermit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcPermitTypeEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Status));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_LongDescription));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPerson
boost::optional< std::string > Ifc4x3_rc1::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPerson::MiddleNames() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPerson::PrefixTitles() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPerson::SuffixTitles() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > Ifc4x3_rc1::IfcPerson::Roles() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcActorRole >(); }
void Ifc4x3_rc1::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > Ifc4x3_rc1::IfcPerson::Addresses() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcAddress >(); }
void Ifc4x3_rc1::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }

::Ifc4x3_rc1::IfcPersonAndOrganization::list::ptr Ifc4x3_rc1::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X3_RC1_IfcPersonAndOrganization_type, 0)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPerson::declaration() const { return *IFC4X3_RC1_IfcPerson_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPerson::Class() { return *IFC4X3_RC1_IfcPerson_type; }
Ifc4x3_rc1::IfcPerson::IfcPerson(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPerson_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v7_Roles, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAddress >::ptr > v8_Addresses) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPerson_type);  if (v1_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Identification));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_FamilyName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_FamilyName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_GivenName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_GivenName));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_MiddleNames) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_MiddleNames));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_PrefixTitles) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_PrefixTitles));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_SuffixTitles) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_SuffixTitles));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Roles) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Roles)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Addresses) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Addresses)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcPersonAndOrganization
::Ifc4x3_rc1::IfcPerson* Ifc4x3_rc1::IfcPersonAndOrganization::ThePerson() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcPerson>(); }
void Ifc4x3_rc1::IfcPersonAndOrganization::setThePerson(::Ifc4x3_rc1::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcOrganization* Ifc4x3_rc1::IfcPersonAndOrganization::TheOrganization() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcOrganization>(); }
void Ifc4x3_rc1::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_rc1::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > Ifc4x3_rc1::IfcPersonAndOrganization::Roles() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcActorRole >(); }
void Ifc4x3_rc1::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPersonAndOrganization::declaration() const { return *IFC4X3_RC1_IfcPersonAndOrganization_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPersonAndOrganization::Class() { return *IFC4X3_RC1_IfcPersonAndOrganization_type; }
Ifc4x3_rc1::IfcPersonAndOrganization::IfcPersonAndOrganization(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPersonAndOrganization_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPersonAndOrganization::IfcPersonAndOrganization(::Ifc4x3_rc1::IfcPerson* v1_ThePerson, ::Ifc4x3_rc1::IfcOrganization* v2_TheOrganization, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcActorRole >::ptr > v3_Roles) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPersonAndOrganization_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ThePerson));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TheOrganization));data_->setArgument(1,attr);} if (v3_Roles) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Roles)->generalize());data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcPhysicalComplexQuantity
aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr Ifc4x3_rc1::IfcPhysicalComplexQuantity::HasQuantities() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcPhysicalQuantity >(); }
void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
std::string Ifc4x3_rc1::IfcPhysicalComplexQuantity::Discrimination() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X3_RC1_IfcPhysicalComplexQuantity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalComplexQuantity::Class() { return *IFC4X3_RC1_IfcPhysicalComplexQuantity_type; }
Ifc4x3_rc1::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(IfcEntityInstanceData* e) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPhysicalComplexQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcPhysicalQuantity >::ptr v3_HasQuantities, std::string v4_Discrimination, boost::optional< std::string > v5_Quality, boost::optional< std::string > v6_Usage) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalComplexQuantity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_HasQuantities)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Discrimination));data_->setArgument(3,attr);} if (v5_Quality) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Quality));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Usage) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Usage));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcPhysicalQuantity
std::string Ifc4x3_rc1::IfcPhysicalQuantity::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }

::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc1::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_rc1::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X3_RC1_IfcPhysicalComplexQuantity_type, 2)->as<IfcPhysicalComplexQuantity>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalQuantity::declaration() const { return *IFC4X3_RC1_IfcPhysicalQuantity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalQuantity::Class() { return *IFC4X3_RC1_IfcPhysicalQuantity_type; }
Ifc4x3_rc1::IfcPhysicalQuantity::IfcPhysicalQuantity(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPhysicalQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPhysicalQuantity::IfcPhysicalQuantity(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalQuantity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcPhysicalSimpleQuantity
::Ifc4x3_rc1::IfcNamedUnit* Ifc4x3_rc1::IfcPhysicalSimpleQuantity::Unit() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcNamedUnit>(); }
void Ifc4x3_rc1::IfcPhysicalSimpleQuantity::setUnit(::Ifc4x3_rc1::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalSimpleQuantity::declaration() const { return *IFC4X3_RC1_IfcPhysicalSimpleQuantity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPhysicalSimpleQuantity::Class() { return *IFC4X3_RC1_IfcPhysicalSimpleQuantity_type; }
Ifc4x3_rc1::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(IfcEntityInstanceData* e) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPhysicalSimpleQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPhysicalSimpleQuantity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);} }

// Function implementations for IfcPile
boost::optional< ::Ifc4x3_rc1::IfcPileTypeEnum::Value > Ifc4x3_rc1::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPileTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPileTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcPileConstructionEnum::Value > Ifc4x3_rc1::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc1::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPileConstructionEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPile::declaration() const { return *IFC4X3_RC1_IfcPile_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPile::Class() { return *IFC4X3_RC1_IfcPile_type; }
Ifc4x3_rc1::IfcPile::IfcPile(IfcEntityInstanceData* e) : IfcDeepFoundation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPile_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPile::IfcPile(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcPileTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcPileConstructionEnum::Value > v10_ConstructionType) : IfcDeepFoundation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPile_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcPileTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_ConstructionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_ConstructionType,::Ifc4x3_rc1::IfcPileConstructionEnum::ToString(*v10_ConstructionType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcPileType
::Ifc4x3_rc1::IfcPileTypeEnum::Value Ifc4x3_rc1::IfcPileType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcPileTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcPileType::setPredefinedType(::Ifc4x3_rc1::IfcPileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPileTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPileType::declaration() const { return *IFC4X3_RC1_IfcPileType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPileType::Class() { return *IFC4X3_RC1_IfcPileType_type; }
Ifc4x3_rc1::IfcPileType::IfcPileType(IfcEntityInstanceData* e) : IfcDeepFoundationType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPileType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcPileTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPileType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcPileTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPipeFitting
boost::optional< ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value > Ifc4x3_rc1::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPipeFittingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPipeFitting::declaration() const { return *IFC4X3_RC1_IfcPipeFitting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPipeFitting::Class() { return *IFC4X3_RC1_IfcPipeFitting_type; }
Ifc4x3_rc1::IfcPipeFitting::IfcPipeFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPipeFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPipeFitting::IfcPipeFitting(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeFitting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcPipeFittingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPipeFittingType
::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value Ifc4x3_rc1::IfcPipeFittingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcPipeFittingType::setPredefinedType(::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPipeFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPipeFittingType::declaration() const { return *IFC4X3_RC1_IfcPipeFittingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPipeFittingType::Class() { return *IFC4X3_RC1_IfcPipeFittingType_type; }
Ifc4x3_rc1::IfcPipeFittingType::IfcPipeFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPipeFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcPipeFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeFittingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcPipeFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPipeSegment
boost::optional< ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value > Ifc4x3_rc1::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPipeSegment::declaration() const { return *IFC4X3_RC1_IfcPipeSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPipeSegment::Class() { return *IFC4X3_RC1_IfcPipeSegment_type; }
Ifc4x3_rc1::IfcPipeSegment::IfcPipeSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPipeSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPipeSegment::IfcPipeSegment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPipeSegmentType
::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value Ifc4x3_rc1::IfcPipeSegmentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcPipeSegmentType::setPredefinedType(::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPipeSegmentType::declaration() const { return *IFC4X3_RC1_IfcPipeSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPipeSegmentType::Class() { return *IFC4X3_RC1_IfcPipeSegmentType_type; }
Ifc4x3_rc1::IfcPipeSegmentType::IfcPipeSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPipeSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPipeSegmentType::IfcPipeSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPipeSegmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcPipeSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPixelTexture
int Ifc4x3_rc1::IfcPixelTexture::Width() const {  int v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcPixelTexture::setWidth(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
int Ifc4x3_rc1::IfcPixelTexture::Height() const {  int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcPixelTexture::setHeight(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
int Ifc4x3_rc1::IfcPixelTexture::ColourComponents() const {  int v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcPixelTexture::setColourComponents(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
std::vector< boost::dynamic_bitset<> > /*[1:?]*/ Ifc4x3_rc1::IfcPixelTexture::Pixel() const {  std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcPixelTexture::setPixel(std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPixelTexture::declaration() const { return *IFC4X3_RC1_IfcPixelTexture_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPixelTexture::Class() { return *IFC4X3_RC1_IfcPixelTexture_type; }
Ifc4x3_rc1::IfcPixelTexture::IfcPixelTexture(IfcEntityInstanceData* e) : IfcSurfaceTexture((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPixelTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPixelTexture::IfcPixelTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPixelTexture_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_RepeatS));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RepeatT));data_->setArgument(1,attr);} if (v3_Mode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Mode));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TextureTransform));data_->setArgument(3,attr);} if (v5_Parameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Parameter));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Width));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Height));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_ColourComponents));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Pixel));data_->setArgument(8,attr);} }

// Function implementations for IfcPlacement
::Ifc4x3_rc1::IfcCartesianPoint* Ifc4x3_rc1::IfcPlacement::Location() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPoint>(); }
void Ifc4x3_rc1::IfcPlacement::setLocation(::Ifc4x3_rc1::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPlacement::declaration() const { return *IFC4X3_RC1_IfcPlacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlacement::Class() { return *IFC4X3_RC1_IfcPlacement_type; }
Ifc4x3_rc1::IfcPlacement::IfcPlacement(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlacement::IfcPlacement(::Ifc4x3_rc1::IfcCartesianPoint* v1_Location) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Location));data_->setArgument(0,attr);} }

// Function implementations for IfcPlanarBox
::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcPlanarBox::Placement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(); }
void Ifc4x3_rc1::IfcPlanarBox::setPlacement(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPlanarBox::declaration() const { return *IFC4X3_RC1_IfcPlanarBox_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlanarBox::Class() { return *IFC4X3_RC1_IfcPlanarBox_type; }
Ifc4x3_rc1::IfcPlanarBox::IfcPlanarBox(IfcEntityInstanceData* e) : IfcPlanarExtent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlanarBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlanarBox::IfcPlanarBox(double v1_SizeInX, double v2_SizeInY, ::Ifc4x3_rc1::IfcAxis2Placement* v3_Placement) : IfcPlanarExtent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlanarBox_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SizeInX));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SizeInY));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Placement));data_->setArgument(2,attr);} }

// Function implementations for IfcPlanarExtent
double Ifc4x3_rc1::IfcPlanarExtent::SizeInX() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPlanarExtent::setSizeInX(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcPlanarExtent::SizeInY() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPlanarExtent::setSizeInY(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPlanarExtent::declaration() const { return *IFC4X3_RC1_IfcPlanarExtent_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlanarExtent::Class() { return *IFC4X3_RC1_IfcPlanarExtent_type; }
Ifc4x3_rc1::IfcPlanarExtent::IfcPlanarExtent(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlanarExtent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlanarExtent::IfcPlanarExtent(double v1_SizeInX, double v2_SizeInY) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlanarExtent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SizeInX));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SizeInY));data_->setArgument(1,attr);} }

// Function implementations for IfcPlane


const IfcParse::entity& Ifc4x3_rc1::IfcPlane::declaration() const { return *IFC4X3_RC1_IfcPlane_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlane::Class() { return *IFC4X3_RC1_IfcPlane_type; }
Ifc4x3_rc1::IfcPlane::IfcPlane(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlane_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlane::IfcPlane(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlane_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcPlant


const IfcParse::entity& Ifc4x3_rc1::IfcPlant::declaration() const { return *IFC4X3_RC1_IfcPlant_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlant::Class() { return *IFC4X3_RC1_IfcPlant_type; }
Ifc4x3_rc1::IfcPlant::IfcPlant(IfcEntityInstanceData* e) : IfcGeographicElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlant_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlant::IfcPlant(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcGeographicElementTypeEnum::Value > v9_PredefinedType) : IfcGeographicElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlant_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcGeographicElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPlate
boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > Ifc4x3_rc1::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPlate::declaration() const { return *IFC4X3_RC1_IfcPlate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlate::Class() { return *IFC4X3_RC1_IfcPlate_type; }
Ifc4x3_rc1::IfcPlate::IfcPlate(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlate::IfcPlate(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPlateStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcPlateStandardCase::declaration() const { return *IFC4X3_RC1_IfcPlateStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlateStandardCase::Class() { return *IFC4X3_RC1_IfcPlateStandardCase_type; }
Ifc4x3_rc1::IfcPlateStandardCase::IfcPlateStandardCase(IfcEntityInstanceData* e) : IfcPlate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlateStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlateStandardCase::IfcPlateStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcPlateTypeEnum::Value > v9_PredefinedType) : IfcPlate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlateStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPlateType
::Ifc4x3_rc1::IfcPlateTypeEnum::Value Ifc4x3_rc1::IfcPlateType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcPlateTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcPlateType::setPredefinedType(::Ifc4x3_rc1::IfcPlateTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPlateType::declaration() const { return *IFC4X3_RC1_IfcPlateType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPlateType::Class() { return *IFC4X3_RC1_IfcPlateType_type; }
Ifc4x3_rc1::IfcPlateType::IfcPlateType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPlateType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPlateType::IfcPlateType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcPlateTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPlateType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcPlateTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPoint


const IfcParse::entity& Ifc4x3_rc1::IfcPoint::declaration() const { return *IFC4X3_RC1_IfcPoint_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPoint::Class() { return *IFC4X3_RC1_IfcPoint_type; }
Ifc4x3_rc1::IfcPoint::IfcPoint(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPoint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPoint_type);  }

// Function implementations for IfcPointOnCurve
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcPointOnCurve::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcPointOnCurve::setBasisCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcPointOnCurve::PointParameter() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPointOnCurve::setPointParameter(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPointOnCurve::declaration() const { return *IFC4X3_RC1_IfcPointOnCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPointOnCurve::Class() { return *IFC4X3_RC1_IfcPointOnCurve_type; }
Ifc4x3_rc1::IfcPointOnCurve::IfcPointOnCurve(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPointOnCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPointOnCurve::IfcPointOnCurve(::Ifc4x3_rc1::IfcCurve* v1_BasisCurve, double v2_PointParameter) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPointOnCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PointParameter));data_->setArgument(1,attr);} }

// Function implementations for IfcPointOnSurface
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcPointOnSurface::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcPointOnSurface::setBasisSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcPointOnSurface::PointParameterU() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPointOnSurface::setPointParameterU(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcPointOnSurface::PointParameterV() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPointOnSurface::setPointParameterV(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPointOnSurface::declaration() const { return *IFC4X3_RC1_IfcPointOnSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPointOnSurface::Class() { return *IFC4X3_RC1_IfcPointOnSurface_type; }
Ifc4x3_rc1::IfcPointOnSurface::IfcPointOnSurface(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPointOnSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPointOnSurface::IfcPointOnSurface(::Ifc4x3_rc1::IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPointOnSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_PointParameterU));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_PointParameterV));data_->setArgument(2,attr);} }

// Function implementations for IfcPolyLoop
aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr Ifc4x3_rc1::IfcPolyLoop::Polygon() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcCartesianPoint >(); }
void Ifc4x3_rc1::IfcPolyLoop::setPolygon(aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPolyLoop::declaration() const { return *IFC4X3_RC1_IfcPolyLoop_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPolyLoop::Class() { return *IFC4X3_RC1_IfcPolyLoop_type; }
Ifc4x3_rc1::IfcPolyLoop::IfcPolyLoop(IfcEntityInstanceData* e) : IfcLoop((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPolyLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPolyLoop::IfcPolyLoop(aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v1_Polygon) : IfcLoop((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPolyLoop_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Polygon)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcPolygonalBoundedHalfSpace
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::setPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcBoundedCurve* Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::PolygonalBoundary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcBoundedCurve>(); }
void Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::setPolygonalBoundary(::Ifc4x3_rc1::IfcBoundedCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::declaration() const { return *IFC4X3_RC1_IfcPolygonalBoundedHalfSpace_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::Class() { return *IFC4X3_RC1_IfcPolygonalBoundedHalfSpace_type; }
Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(IfcEntityInstanceData* e) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPolygonalBoundedHalfSpace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_rc1::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_rc1::IfcAxis2Placement3D* v3_Position, ::Ifc4x3_rc1::IfcBoundedCurve* v4_PolygonalBoundary) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPolygonalBoundedHalfSpace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BaseSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AgreementFlag));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_PolygonalBoundary));data_->setArgument(3,attr);} }

// Function implementations for IfcPolygonalFaceSet
boost::optional< bool > Ifc4x3_rc1::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >::ptr Ifc4x3_rc1::IfcPolygonalFaceSet::Faces() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >(); }
void Ifc4x3_rc1::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcPolygonalFaceSet::PnIndex() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPolygonalFaceSet::declaration() const { return *IFC4X3_RC1_IfcPolygonalFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPolygonalFaceSet::Class() { return *IFC4X3_RC1_IfcPolygonalFaceSet_type; }
Ifc4x3_rc1::IfcPolygonalFaceSet::IfcPolygonalFaceSet(IfcEntityInstanceData* e) : IfcTessellatedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPolygonalFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPolygonalFaceSet::IfcPolygonalFaceSet(::Ifc4x3_rc1::IfcCartesianPointList3D* v1_Coordinates, boost::optional< bool > v2_Closed, aggregate_of< ::Ifc4x3_rc1::IfcIndexedPolygonalFace >::ptr v3_Faces, boost::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex) : IfcTessellatedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPolygonalFaceSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} if (v2_Closed) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Closed));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Faces)->generalize());data_->setArgument(2,attr);} if (v4_PnIndex) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_PnIndex));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcPolyline
aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr Ifc4x3_rc1::IfcPolyline::Points() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcCartesianPoint >(); }
void Ifc4x3_rc1::IfcPolyline::setPoints(aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPolyline::declaration() const { return *IFC4X3_RC1_IfcPolyline_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPolyline::Class() { return *IFC4X3_RC1_IfcPolyline_type; }
Ifc4x3_rc1::IfcPolyline::IfcPolyline(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPolyline_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPolyline::IfcPolyline(aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v1_Points) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPolyline_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Points)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcPort

::Ifc4x3_rc1::IfcRelConnectsPortToElement::list::ptr Ifc4x3_rc1::IfcPort::ContainedIn() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsPortToElement_type, 4)->as<IfcRelConnectsPortToElement>(); }
::Ifc4x3_rc1::IfcRelConnectsPorts::list::ptr Ifc4x3_rc1::IfcPort::ConnectedFrom() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsPorts_type, 5)->as<IfcRelConnectsPorts>(); }
::Ifc4x3_rc1::IfcRelConnectsPorts::list::ptr Ifc4x3_rc1::IfcPort::ConnectedTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsPorts_type, 4)->as<IfcRelConnectsPorts>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPort::declaration() const { return *IFC4X3_RC1_IfcPort_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPort::Class() { return *IFC4X3_RC1_IfcPort_type; }
Ifc4x3_rc1::IfcPort::IfcPort(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPort_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPort::IfcPort(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPort_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} }

// Function implementations for IfcPositioningElement

::Ifc4x3_rc1::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcPositioningElement::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC1_IfcRelContainedInSpatialStructure_type, 4)->as<IfcRelContainedInSpatialStructure>(); }
::Ifc4x3_rc1::IfcRelPositions::list::ptr Ifc4x3_rc1::IfcPositioningElement::Positions() const { return data_->getInverse(IFC4X3_RC1_IfcRelPositions_type, 4)->as<IfcRelPositions>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPositioningElement::declaration() const { return *IFC4X3_RC1_IfcPositioningElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPositioningElement::Class() { return *IFC4X3_RC1_IfcPositioningElement_type; }
Ifc4x3_rc1::IfcPositioningElement::IfcPositioningElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPositioningElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPositioningElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} }

// Function implementations for IfcPostalAddress
boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcPostalAddress::AddressLines() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPostalAddress::declaration() const { return *IFC4X3_RC1_IfcPostalAddress_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPostalAddress::Class() { return *IFC4X3_RC1_IfcPostalAddress_type; }
Ifc4x3_rc1::IfcPostalAddress::IfcPostalAddress(IfcEntityInstanceData* e) : IfcAddress((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPostalAddress_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPostalAddress::IfcPostalAddress(boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::string > v4_InternalLocation, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_AddressLines, boost::optional< std::string > v6_PostalBox, boost::optional< std::string > v7_Town, boost::optional< std::string > v8_Region, boost::optional< std::string > v9_PostalCode, boost::optional< std::string > v10_Country) : IfcAddress((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPostalAddress_type);  if (v1_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v1_Purpose,::Ifc4x3_rc1::IfcAddressTypeEnum::ToString(*v1_Purpose))));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedPurpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedPurpose));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_InternalLocation) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_InternalLocation));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_AddressLines) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_AddressLines));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_PostalBox) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_PostalBox));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Town) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Town));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Region) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Region));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PostalCode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_PostalCode));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Country) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Country));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcPreDefinedColour


const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedColour::declaration() const { return *IFC4X3_RC1_IfcPreDefinedColour_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedColour::Class() { return *IFC4X3_RC1_IfcPreDefinedColour_type; }
Ifc4x3_rc1::IfcPreDefinedColour::IfcPreDefinedColour(IfcEntityInstanceData* e) : IfcPreDefinedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPreDefinedColour_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPreDefinedColour::IfcPreDefinedColour(std::string v1_Name) : IfcPreDefinedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreDefinedColour_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPreDefinedCurveFont


const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedCurveFont::declaration() const { return *IFC4X3_RC1_IfcPreDefinedCurveFont_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedCurveFont::Class() { return *IFC4X3_RC1_IfcPreDefinedCurveFont_type; }
Ifc4x3_rc1::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(IfcEntityInstanceData* e) : IfcPreDefinedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPreDefinedCurveFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreDefinedCurveFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPreDefinedItem
std::string Ifc4x3_rc1::IfcPreDefinedItem::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPreDefinedItem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedItem::declaration() const { return *IFC4X3_RC1_IfcPreDefinedItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedItem::Class() { return *IFC4X3_RC1_IfcPreDefinedItem_type; }
Ifc4x3_rc1::IfcPreDefinedItem::IfcPreDefinedItem(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPreDefinedItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPreDefinedItem::IfcPreDefinedItem(std::string v1_Name) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreDefinedItem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPreDefinedProperties


const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedProperties::declaration() const { return *IFC4X3_RC1_IfcPreDefinedProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedProperties::Class() { return *IFC4X3_RC1_IfcPreDefinedProperties_type; }
Ifc4x3_rc1::IfcPreDefinedProperties::IfcPreDefinedProperties(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPreDefinedProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPreDefinedProperties::IfcPreDefinedProperties() : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreDefinedProperties_type);  }

// Function implementations for IfcPreDefinedPropertySet


const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedPropertySet::declaration() const { return *IFC4X3_RC1_IfcPreDefinedPropertySet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedPropertySet::Class() { return *IFC4X3_RC1_IfcPreDefinedPropertySet_type; }
Ifc4x3_rc1::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(IfcEntityInstanceData* e) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPreDefinedPropertySet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreDefinedPropertySet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcPreDefinedTextFont


const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedTextFont::declaration() const { return *IFC4X3_RC1_IfcPreDefinedTextFont_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPreDefinedTextFont::Class() { return *IFC4X3_RC1_IfcPreDefinedTextFont_type; }
Ifc4x3_rc1::IfcPreDefinedTextFont::IfcPreDefinedTextFont(IfcEntityInstanceData* e) : IfcPreDefinedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPreDefinedTextFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPreDefinedTextFont::IfcPreDefinedTextFont(std::string v1_Name) : IfcPreDefinedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPreDefinedTextFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPresentationItem


const IfcParse::entity& Ifc4x3_rc1::IfcPresentationItem::declaration() const { return *IFC4X3_RC1_IfcPresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPresentationItem::Class() { return *IFC4X3_RC1_IfcPresentationItem_type; }
Ifc4x3_rc1::IfcPresentationItem::IfcPresentationItem(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPresentationItem_type);  }

// Function implementations for IfcPresentationLayerAssignment
std::string Ifc4x3_rc1::IfcPresentationLayerAssignment::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcPresentationLayerAssignment::AssignedItems() const {  aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPresentationLayerAssignment::declaration() const { return *IFC4X3_RC1_IfcPresentationLayerAssignment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPresentationLayerAssignment::Class() { return *IFC4X3_RC1_IfcPresentationLayerAssignment_type; }
Ifc4x3_rc1::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPresentationLayerAssignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of_instance::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPresentationLayerAssignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_AssignedItems));data_->setArgument(2,attr);} if (v4_Identifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Identifier));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcPresentationLayerWithStyle
boost::logic::tribool Ifc4x3_rc1::IfcPresentationLayerWithStyle::LayerOn() const {  boost::logic::tribool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcPresentationLayerWithStyle::setLayerOn(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcPresentationLayerWithStyle::LayerFrozen() const {  boost::logic::tribool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcPresentationLayerWithStyle::setLayerFrozen(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcPresentationLayerWithStyle::LayerBlocked() const {  boost::logic::tribool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcPresentationLayerWithStyle::setLayerBlocked(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcPresentationStyle >::ptr Ifc4x3_rc1::IfcPresentationLayerWithStyle::LayerStyles() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcPresentationStyle >(); }
void Ifc4x3_rc1::IfcPresentationLayerWithStyle::setLayerStyles(aggregate_of< ::Ifc4x3_rc1::IfcPresentationStyle >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPresentationLayerWithStyle::declaration() const { return *IFC4X3_RC1_IfcPresentationLayerWithStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPresentationLayerWithStyle::Class() { return *IFC4X3_RC1_IfcPresentationLayerWithStyle_type; }
Ifc4x3_rc1::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(IfcEntityInstanceData* e) : IfcPresentationLayerAssignment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPresentationLayerWithStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of_instance::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier, boost::logic::tribool v5_LayerOn, boost::logic::tribool v6_LayerFrozen, boost::logic::tribool v7_LayerBlocked, aggregate_of< ::Ifc4x3_rc1::IfcPresentationStyle >::ptr v8_LayerStyles) : IfcPresentationLayerAssignment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPresentationLayerWithStyle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_AssignedItems));data_->setArgument(2,attr);} if (v4_Identifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Identifier));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_LayerOn));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_LayerFrozen));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_LayerBlocked));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_LayerStyles)->generalize());data_->setArgument(7,attr);} }

// Function implementations for IfcPresentationStyle
boost::optional< std::string > Ifc4x3_rc1::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPresentationStyle::declaration() const { return *IFC4X3_RC1_IfcPresentationStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPresentationStyle::Class() { return *IFC4X3_RC1_IfcPresentationStyle_type; }
Ifc4x3_rc1::IfcPresentationStyle::IfcPresentationStyle(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPresentationStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPresentationStyle::IfcPresentationStyle(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPresentationStyle_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcPresentationStyleAssignment
aggregate_of_instance::ptr Ifc4x3_rc1::IfcPresentationStyleAssignment::Styles() const {  aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPresentationStyleAssignment::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPresentationStyleAssignment::declaration() const { return *IFC4X3_RC1_IfcPresentationStyleAssignment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPresentationStyleAssignment::Class() { return *IFC4X3_RC1_IfcPresentationStyleAssignment_type; }
Ifc4x3_rc1::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPresentationStyleAssignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggregate_of_instance::ptr v1_Styles) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPresentationStyleAssignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Styles));data_->setArgument(0,attr);} }

// Function implementations for IfcProcedure
boost::optional< ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value > Ifc4x3_rc1::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProcedureTypeEnum::ToString(*v)));data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProcedure::declaration() const { return *IFC4X3_RC1_IfcProcedure_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProcedure::Class() { return *IFC4X3_RC1_IfcProcedure_type; }
Ifc4x3_rc1::IfcProcedure::IfcProcedure(IfcEntityInstanceData* e) : IfcProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProcedure_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProcedure::IfcProcedure(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value > v8_PredefinedType) : IfcProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcedure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_PredefinedType,::Ifc4x3_rc1::IfcProcedureTypeEnum::ToString(*v8_PredefinedType))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcProcedureType
::Ifc4x3_rc1::IfcProcedureTypeEnum::Value Ifc4x3_rc1::IfcProcedureType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcProcedureTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcProcedureType::setPredefinedType(::Ifc4x3_rc1::IfcProcedureTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcProcedureTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProcedureType::declaration() const { return *IFC4X3_RC1_IfcProcedureType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProcedureType::Class() { return *IFC4X3_RC1_IfcProcedureType_type; }
Ifc4x3_rc1::IfcProcedureType::IfcProcedureType(IfcEntityInstanceData* e) : IfcTypeProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProcedureType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_rc1::IfcProcedureTypeEnum::Value v10_PredefinedType) : IfcTypeProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcedureType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ProcessType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ProcessType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcProcedureTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcProcess
boost::optional< std::string > Ifc4x3_rc1::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcRelSequence::list::ptr Ifc4x3_rc1::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelSequence_type, 4)->as<IfcRelSequence>(); }
::Ifc4x3_rc1::IfcRelSequence::list::ptr Ifc4x3_rc1::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X3_RC1_IfcRelSequence_type, 5)->as<IfcRelSequence>(); }
::Ifc4x3_rc1::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc1::IfcProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToProcess_type, 6)->as<IfcRelAssignsToProcess>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcProcess::declaration() const { return *IFC4X3_RC1_IfcProcess_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProcess::Class() { return *IFC4X3_RC1_IfcProcess_type; }
Ifc4x3_rc1::IfcProcess::IfcProcess(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProcess_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProcess::IfcProcess(std::string v1_GlobalId, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProcess_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcProduct
::Ifc4x3_rc1::IfcObjectPlacement* Ifc4x3_rc1::IfcProduct::ObjectPlacement() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcObjectPlacement>(); }
void Ifc4x3_rc1::IfcProduct::setObjectPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcProductRepresentation* Ifc4x3_rc1::IfcProduct::Representation() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcProductRepresentation>(); }
void Ifc4x3_rc1::IfcProduct::setRepresentation(::Ifc4x3_rc1::IfcProductRepresentation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc1::IfcProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToProduct_type, 6)->as<IfcRelAssignsToProduct>(); }
::Ifc4x3_rc1::IfcRelPositions::list::ptr Ifc4x3_rc1::IfcProduct::PositionedRelativeTo() const { return data_->getInverse(IFC4X3_RC1_IfcRelPositions_type, 5)->as<IfcRelPositions>(); }
::Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcProduct::ReferencedInStructures() const { return data_->getInverse(IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type, 4)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcProduct::declaration() const { return *IFC4X3_RC1_IfcProduct_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProduct::Class() { return *IFC4X3_RC1_IfcProduct_type; }
Ifc4x3_rc1::IfcProduct::IfcProduct(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProduct_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProduct::IfcProduct(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation) : IfcObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProduct_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} }

// Function implementations for IfcProductDefinitionShape

::Ifc4x3_rc1::IfcProduct::list::ptr Ifc4x3_rc1::IfcProductDefinitionShape::ShapeOfProduct() const { return data_->getInverse(IFC4X3_RC1_IfcProduct_type, 6)->as<IfcProduct>(); }
::Ifc4x3_rc1::IfcShapeAspect::list::ptr Ifc4x3_rc1::IfcProductDefinitionShape::HasShapeAspects() const { return data_->getInverse(IFC4X3_RC1_IfcShapeAspect_type, 4)->as<IfcShapeAspect>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcProductDefinitionShape::declaration() const { return *IFC4X3_RC1_IfcProductDefinitionShape_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProductDefinitionShape::Class() { return *IFC4X3_RC1_IfcProductDefinitionShape_type; }
Ifc4x3_rc1::IfcProductDefinitionShape::IfcProductDefinitionShape(IfcEntityInstanceData* e) : IfcProductRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProductDefinitionShape_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr v3_Representations) : IfcProductRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProductDefinitionShape_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Representations)->generalize());data_->setArgument(2,attr);} }

// Function implementations for IfcProductRepresentation
boost::optional< std::string > Ifc4x3_rc1::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr Ifc4x3_rc1::IfcProductRepresentation::Representations() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcRepresentation >(); }
void Ifc4x3_rc1::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProductRepresentation::declaration() const { return *IFC4X3_RC1_IfcProductRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProductRepresentation::Class() { return *IFC4X3_RC1_IfcProductRepresentation_type; }
Ifc4x3_rc1::IfcProductRepresentation::IfcProductRepresentation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProductRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcRepresentation >::ptr v3_Representations) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProductRepresentation_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Representations)->generalize());data_->setArgument(2,attr);} }

// Function implementations for IfcProfileDef
::Ifc4x3_rc1::IfcProfileTypeEnum::Value Ifc4x3_rc1::IfcProfileDef::ProfileType() const {  return ::Ifc4x3_rc1::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcProfileDef::setProfileType(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }

::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc1::IfcProfileProperties::list::ptr Ifc4x3_rc1::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X3_RC1_IfcProfileProperties_type, 3)->as<IfcProfileProperties>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcProfileDef::declaration() const { return *IFC4X3_RC1_IfcProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProfileDef::Class() { return *IFC4X3_RC1_IfcProfileDef_type; }
Ifc4x3_rc1::IfcProfileDef::IfcProfileDef(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProfileDef::IfcProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcProfileProperties
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcProfileProperties::ProfileDefinition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcProfileProperties::setProfileDefinition(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProfileProperties::declaration() const { return *IFC4X3_RC1_IfcProfileProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProfileProperties::Class() { return *IFC4X3_RC1_IfcProfileProperties_type; }
Ifc4x3_rc1::IfcProfileProperties::IfcProfileProperties(IfcEntityInstanceData* e) : IfcExtendedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProfileProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProfileProperties::IfcProfileProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v3_Properties, ::Ifc4x3_rc1::IfcProfileDef* v4_ProfileDefinition) : IfcExtendedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProfileProperties_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Properties)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ProfileDefinition));data_->setArgument(3,attr);} }

// Function implementations for IfcProject


const IfcParse::entity& Ifc4x3_rc1::IfcProject::declaration() const { return *IFC4X3_RC1_IfcProject_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProject::Class() { return *IFC4X3_RC1_IfcProject_type; }
Ifc4x3_rc1::IfcProject::IfcProject(IfcEntityInstanceData* e) : IfcContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProject::IfcProject(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_rc1::IfcUnitAssignment* v9_UnitsInContext) : IfcContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProject_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LongName));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Phase) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Phase));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_RepresentationContexts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RepresentationContexts)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_UnitsInContext));data_->setArgument(8,attr);} }

// Function implementations for IfcProjectLibrary


const IfcParse::entity& Ifc4x3_rc1::IfcProjectLibrary::declaration() const { return *IFC4X3_RC1_IfcProjectLibrary_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProjectLibrary::Class() { return *IFC4X3_RC1_IfcProjectLibrary_type; }
Ifc4x3_rc1::IfcProjectLibrary::IfcProjectLibrary(IfcEntityInstanceData* e) : IfcContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProjectLibrary_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_rc1::IfcUnitAssignment* v9_UnitsInContext) : IfcContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectLibrary_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LongName));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Phase) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Phase));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_RepresentationContexts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RepresentationContexts)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_UnitsInContext));data_->setArgument(8,attr);} }

// Function implementations for IfcProjectOrder
boost::optional< ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value > Ifc4x3_rc1::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectOrderTypeEnum::ToString(*v)));data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProjectOrder::declaration() const { return *IFC4X3_RC1_IfcProjectOrder_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProjectOrder::Class() { return *IFC4X3_RC1_IfcProjectOrder_type; }
Ifc4x3_rc1::IfcProjectOrder::IfcProjectOrder(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProjectOrder_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectOrder_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v7_PredefinedType,::Ifc4x3_rc1::IfcProjectOrderTypeEnum::ToString(*v7_PredefinedType))));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Status));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_LongDescription));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcProjectedCRS
boost::optional< std::string > Ifc4x3_rc1::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcNamedUnit* Ifc4x3_rc1::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcNamedUnit>(); }
void Ifc4x3_rc1::IfcProjectedCRS::setMapUnit(::Ifc4x3_rc1::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProjectedCRS::declaration() const { return *IFC4X3_RC1_IfcProjectedCRS_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProjectedCRS::Class() { return *IFC4X3_RC1_IfcProjectedCRS_type; }
Ifc4x3_rc1::IfcProjectedCRS::IfcProjectedCRS(IfcEntityInstanceData* e) : IfcCoordinateReferenceSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProjectedCRS_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcNamedUnit* v7_MapUnit) : IfcCoordinateReferenceSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectedCRS_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_GeodeticDatum) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_GeodeticDatum));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_VerticalDatum) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_VerticalDatum));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_MapProjection) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_MapProjection));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_MapZone) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_MapZone));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_MapUnit));data_->setArgument(6,attr);} }

// Function implementations for IfcProjectionElement
boost::optional< ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value > Ifc4x3_rc1::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectionElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProjectionElement::declaration() const { return *IFC4X3_RC1_IfcProjectionElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProjectionElement::Class() { return *IFC4X3_RC1_IfcProjectionElement_type; }
Ifc4x3_rc1::IfcProjectionElement::IfcProjectionElement(IfcEntityInstanceData* e) : IfcFeatureElementAddition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProjectionElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcProjectionElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementAddition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProjectionElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcProjectionElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcProperty
std::string Ifc4x3_rc1::IfcProperty::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }

::Ifc4x3_rc1::IfcPropertySet::list::ptr Ifc4x3_rc1::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X3_RC1_IfcPropertySet_type, 4)->as<IfcPropertySet>(); }
::Ifc4x3_rc1::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc1::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X3_RC1_IfcPropertyDependencyRelationship_type, 2)->as<IfcPropertyDependencyRelationship>(); }
::Ifc4x3_rc1::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc1::IfcProperty::PropertyDependsOn() const { return data_->getInverse(IFC4X3_RC1_IfcPropertyDependencyRelationship_type, 3)->as<IfcPropertyDependencyRelationship>(); }
::Ifc4x3_rc1::IfcComplexProperty::list::ptr Ifc4x3_rc1::IfcProperty::PartOfComplex() const { return data_->getInverse(IFC4X3_RC1_IfcComplexProperty_type, 3)->as<IfcComplexProperty>(); }
::Ifc4x3_rc1::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc1::IfcProperty::HasConstraints() const { return data_->getInverse(IFC4X3_RC1_IfcResourceConstraintRelationship_type, 3)->as<IfcResourceConstraintRelationship>(); }
::Ifc4x3_rc1::IfcResourceApprovalRelationship::list::ptr Ifc4x3_rc1::IfcProperty::HasApprovals() const { return data_->getInverse(IFC4X3_RC1_IfcResourceApprovalRelationship_type, 2)->as<IfcResourceApprovalRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcProperty::declaration() const { return *IFC4X3_RC1_IfcProperty_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProperty::Class() { return *IFC4X3_RC1_IfcProperty_type; }
Ifc4x3_rc1::IfcProperty::IfcProperty(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProperty_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProperty::IfcProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProperty_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcPropertyAbstraction

::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcPropertyAbstraction::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPropertyAbstraction::declaration() const { return *IFC4X3_RC1_IfcPropertyAbstraction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyAbstraction::Class() { return *IFC4X3_RC1_IfcPropertyAbstraction_type; }
Ifc4x3_rc1::IfcPropertyAbstraction::IfcPropertyAbstraction(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyAbstraction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyAbstraction::IfcPropertyAbstraction() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyAbstraction_type);  }

// Function implementations for IfcPropertyBoundedValue
::Ifc4x3_rc1::IfcValue* Ifc4x3_rc1::IfcPropertyBoundedValue::UpperBoundValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcValue>(); }
void Ifc4x3_rc1::IfcPropertyBoundedValue::setUpperBoundValue(::Ifc4x3_rc1::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcValue* Ifc4x3_rc1::IfcPropertyBoundedValue::LowerBoundValue() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcValue>(); }
void Ifc4x3_rc1::IfcPropertyBoundedValue::setLowerBoundValue(::Ifc4x3_rc1::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyBoundedValue::Unit() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcPropertyBoundedValue::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcValue* Ifc4x3_rc1::IfcPropertyBoundedValue::SetPointValue() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcValue>(); }
void Ifc4x3_rc1::IfcPropertyBoundedValue::setSetPointValue(::Ifc4x3_rc1::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyBoundedValue::declaration() const { return *IFC4X3_RC1_IfcPropertyBoundedValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyBoundedValue::Class() { return *IFC4X3_RC1_IfcPropertyBoundedValue_type; }
Ifc4x3_rc1::IfcPropertyBoundedValue::IfcPropertyBoundedValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyBoundedValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyBoundedValue::IfcPropertyBoundedValue(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcValue* v3_UpperBoundValue, ::Ifc4x3_rc1::IfcValue* v4_LowerBoundValue, ::Ifc4x3_rc1::IfcUnit* v5_Unit, ::Ifc4x3_rc1::IfcValue* v6_SetPointValue) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyBoundedValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_UpperBoundValue));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_LowerBoundValue));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_Unit));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_SetPointValue));data_->setArgument(5,attr);} }

// Function implementations for IfcPropertyDefinition

::Ifc4x3_rc1::IfcRelDeclares::list::ptr Ifc4x3_rc1::IfcPropertyDefinition::HasContext() const { return data_->getInverse(IFC4X3_RC1_IfcRelDeclares_type, 5)->as<IfcRelDeclares>(); }
::Ifc4x3_rc1::IfcRelAssociates::list::ptr Ifc4x3_rc1::IfcPropertyDefinition::HasAssociations() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssociates_type, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPropertyDefinition::declaration() const { return *IFC4X3_RC1_IfcPropertyDefinition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyDefinition::Class() { return *IFC4X3_RC1_IfcPropertyDefinition_type; }
Ifc4x3_rc1::IfcPropertyDefinition::IfcPropertyDefinition(IfcEntityInstanceData* e) : IfcRoot((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyDefinition::IfcPropertyDefinition(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyDefinition_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcPropertyDependencyRelationship
::Ifc4x3_rc1::IfcProperty* Ifc4x3_rc1::IfcPropertyDependencyRelationship::DependingProperty() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcProperty>(); }
void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x3_rc1::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcProperty* Ifc4x3_rc1::IfcPropertyDependencyRelationship::DependantProperty() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcProperty>(); }
void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_rc1::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X3_RC1_IfcPropertyDependencyRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyDependencyRelationship::Class() { return *IFC4X3_RC1_IfcPropertyDependencyRelationship_type; }
Ifc4x3_rc1::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyDependencyRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcProperty* v3_DependingProperty, ::Ifc4x3_rc1::IfcProperty* v4_DependantProperty, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyDependencyRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_DependingProperty));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_DependantProperty));data_->setArgument(3,attr);} if (v5_Expression) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Expression));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcPropertyEnumeratedValue
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcPropertyEnumeration* Ifc4x3_rc1::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcPropertyEnumeration>(); }
void Ifc4x3_rc1::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_rc1::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyEnumeratedValue::declaration() const { return *IFC4X3_RC1_IfcPropertyEnumeratedValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyEnumeratedValue::Class() { return *IFC4X3_RC1_IfcPropertyEnumeratedValue_type; }
Ifc4x3_rc1::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyEnumeratedValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of_instance::ptr > v3_EnumerationValues, ::Ifc4x3_rc1::IfcPropertyEnumeration* v4_EnumerationReference) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyEnumeratedValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_EnumerationValues) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_EnumerationValues));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_EnumerationReference));data_->setArgument(3,attr);} }

// Function implementations for IfcPropertyEnumeration
std::string Ifc4x3_rc1::IfcPropertyEnumeration::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcPropertyEnumeration::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcPropertyEnumeration::EnumerationValues() const {  aggregate_of_instance::ptr v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcPropertyEnumeration::setEnumerationValues(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyEnumeration::Unit() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcPropertyEnumeration::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyEnumeration::declaration() const { return *IFC4X3_RC1_IfcPropertyEnumeration_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyEnumeration::Class() { return *IFC4X3_RC1_IfcPropertyEnumeration_type; }
Ifc4x3_rc1::IfcPropertyEnumeration::IfcPropertyEnumeration(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyEnumeration_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, aggregate_of_instance::ptr v2_EnumerationValues, ::Ifc4x3_rc1::IfcUnit* v3_Unit) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyEnumeration_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_EnumerationValues));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);} }

// Function implementations for IfcPropertyListValue
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPropertyListValue::setListValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcPropertyListValue::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyListValue::declaration() const { return *IFC4X3_RC1_IfcPropertyListValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyListValue::Class() { return *IFC4X3_RC1_IfcPropertyListValue_type; }
Ifc4x3_rc1::IfcPropertyListValue::IfcPropertyListValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyListValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of_instance::ptr > v3_ListValues, ::Ifc4x3_rc1::IfcUnit* v4_Unit) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyListValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_ListValues) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_ListValues));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Unit));data_->setArgument(3,attr);} }

// Function implementations for IfcPropertyReferenceValue
boost::optional< std::string > Ifc4x3_rc1::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcObjectReferenceSelect* Ifc4x3_rc1::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcObjectReferenceSelect>(); }
void Ifc4x3_rc1::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_rc1::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyReferenceValue::declaration() const { return *IFC4X3_RC1_IfcPropertyReferenceValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyReferenceValue::Class() { return *IFC4X3_RC1_IfcPropertyReferenceValue_type; }
Ifc4x3_rc1::IfcPropertyReferenceValue::IfcPropertyReferenceValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyReferenceValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyReferenceValue::IfcPropertyReferenceValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UsageName, ::Ifc4x3_rc1::IfcObjectReferenceSelect* v4_PropertyReference) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyReferenceValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UsageName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UsageName));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_PropertyReference));data_->setArgument(3,attr);} }

// Function implementations for IfcPropertySet
aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr Ifc4x3_rc1::IfcPropertySet::HasProperties() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcProperty >(); }
void Ifc4x3_rc1::IfcPropertySet::setHasProperties(aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertySet::declaration() const { return *IFC4X3_RC1_IfcPropertySet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertySet::Class() { return *IFC4X3_RC1_IfcPropertySet_type; }
Ifc4x3_rc1::IfcPropertySet::IfcPropertySet(IfcEntityInstanceData* e) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertySet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertySet::IfcPropertySet(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcProperty >::ptr v5_HasProperties) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_HasProperties)->generalize());data_->setArgument(4,attr);} }

// Function implementations for IfcPropertySetDefinition

::Ifc4x3_rc1::IfcTypeObject::list::ptr Ifc4x3_rc1::IfcPropertySetDefinition::DefinesType() const { return data_->getInverse(IFC4X3_RC1_IfcTypeObject_type, 5)->as<IfcTypeObject>(); }
::Ifc4x3_rc1::IfcRelDefinesByTemplate::list::ptr Ifc4x3_rc1::IfcPropertySetDefinition::IsDefinedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByTemplate_type, 4)->as<IfcRelDefinesByTemplate>(); }
::Ifc4x3_rc1::IfcRelDefinesByProperties::list::ptr Ifc4x3_rc1::IfcPropertySetDefinition::DefinesOccurrence() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByProperties_type, 5)->as<IfcRelDefinesByProperties>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPropertySetDefinition::declaration() const { return *IFC4X3_RC1_IfcPropertySetDefinition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertySetDefinition::Class() { return *IFC4X3_RC1_IfcPropertySetDefinition_type; }
Ifc4x3_rc1::IfcPropertySetDefinition::IfcPropertySetDefinition(IfcEntityInstanceData* e) : IfcPropertyDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertySetDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetDefinition_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcPropertySetTemplate
boost::optional< ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_rc1::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr Ifc4x3_rc1::IfcPropertySetTemplate::HasPropertyTemplates() const {  aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcPropertyTemplate >(); }
void Ifc4x3_rc1::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcRelDefinesByTemplate::list::ptr Ifc4x3_rc1::IfcPropertySetTemplate::Defines() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByTemplate_type, 5)->as<IfcRelDefinesByTemplate>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPropertySetTemplate::declaration() const { return *IFC4X3_RC1_IfcPropertySetTemplate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertySetTemplate::Class() { return *IFC4X3_RC1_IfcPropertySetTemplate_type; }
Ifc4x3_rc1::IfcPropertySetTemplate::IfcPropertySetTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertySetTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertySetTemplate::IfcPropertySetTemplate(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_ApplicableEntity, aggregate_of< ::Ifc4x3_rc1::IfcPropertyTemplate >::ptr v7_HasPropertyTemplates) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySetTemplate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_TemplateType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v5_TemplateType,::Ifc4x3_rc1::IfcPropertySetTemplateTypeEnum::ToString(*v5_TemplateType))));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_ApplicableEntity) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_ApplicableEntity));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_HasPropertyTemplates)->generalize());data_->setArgument(6,attr);} }

// Function implementations for IfcPropertySingleValue
::Ifc4x3_rc1::IfcValue* Ifc4x3_rc1::IfcPropertySingleValue::NominalValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcValue>(); }
void Ifc4x3_rc1::IfcPropertySingleValue::setNominalValue(::Ifc4x3_rc1::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertySingleValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcPropertySingleValue::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertySingleValue::declaration() const { return *IFC4X3_RC1_IfcPropertySingleValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertySingleValue::Class() { return *IFC4X3_RC1_IfcPropertySingleValue_type; }
Ifc4x3_rc1::IfcPropertySingleValue::IfcPropertySingleValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertySingleValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcValue* v3_NominalValue, ::Ifc4x3_rc1::IfcUnit* v4_Unit) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertySingleValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_NominalValue));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Unit));data_->setArgument(3,attr);} }

// Function implementations for IfcPropertyTableValue
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcCurveInterpolationEnum::Value > Ifc4x3_rc1::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc1::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcCurveInterpolationEnum::ToString(*v)));data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTableValue::declaration() const { return *IFC4X3_RC1_IfcPropertyTableValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTableValue::Class() { return *IFC4X3_RC1_IfcPropertyTableValue_type; }
Ifc4x3_rc1::IfcPropertyTableValue::IfcPropertyTableValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyTableValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyTableValue::IfcPropertyTableValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of_instance::ptr > v3_DefiningValues, boost::optional< aggregate_of_instance::ptr > v4_DefinedValues, boost::optional< std::string > v5_Expression, ::Ifc4x3_rc1::IfcUnit* v6_DefiningUnit, ::Ifc4x3_rc1::IfcUnit* v7_DefinedUnit, boost::optional< ::Ifc4x3_rc1::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyTableValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_DefiningValues) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_DefiningValues));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_DefinedValues) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_DefinedValues));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Expression) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Expression));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_DefiningUnit));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_DefinedUnit));data_->setArgument(6,attr);} if (v8_CurveInterpolation) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_CurveInterpolation,::Ifc4x3_rc1::IfcCurveInterpolationEnum::ToString(*v8_CurveInterpolation))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcPropertyTemplate

::Ifc4x3_rc1::IfcComplexPropertyTemplate::list::ptr Ifc4x3_rc1::IfcPropertyTemplate::PartOfComplexTemplate() const { return data_->getInverse(IFC4X3_RC1_IfcComplexPropertyTemplate_type, 6)->as<IfcComplexPropertyTemplate>(); }
::Ifc4x3_rc1::IfcPropertySetTemplate::list::ptr Ifc4x3_rc1::IfcPropertyTemplate::PartOfPsetTemplate() const { return data_->getInverse(IFC4X3_RC1_IfcPropertySetTemplate_type, 6)->as<IfcPropertySetTemplate>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTemplate::declaration() const { return *IFC4X3_RC1_IfcPropertyTemplate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTemplate::Class() { return *IFC4X3_RC1_IfcPropertyTemplate_type; }
Ifc4x3_rc1::IfcPropertyTemplate::IfcPropertyTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyTemplate::IfcPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyTemplate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcPropertyTemplateDefinition


const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTemplateDefinition::declaration() const { return *IFC4X3_RC1_IfcPropertyTemplateDefinition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPropertyTemplateDefinition::Class() { return *IFC4X3_RC1_IfcPropertyTemplateDefinition_type; }
Ifc4x3_rc1::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(IfcEntityInstanceData* e) : IfcPropertyDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPropertyTemplateDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPropertyTemplateDefinition_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcProtectiveDevice
boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_rc1::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDevice::declaration() const { return *IFC4X3_RC1_IfcProtectiveDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDevice::Class() { return *IFC4X3_RC1_IfcProtectiveDevice_type; }
Ifc4x3_rc1::IfcProtectiveDevice::IfcProtectiveDevice(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProtectiveDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcProtectiveDeviceTrippingUnit
boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::Class() { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnit_type; }
Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProtectiveDeviceTrippingUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTrippingUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcProtectiveDeviceTrippingUnitType
::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitType::setPredefinedType(::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitType::declaration() const { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitType::Class() { return *IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitType_type; }
Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceTrippingUnitType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcProtectiveDeviceType
::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value Ifc4x3_rc1::IfcProtectiveDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcProtectiveDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceType::declaration() const { return *IFC4X3_RC1_IfcProtectiveDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProtectiveDeviceType::Class() { return *IFC4X3_RC1_IfcProtectiveDeviceType_type; }
Ifc4x3_rc1::IfcProtectiveDeviceType::IfcProtectiveDeviceType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProtectiveDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProtectiveDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcProtectiveDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcProxy
::Ifc4x3_rc1::IfcObjectTypeEnum::Value Ifc4x3_rc1::IfcProxy::ProxyType() const {  return ::Ifc4x3_rc1::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcProxy::setProxyType(::Ifc4x3_rc1::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcProxy::declaration() const { return *IFC4X3_RC1_IfcProxy_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcProxy::Class() { return *IFC4X3_RC1_IfcProxy_type; }
Ifc4x3_rc1::IfcProxy::IfcProxy(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcProxy_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcObjectTypeEnum::Value v8_ProxyType, boost::optional< std::string > v9_Tag) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcProxy_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_ProxyType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(v8_ProxyType))));data_->setArgument(7,attr);} if (v9_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Tag));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPump
boost::optional< ::Ifc4x3_rc1::IfcPumpTypeEnum::Value > Ifc4x3_rc1::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcPumpTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPump::declaration() const { return *IFC4X3_RC1_IfcPump_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPump::Class() { return *IFC4X3_RC1_IfcPump_type; }
Ifc4x3_rc1::IfcPump::IfcPump(IfcEntityInstanceData* e) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPump_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPump::IfcPump(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcPumpTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPump_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcPumpTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcPumpType
::Ifc4x3_rc1::IfcPumpTypeEnum::Value Ifc4x3_rc1::IfcPumpType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcPumpTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcPumpType::setPredefinedType(::Ifc4x3_rc1::IfcPumpTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPumpTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcPumpType::declaration() const { return *IFC4X3_RC1_IfcPumpType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcPumpType::Class() { return *IFC4X3_RC1_IfcPumpType_type; }
Ifc4x3_rc1::IfcPumpType::IfcPumpType(IfcEntityInstanceData* e) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcPumpType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcPumpTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcPumpType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcPumpTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcQuantityArea
double Ifc4x3_rc1::IfcQuantityArea::AreaValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcQuantityArea::declaration() const { return *IFC4X3_RC1_IfcQuantityArea_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantityArea::Class() { return *IFC4X3_RC1_IfcQuantityArea_type; }
Ifc4x3_rc1::IfcQuantityArea::IfcQuantityArea(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantityArea_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit, double v4_AreaValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantityArea_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_AreaValue));data_->setArgument(3,attr);} if (v5_Formula) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Formula));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcQuantityCount
double Ifc4x3_rc1::IfcQuantityCount::CountValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcQuantityCount::declaration() const { return *IFC4X3_RC1_IfcQuantityCount_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantityCount::Class() { return *IFC4X3_RC1_IfcQuantityCount_type; }
Ifc4x3_rc1::IfcQuantityCount::IfcQuantityCount(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantityCount_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit, double v4_CountValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantityCount_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_CountValue));data_->setArgument(3,attr);} if (v5_Formula) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Formula));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcQuantityLength
double Ifc4x3_rc1::IfcQuantityLength::LengthValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcQuantityLength::declaration() const { return *IFC4X3_RC1_IfcQuantityLength_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantityLength::Class() { return *IFC4X3_RC1_IfcQuantityLength_type; }
Ifc4x3_rc1::IfcQuantityLength::IfcQuantityLength(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantityLength_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantityLength::IfcQuantityLength(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit, double v4_LengthValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantityLength_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_LengthValue));data_->setArgument(3,attr);} if (v5_Formula) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Formula));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcQuantitySet


const IfcParse::entity& Ifc4x3_rc1::IfcQuantitySet::declaration() const { return *IFC4X3_RC1_IfcQuantitySet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantitySet::Class() { return *IFC4X3_RC1_IfcQuantitySet_type; }
Ifc4x3_rc1::IfcQuantitySet::IfcQuantitySet(IfcEntityInstanceData* e) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantitySet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantitySet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcQuantityTime
double Ifc4x3_rc1::IfcQuantityTime::TimeValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcQuantityTime::declaration() const { return *IFC4X3_RC1_IfcQuantityTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantityTime::Class() { return *IFC4X3_RC1_IfcQuantityTime_type; }
Ifc4x3_rc1::IfcQuantityTime::IfcQuantityTime(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantityTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit, double v4_TimeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantityTime_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TimeValue));data_->setArgument(3,attr);} if (v5_Formula) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Formula));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcQuantityVolume
double Ifc4x3_rc1::IfcQuantityVolume::VolumeValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcQuantityVolume::declaration() const { return *IFC4X3_RC1_IfcQuantityVolume_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantityVolume::Class() { return *IFC4X3_RC1_IfcQuantityVolume_type; }
Ifc4x3_rc1::IfcQuantityVolume::IfcQuantityVolume(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantityVolume_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit, double v4_VolumeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantityVolume_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_VolumeValue));data_->setArgument(3,attr);} if (v5_Formula) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Formula));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcQuantityWeight
double Ifc4x3_rc1::IfcQuantityWeight::WeightValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcQuantityWeight::declaration() const { return *IFC4X3_RC1_IfcQuantityWeight_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcQuantityWeight::Class() { return *IFC4X3_RC1_IfcQuantityWeight_type; }
Ifc4x3_rc1::IfcQuantityWeight::IfcQuantityWeight(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcQuantityWeight_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcNamedUnit* v3_Unit, double v4_WeightValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcQuantityWeight_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Unit));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_WeightValue));data_->setArgument(3,attr);} if (v5_Formula) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Formula));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcRail
boost::optional< ::Ifc4x3_rc1::IfcRailTypeEnum::Value > Ifc4x3_rc1::IfcRail::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRailTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRailTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRail::declaration() const { return *IFC4X3_RC1_IfcRail_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRail::Class() { return *IFC4X3_RC1_IfcRail_type; }
Ifc4x3_rc1::IfcRail::IfcRail(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRail_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRail::IfcRail(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcRailTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRail_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcRailTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRailType
::Ifc4x3_rc1::IfcRailTypeEnum::Value Ifc4x3_rc1::IfcRailType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcRailTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcRailType::setPredefinedType(::Ifc4x3_rc1::IfcRailTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRailTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRailType::declaration() const { return *IFC4X3_RC1_IfcRailType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRailType::Class() { return *IFC4X3_RC1_IfcRailType_type; }
Ifc4x3_rc1::IfcRailType::IfcRailType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRailType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcRailTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcRailTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRailing
boost::optional< ::Ifc4x3_rc1::IfcRailingTypeEnum::Value > Ifc4x3_rc1::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRailingTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRailing::declaration() const { return *IFC4X3_RC1_IfcRailing_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRailing::Class() { return *IFC4X3_RC1_IfcRailing_type; }
Ifc4x3_rc1::IfcRailing::IfcRailing(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRailing_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRailing::IfcRailing(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcRailingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailing_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcRailingTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRailingType
::Ifc4x3_rc1::IfcRailingTypeEnum::Value Ifc4x3_rc1::IfcRailingType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcRailingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcRailingType::setPredefinedType(::Ifc4x3_rc1::IfcRailingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRailingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRailingType::declaration() const { return *IFC4X3_RC1_IfcRailingType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRailingType::Class() { return *IFC4X3_RC1_IfcRailingType_type; }
Ifc4x3_rc1::IfcRailingType::IfcRailingType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRailingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcRailingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailingType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcRailingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRailway


const IfcParse::entity& Ifc4x3_rc1::IfcRailway::declaration() const { return *IFC4X3_RC1_IfcRailway_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRailway::Class() { return *IFC4X3_RC1_IfcRailway_type; }
Ifc4x3_rc1::IfcRailway::IfcRailway(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRailway_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRailway_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRamp
boost::optional< ::Ifc4x3_rc1::IfcRampTypeEnum::Value > Ifc4x3_rc1::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRampTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRampTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRamp::declaration() const { return *IFC4X3_RC1_IfcRamp_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRamp::Class() { return *IFC4X3_RC1_IfcRamp_type; }
Ifc4x3_rc1::IfcRamp::IfcRamp(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRamp_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcRampTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRamp_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcRampTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRampFlight
boost::optional< ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value > Ifc4x3_rc1::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRampFlightTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRampFlight::declaration() const { return *IFC4X3_RC1_IfcRampFlight_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRampFlight::Class() { return *IFC4X3_RC1_IfcRampFlight_type; }
Ifc4x3_rc1::IfcRampFlight::IfcRampFlight(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRampFlight_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRampFlight::IfcRampFlight(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampFlight_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcRampFlightTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRampFlightType
::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value Ifc4x3_rc1::IfcRampFlightType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcRampFlightTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcRampFlightType::setPredefinedType(::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRampFlightTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRampFlightType::declaration() const { return *IFC4X3_RC1_IfcRampFlightType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRampFlightType::Class() { return *IFC4X3_RC1_IfcRampFlightType_type; }
Ifc4x3_rc1::IfcRampFlightType::IfcRampFlightType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRampFlightType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRampFlightType::IfcRampFlightType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcRampFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampFlightType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcRampFlightTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRampType
::Ifc4x3_rc1::IfcRampTypeEnum::Value Ifc4x3_rc1::IfcRampType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcRampTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcRampType::setPredefinedType(::Ifc4x3_rc1::IfcRampTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRampTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRampType::declaration() const { return *IFC4X3_RC1_IfcRampType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRampType::Class() { return *IFC4X3_RC1_IfcRampType_type; }
Ifc4x3_rc1::IfcRampType::IfcRampType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRampType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRampType::IfcRampType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcRampTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRampType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcRampTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRationalBSplineCurveWithKnots
std::vector< double > /*[2:?]*/ Ifc4x3_rc1::IfcRationalBSplineCurveWithKnots::WeightsData() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRationalBSplineCurveWithKnots::setWeightsData(std::vector< double > /*[2:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRationalBSplineCurveWithKnots::declaration() const { return *IFC4X3_RC1_IfcRationalBSplineCurveWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRationalBSplineCurveWithKnots::Class() { return *IFC4X3_RC1_IfcRationalBSplineCurveWithKnots_type; }
Ifc4x3_rc1::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(IfcEntityInstanceData* e) : IfcBSplineCurveWithKnots((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRationalBSplineCurveWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(int v1_Degree, aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_rc1::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect, std::vector< int > /*[2:?]*/ v6_KnotMultiplicities, std::vector< double > /*[2:?]*/ v7_Knots, ::Ifc4x3_rc1::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData) : IfcBSplineCurveWithKnots((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRationalBSplineCurveWithKnots_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Degree));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ControlPointsList)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_CurveForm,::Ifc4x3_rc1::IfcBSplineCurveForm::ToString(v3_CurveForm))));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ClosedCurve));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_SelfIntersect));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_KnotMultiplicities));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Knots));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_KnotSpec,::Ifc4x3_rc1::IfcKnotType::ToString(v8_KnotSpec))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_WeightsData));data_->setArgument(8,attr);} }

// Function implementations for IfcRationalBSplineSurfaceWithKnots
std::vector< std::vector< double > > Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::WeightsData() const {  std::vector< std::vector< double > > v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::setWeightsData(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::declaration() const { return *IFC4X3_RC1_IfcRationalBSplineSurfaceWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::Class() { return *IFC4X3_RC1_IfcRationalBSplineSurfaceWithKnots_type; }
Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(IfcEntityInstanceData* e) : IfcBSplineSurfaceWithKnots((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRationalBSplineSurfaceWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_rc1::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_rc1::IfcBSplineSurfaceForm::Value 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, ::Ifc4x3_rc1::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData) : IfcBSplineSurfaceWithKnots((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRationalBSplineSurfaceWithKnots_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_UDegree));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_VDegree));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ControlPointsList)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v4_SurfaceForm,::Ifc4x3_rc1::IfcBSplineSurfaceForm::ToString(v4_SurfaceForm))));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_UClosed));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_VClosed));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_SelfIntersect));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_UMultiplicities));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_VMultiplicities));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_UKnots));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_VKnots));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_KnotSpec,::Ifc4x3_rc1::IfcKnotType::ToString(v12_KnotSpec))));data_->setArgument(11,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v13_WeightsData));data_->setArgument(12,attr);} }

// Function implementations for IfcRectangleHollowProfileDef
double Ifc4x3_rc1::IfcRectangleHollowProfileDef::WallThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X3_RC1_IfcRectangleHollowProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRectangleHollowProfileDef::Class() { return *IFC4X3_RC1_IfcRectangleHollowProfileDef_type; }
Ifc4x3_rc1::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcEntityInstanceData* e) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRectangleHollowProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_WallThickness, boost::optional< double > v7_InnerFilletRadius, boost::optional< double > v8_OuterFilletRadius) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRectangleHollowProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_XDim));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_YDim));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WallThickness));data_->setArgument(5,attr);} if (v7_InnerFilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_InnerFilletRadius));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_OuterFilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_OuterFilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcRectangleProfileDef
double Ifc4x3_rc1::IfcRectangleProfileDef::XDim() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcRectangleProfileDef::setXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcRectangleProfileDef::YDim() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcRectangleProfileDef::setYDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRectangleProfileDef::declaration() const { return *IFC4X3_RC1_IfcRectangleProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRectangleProfileDef::Class() { return *IFC4X3_RC1_IfcRectangleProfileDef_type; }
Ifc4x3_rc1::IfcRectangleProfileDef::IfcRectangleProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRectangleProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRectangleProfileDef::IfcRectangleProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRectangleProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_XDim));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_YDim));data_->setArgument(4,attr);} }

// Function implementations for IfcRectangularPyramid
double Ifc4x3_rc1::IfcRectangularPyramid::XLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRectangularPyramid::setXLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcRectangularPyramid::YLength() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRectangularPyramid::setYLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcRectangularPyramid::Height() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcRectangularPyramid::setHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRectangularPyramid::declaration() const { return *IFC4X3_RC1_IfcRectangularPyramid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRectangularPyramid::Class() { return *IFC4X3_RC1_IfcRectangularPyramid_type; }
Ifc4x3_rc1::IfcRectangularPyramid::IfcRectangularPyramid(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRectangularPyramid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRectangularPyramid::IfcRectangularPyramid(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRectangularPyramid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_XLength));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_YLength));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Height));data_->setArgument(3,attr);} }

// Function implementations for IfcRectangularTrimmedSurface
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcRectangularTrimmedSurface::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setBasisSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcRectangularTrimmedSurface::U1() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setU1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcRectangularTrimmedSurface::V1() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setV1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcRectangularTrimmedSurface::U2() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setU2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcRectangularTrimmedSurface::V2() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setV2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
bool Ifc4x3_rc1::IfcRectangularTrimmedSurface::Usense() const {  bool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setUsense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
bool Ifc4x3_rc1::IfcRectangularTrimmedSurface::Vsense() const {  bool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcRectangularTrimmedSurface::setVsense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRectangularTrimmedSurface::declaration() const { return *IFC4X3_RC1_IfcRectangularTrimmedSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRectangularTrimmedSurface::Class() { return *IFC4X3_RC1_IfcRectangularTrimmedSurface_type; }
Ifc4x3_rc1::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRectangularTrimmedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_rc1::IfcSurface* v1_BasisSurface, double v2_U1, double v3_V1, double v4_U2, double v5_V2, bool v6_Usense, bool v7_Vsense) : IfcBoundedSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRectangularTrimmedSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisSurface));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_U1));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_V1));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_U2));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_V2));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Usense));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Vsense));data_->setArgument(6,attr);} }

// Function implementations for IfcRecurrencePattern
::Ifc4x3_rc1::IfcRecurrenceTypeEnum::Value Ifc4x3_rc1::IfcRecurrencePattern::RecurrenceType() const {  return ::Ifc4x3_rc1::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_rc1::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcRecurrencePattern::DayComponent() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcRecurrencePattern::WeekdayComponent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcRecurrencePattern::MonthComponent() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTimePeriod >::ptr > Ifc4x3_rc1::IfcRecurrencePattern::TimePeriods() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcTimePeriod >(); }
void Ifc4x3_rc1::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRecurrencePattern::declaration() const { return *IFC4X3_RC1_IfcRecurrencePattern_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRecurrencePattern::Class() { return *IFC4X3_RC1_IfcRecurrencePattern_type; }
Ifc4x3_rc1::IfcRecurrencePattern::IfcRecurrencePattern(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRecurrencePattern_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_rc1::IfcRecurrenceTypeEnum::Value v1_RecurrenceType, boost::optional< std::vector< int > /*[1:?]*/ > v2_DayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v3_WeekdayComponent, boost::optional< std::vector< int > /*[1:?]*/ > v4_MonthComponent, boost::optional< int > v5_Position, boost::optional< int > v6_Interval, boost::optional< int > v7_Occurrences, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTimePeriod >::ptr > v8_TimePeriods) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRecurrencePattern_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_RecurrenceType,::Ifc4x3_rc1::IfcRecurrenceTypeEnum::ToString(v1_RecurrenceType))));data_->setArgument(0,attr);} if (v2_DayComponent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_DayComponent));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_WeekdayComponent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_WeekdayComponent));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_MonthComponent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_MonthComponent));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_Position) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Position));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Interval) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Interval));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Occurrences) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Occurrences));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_TimePeriods) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_TimePeriods)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcReference
boost::optional< std::string > Ifc4x3_rc1::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcReference::ListPositions() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcReference* Ifc4x3_rc1::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcReference>(); }
void Ifc4x3_rc1::IfcReference::setInnerReference(::Ifc4x3_rc1::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReference::declaration() const { return *IFC4X3_RC1_IfcReference_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReference::Class() { return *IFC4X3_RC1_IfcReference_type; }
Ifc4x3_rc1::IfcReference::IfcReference(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcReference* v5_InnerReference) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReference_type);  if (v1_TypeIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_TypeIdentifier));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_AttributeIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_AttributeIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_InstanceName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_InstanceName));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ListPositions) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ListPositions));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_InnerReference));data_->setArgument(4,attr);} }

// Function implementations for IfcReferent
boost::optional< ::Ifc4x3_rc1::IfcReferentTypeEnum::Value > Ifc4x3_rc1::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReferentTypeEnum::ToString(*v)));data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReferent::declaration() const { return *IFC4X3_RC1_IfcReferent_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReferent::Class() { return *IFC4X3_RC1_IfcReferent_type; }
Ifc4x3_rc1::IfcReferent::IfcReferent(IfcEntityInstanceData* e) : IfcPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReferent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReferent::IfcReferent(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_rc1::IfcReferentTypeEnum::Value > v8_PredefinedType, boost::optional< double > v9_RestartDistance) : IfcPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReferent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_PredefinedType,::Ifc4x3_rc1::IfcReferentTypeEnum::ToString(*v8_PredefinedType))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_RestartDistance) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_RestartDistance));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRegularTimeSeries
double Ifc4x3_rc1::IfcRegularTimeSeries::TimeStep() const {  double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRegularTimeSeries::setTimeStep(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcTimeSeriesValue >::ptr Ifc4x3_rc1::IfcRegularTimeSeries::Values() const {  aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc1::IfcTimeSeriesValue >(); }
void Ifc4x3_rc1::IfcRegularTimeSeries::setValues(aggregate_of< ::Ifc4x3_rc1::IfcTimeSeriesValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRegularTimeSeries::declaration() const { return *IFC4X3_RC1_IfcRegularTimeSeries_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRegularTimeSeries::Class() { return *IFC4X3_RC1_IfcRegularTimeSeries_type; }
Ifc4x3_rc1::IfcRegularTimeSeries::IfcRegularTimeSeries(IfcEntityInstanceData* e) : IfcTimeSeries((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRegularTimeSeries_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_rc1::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_rc1::IfcUnit* v8_Unit, double v9_TimeStep, aggregate_of< ::Ifc4x3_rc1::IfcTimeSeriesValue >::ptr v10_Values) : IfcTimeSeries((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRegularTimeSeries_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_StartTime));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_EndTime));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_TimeSeriesDataType,::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(v6_DataOrigin))));data_->setArgument(5,attr);} if (v7_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_UserDefinedDataOrigin));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Unit));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_TimeStep));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_Values)->generalize());data_->setArgument(9,attr);} }

// Function implementations for IfcReinforcedSoil
boost::optional< ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_rc1::IfcReinforcedSoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcedSoil::declaration() const { return *IFC4X3_RC1_IfcReinforcedSoil_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcedSoil::Class() { return *IFC4X3_RC1_IfcReinforcedSoil_type; }
Ifc4x3_rc1::IfcReinforcedSoil::IfcReinforcedSoil(IfcEntityInstanceData* e) : IfcEarthworksElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcedSoil_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcedSoil::IfcReinforcedSoil(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcedSoil_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcReinforcedSoilTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcReinforcementBarProperties
double Ifc4x3_rc1::IfcReinforcementBarProperties::TotalCrossSectionArea() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc1::IfcReinforcementBarProperties::SteelGrade() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc1::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcementBarProperties::declaration() const { return *IFC4X3_RC1_IfcReinforcementBarProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcementBarProperties::Class() { return *IFC4X3_RC1_IfcReinforcementBarProperties_type; }
Ifc4x3_rc1::IfcReinforcementBarProperties::IfcReinforcementBarProperties(IfcEntityInstanceData* e) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcementBarProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v3_BarSurface, boost::optional< double > v4_EffectiveDepth, boost::optional< double > v5_NominalBarDiameter, boost::optional< double > v6_BarCount) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcementBarProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TotalCrossSectionArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SteelGrade));data_->setArgument(1,attr);} if (v3_BarSurface) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v3_BarSurface,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v3_BarSurface))));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_EffectiveDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_EffectiveDepth));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_NominalBarDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_NominalBarDiameter));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_BarCount) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_BarCount));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcReinforcementDefinitionProperties
boost::optional< std::string > Ifc4x3_rc1::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >::ptr Ifc4x3_rc1::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >(); }
void Ifc4x3_rc1::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcementDefinitionProperties::declaration() const { return *IFC4X3_RC1_IfcReinforcementDefinitionProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcementDefinitionProperties::Class() { return *IFC4X3_RC1_IfcReinforcementDefinitionProperties_type; }
Ifc4x3_rc1::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcementDefinitionProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, aggregate_of< ::Ifc4x3_rc1::IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcementDefinitionProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_DefinitionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_DefinitionType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ReinforcementSectionDefinitions)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcReinforcingBar
boost::optional< double > Ifc4x3_rc1::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value > Ifc4x3_rc1::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); }
void Ifc4x3_rc1::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(*v)));data_->setArgument(12,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc1::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc1::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingBar::declaration() const { return *IFC4X3_RC1_IfcReinforcingBar_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingBar::Class() { return *IFC4X3_RC1_IfcReinforcingBar_type; }
Ifc4x3_rc1::IfcReinforcingBar::IfcReinforcingBar(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcingBar_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBar_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SteelGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SteelGrade));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_NominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_NominalDiameter));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_CrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_CrossSectionArea));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_BarLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_BarLength));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v13_PredefinedType,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(*v13_PredefinedType))));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_BarSurface) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v14_BarSurface,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v14_BarSurface))));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } }

// Function implementations for IfcReinforcingBarType
::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc1::IfcReinforcingBarType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc1::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc1::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v)));data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingBarType::declaration() const { return *IFC4X3_RC1_IfcReinforcingBarType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingBarType::Class() { return *IFC4X3_RC1_IfcReinforcingBarType_type; }
Ifc4x3_rc1::IfcReinforcingBarType::IfcReinforcingBarType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcingBarType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_BarLength, boost::optional< ::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, boost::optional< std::string > v15_BendingShapeCode, boost::optional< aggregate_of_instance::ptr > v16_BendingParameters) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingBarType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcReinforcingBarTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_NominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_NominalDiameter));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_CrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_CrossSectionArea));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_BarLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_BarLength));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_BarSurface) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v14_BarSurface,::Ifc4x3_rc1::IfcReinforcingBarSurfaceEnum::ToString(*v14_BarSurface))));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_BendingShapeCode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_BendingShapeCode));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_BendingParameters) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_BendingParameters));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } }

// Function implementations for IfcReinforcingElement
boost::optional< std::string > Ifc4x3_rc1::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingElement::declaration() const { return *IFC4X3_RC1_IfcReinforcingElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingElement::Class() { return *IFC4X3_RC1_IfcReinforcingElement_type; }
Ifc4x3_rc1::IfcReinforcingElement::IfcReinforcingElement(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcingElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SteelGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SteelGrade));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcReinforcingElementType


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingElementType::declaration() const { return *IFC4X3_RC1_IfcReinforcingElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingElementType::Class() { return *IFC4X3_RC1_IfcReinforcingElementType_type; }
Ifc4x3_rc1::IfcReinforcingElementType::IfcReinforcingElementType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcingElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcReinforcingMesh
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc1::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_rc1::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); }
void Ifc4x3_rc1::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(*v)));data_->setArgument(17,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingMesh::declaration() const { return *IFC4X3_RC1_IfcReinforcingMesh_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingMesh::Class() { return *IFC4X3_RC1_IfcReinforcingMesh_type; }
Ifc4x3_rc1::IfcReinforcingMesh::IfcReinforcingMesh(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcingMesh_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingMesh_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SteelGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SteelGrade));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_MeshLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_MeshLength));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_MeshWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_MeshWidth));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_LongitudinalBarNominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_LongitudinalBarNominalDiameter));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_TransverseBarNominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_TransverseBarNominalDiameter));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_LongitudinalBarCrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_LongitudinalBarCrossSectionArea));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_TransverseBarCrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_TransverseBarCrossSectionArea));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_LongitudinalBarSpacing) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_LongitudinalBarSpacing));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_TransverseBarSpacing) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_TransverseBarSpacing));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } if (v18_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v18_PredefinedType,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(*v18_PredefinedType))));data_->setArgument(17,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(17, attr); } }

// Function implementations for IfcReinforcingMeshType
::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc1::IfcReinforcingMeshType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} }
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(19); return v; }
void Ifc4x3_rc1::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingMeshType::declaration() const { return *IFC4X3_RC1_IfcReinforcingMeshType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReinforcingMeshType::Class() { return *IFC4X3_RC1_IfcReinforcingMeshType_type; }
Ifc4x3_rc1::IfcReinforcingMeshType::IfcReinforcingMeshType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReinforcingMeshType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReinforcingMeshType::IfcReinforcingMeshType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_MeshLength, boost::optional< double > v12_MeshWidth, boost::optional< double > v13_LongitudinalBarNominalDiameter, boost::optional< double > v14_TransverseBarNominalDiameter, boost::optional< double > v15_LongitudinalBarCrossSectionArea, boost::optional< double > v16_TransverseBarCrossSectionArea, boost::optional< double > v17_LongitudinalBarSpacing, boost::optional< double > v18_TransverseBarSpacing, boost::optional< std::string > v19_BendingShapeCode, boost::optional< aggregate_of_instance::ptr > v20_BendingParameters) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReinforcingMeshType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcReinforcingMeshTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_MeshLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_MeshLength));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_MeshWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_MeshWidth));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_LongitudinalBarNominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_LongitudinalBarNominalDiameter));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_TransverseBarNominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_TransverseBarNominalDiameter));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_LongitudinalBarCrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_LongitudinalBarCrossSectionArea));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_TransverseBarCrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_TransverseBarCrossSectionArea));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_LongitudinalBarSpacing) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_LongitudinalBarSpacing));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } if (v18_TransverseBarSpacing) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v18_TransverseBarSpacing));data_->setArgument(17,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(17, attr); } if (v19_BendingShapeCode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v19_BendingShapeCode));data_->setArgument(18,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(18, attr); } if (v20_BendingParameters) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v20_BendingParameters));data_->setArgument(19,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(19, attr); } }

// Function implementations for IfcRelAggregates
::Ifc4x3_rc1::IfcObjectDefinition* Ifc4x3_rc1::IfcRelAggregates::RelatingObject() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcObjectDefinition>(); }
void Ifc4x3_rc1::IfcRelAggregates::setRelatingObject(::Ifc4x3_rc1::IfcObjectDefinition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr Ifc4x3_rc1::IfcRelAggregates::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcObjectDefinition >(); }
void Ifc4x3_rc1::IfcRelAggregates::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAggregates::declaration() const { return *IFC4X3_RC1_IfcRelAggregates_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAggregates::Class() { return *IFC4X3_RC1_IfcRelAggregates_type; }
Ifc4x3_rc1::IfcRelAggregates::IfcRelAggregates(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAggregates_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAggregates_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingObject));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedObjects)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssigns
aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr Ifc4x3_rc1::IfcRelAssigns::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcObjectDefinition >(); }
void Ifc4x3_rc1::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > Ifc4x3_rc1::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v)));data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssigns::declaration() const { return *IFC4X3_RC1_IfcRelAssigns_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssigns::Class() { return *IFC4X3_RC1_IfcRelAssigns_type; }
Ifc4x3_rc1::IfcRelAssigns::IfcRelAssigns(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssigns_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssigns::IfcRelAssigns(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssigns_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcRelAssignsToActor
::Ifc4x3_rc1::IfcActor* Ifc4x3_rc1::IfcRelAssignsToActor::RelatingActor() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcActor>(); }
void Ifc4x3_rc1::IfcRelAssignsToActor::setRelatingActor(::Ifc4x3_rc1::IfcActor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcActorRole* Ifc4x3_rc1::IfcRelAssignsToActor::ActingRole() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcActorRole>(); }
void Ifc4x3_rc1::IfcRelAssignsToActor::setActingRole(::Ifc4x3_rc1::IfcActorRole* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToActor::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToActor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToActor::Class() { return *IFC4X3_RC1_IfcRelAssignsToActor_type; }
Ifc4x3_rc1::IfcRelAssignsToActor::IfcRelAssignsToActor(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToActor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToActor::IfcRelAssignsToActor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcActor* v7_RelatingActor, ::Ifc4x3_rc1::IfcActorRole* v8_ActingRole) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToActor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingActor));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_ActingRole));data_->setArgument(7,attr);} }

// Function implementations for IfcRelAssignsToControl
::Ifc4x3_rc1::IfcControl* Ifc4x3_rc1::IfcRelAssignsToControl::RelatingControl() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcControl>(); }
void Ifc4x3_rc1::IfcRelAssignsToControl::setRelatingControl(::Ifc4x3_rc1::IfcControl* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToControl::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToControl_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToControl::Class() { return *IFC4X3_RC1_IfcRelAssignsToControl_type; }
Ifc4x3_rc1::IfcRelAssignsToControl::IfcRelAssignsToControl(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToControl::IfcRelAssignsToControl(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcControl* v7_RelatingControl) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToControl_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingControl));data_->setArgument(6,attr);} }

// Function implementations for IfcRelAssignsToGroup
::Ifc4x3_rc1::IfcGroup* Ifc4x3_rc1::IfcRelAssignsToGroup::RelatingGroup() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcGroup>(); }
void Ifc4x3_rc1::IfcRelAssignsToGroup::setRelatingGroup(::Ifc4x3_rc1::IfcGroup* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToGroup::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToGroup_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToGroup::Class() { return *IFC4X3_RC1_IfcRelAssignsToGroup_type; }
Ifc4x3_rc1::IfcRelAssignsToGroup::IfcRelAssignsToGroup(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToGroup::IfcRelAssignsToGroup(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcGroup* v7_RelatingGroup) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToGroup_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingGroup));data_->setArgument(6,attr);} }

// Function implementations for IfcRelAssignsToGroupByFactor
double Ifc4x3_rc1::IfcRelAssignsToGroupByFactor::Factor() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcRelAssignsToGroupByFactor::setFactor(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToGroupByFactor::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToGroupByFactor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToGroupByFactor::Class() { return *IFC4X3_RC1_IfcRelAssignsToGroupByFactor_type; }
Ifc4x3_rc1::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(IfcEntityInstanceData* e) : IfcRelAssignsToGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToGroupByFactor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcGroup* v7_RelatingGroup, double v8_Factor) : IfcRelAssignsToGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToGroupByFactor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingGroup));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Factor));data_->setArgument(7,attr);} }

// Function implementations for IfcRelAssignsToProcess
::Ifc4x3_rc1::IfcProcessSelect* Ifc4x3_rc1::IfcRelAssignsToProcess::RelatingProcess() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcProcessSelect>(); }
void Ifc4x3_rc1::IfcRelAssignsToProcess::setRelatingProcess(::Ifc4x3_rc1::IfcProcessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcMeasureWithUnit* Ifc4x3_rc1::IfcRelAssignsToProcess::QuantityInProcess() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcMeasureWithUnit>(); }
void Ifc4x3_rc1::IfcRelAssignsToProcess::setQuantityInProcess(::Ifc4x3_rc1::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToProcess::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToProcess_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToProcess::Class() { return *IFC4X3_RC1_IfcRelAssignsToProcess_type; }
Ifc4x3_rc1::IfcRelAssignsToProcess::IfcRelAssignsToProcess(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToProcess_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToProcess::IfcRelAssignsToProcess(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcProcessSelect* v7_RelatingProcess, ::Ifc4x3_rc1::IfcMeasureWithUnit* v8_QuantityInProcess) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToProcess_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingProcess));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_QuantityInProcess));data_->setArgument(7,attr);} }

// Function implementations for IfcRelAssignsToProduct
::Ifc4x3_rc1::IfcProductSelect* Ifc4x3_rc1::IfcRelAssignsToProduct::RelatingProduct() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcProductSelect>(); }
void Ifc4x3_rc1::IfcRelAssignsToProduct::setRelatingProduct(::Ifc4x3_rc1::IfcProductSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToProduct::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToProduct_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToProduct::Class() { return *IFC4X3_RC1_IfcRelAssignsToProduct_type; }
Ifc4x3_rc1::IfcRelAssignsToProduct::IfcRelAssignsToProduct(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToProduct_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToProduct::IfcRelAssignsToProduct(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcProductSelect* v7_RelatingProduct) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToProduct_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingProduct));data_->setArgument(6,attr);} }

// Function implementations for IfcRelAssignsToResource
::Ifc4x3_rc1::IfcResourceSelect* Ifc4x3_rc1::IfcRelAssignsToResource::RelatingResource() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcResourceSelect>(); }
void Ifc4x3_rc1::IfcRelAssignsToResource::setRelatingResource(::Ifc4x3_rc1::IfcResourceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToResource::declaration() const { return *IFC4X3_RC1_IfcRelAssignsToResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssignsToResource::Class() { return *IFC4X3_RC1_IfcRelAssignsToResource_type; }
Ifc4x3_rc1::IfcRelAssignsToResource::IfcRelAssignsToResource(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssignsToResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssignsToResource::IfcRelAssignsToResource(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc1::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc1::IfcResourceSelect* v7_RelatingResource) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssignsToResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);} if (v6_RelatedObjectsType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v6_RelatedObjectsType,::Ifc4x3_rc1::IfcObjectTypeEnum::ToString(*v6_RelatedObjectsType))));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingResource));data_->setArgument(6,attr);} }

// Function implementations for IfcRelAssociates
aggregate_of_instance::ptr Ifc4x3_rc1::IfcRelAssociates::RelatedObjects() const {  aggregate_of_instance::ptr v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcRelAssociates::setRelatedObjects(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociates::declaration() const { return *IFC4X3_RC1_IfcRelAssociates_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociates::Class() { return *IFC4X3_RC1_IfcRelAssociates_type; }
Ifc4x3_rc1::IfcRelAssociates::IfcRelAssociates(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociates_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociates::IfcRelAssociates(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociates_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);} }

// Function implementations for IfcRelAssociatesApproval
::Ifc4x3_rc1::IfcApproval* Ifc4x3_rc1::IfcRelAssociatesApproval::RelatingApproval() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcApproval>(); }
void Ifc4x3_rc1::IfcRelAssociatesApproval::setRelatingApproval(::Ifc4x3_rc1::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesApproval::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesApproval_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesApproval::Class() { return *IFC4X3_RC1_IfcRelAssociatesApproval_type; }
Ifc4x3_rc1::IfcRelAssociatesApproval::IfcRelAssociatesApproval(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesApproval_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesApproval::IfcRelAssociatesApproval(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcApproval* v6_RelatingApproval) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesApproval_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingApproval));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesClassification
::Ifc4x3_rc1::IfcClassificationSelect* Ifc4x3_rc1::IfcRelAssociatesClassification::RelatingClassification() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcClassificationSelect>(); }
void Ifc4x3_rc1::IfcRelAssociatesClassification::setRelatingClassification(::Ifc4x3_rc1::IfcClassificationSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesClassification::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesClassification_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesClassification::Class() { return *IFC4X3_RC1_IfcRelAssociatesClassification_type; }
Ifc4x3_rc1::IfcRelAssociatesClassification::IfcRelAssociatesClassification(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesClassification_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcClassificationSelect* v6_RelatingClassification) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesClassification_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingClassification));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesConstraint
boost::optional< std::string > Ifc4x3_rc1::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcConstraint* Ifc4x3_rc1::IfcRelAssociatesConstraint::RelatingConstraint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcConstraint>(); }
void Ifc4x3_rc1::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_rc1::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesConstraint::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesConstraint_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesConstraint::Class() { return *IFC4X3_RC1_IfcRelAssociatesConstraint_type; }
Ifc4x3_rc1::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesConstraint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, boost::optional< std::string > v6_Intent, ::Ifc4x3_rc1::IfcConstraint* v7_RelatingConstraint) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesConstraint_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);} if (v6_Intent) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Intent));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatingConstraint));data_->setArgument(6,attr);} }

// Function implementations for IfcRelAssociatesDocument
::Ifc4x3_rc1::IfcDocumentSelect* Ifc4x3_rc1::IfcRelAssociatesDocument::RelatingDocument() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcDocumentSelect>(); }
void Ifc4x3_rc1::IfcRelAssociatesDocument::setRelatingDocument(::Ifc4x3_rc1::IfcDocumentSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesDocument::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesDocument_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesDocument::Class() { return *IFC4X3_RC1_IfcRelAssociatesDocument_type; }
Ifc4x3_rc1::IfcRelAssociatesDocument::IfcRelAssociatesDocument(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesDocument_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesDocument::IfcRelAssociatesDocument(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcDocumentSelect* v6_RelatingDocument) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesDocument_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingDocument));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesLibrary
::Ifc4x3_rc1::IfcLibrarySelect* Ifc4x3_rc1::IfcRelAssociatesLibrary::RelatingLibrary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcLibrarySelect>(); }
void Ifc4x3_rc1::IfcRelAssociatesLibrary::setRelatingLibrary(::Ifc4x3_rc1::IfcLibrarySelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesLibrary::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesLibrary_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesLibrary::Class() { return *IFC4X3_RC1_IfcRelAssociatesLibrary_type; }
Ifc4x3_rc1::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesLibrary_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcLibrarySelect* v6_RelatingLibrary) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesLibrary_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingLibrary));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesMaterial
::Ifc4x3_rc1::IfcMaterialSelect* Ifc4x3_rc1::IfcRelAssociatesMaterial::RelatingMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcMaterialSelect>(); }
void Ifc4x3_rc1::IfcRelAssociatesMaterial::setRelatingMaterial(::Ifc4x3_rc1::IfcMaterialSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesMaterial::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesMaterial_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesMaterial::Class() { return *IFC4X3_RC1_IfcRelAssociatesMaterial_type; }
Ifc4x3_rc1::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesMaterial_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcMaterialSelect* v6_RelatingMaterial) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesMaterial_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingMaterial));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesProfileDef
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcRelAssociatesProfileDef::RelatingProfileDef() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcRelAssociatesProfileDef::setRelatingProfileDef(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesProfileDef::declaration() const { return *IFC4X3_RC1_IfcRelAssociatesProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelAssociatesProfileDef::Class() { return *IFC4X3_RC1_IfcRelAssociatesProfileDef_type; }
Ifc4x3_rc1::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelAssociatesProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcProfileDef* v6_RelatingProfileDef) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelAssociatesProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingProfileDef));data_->setArgument(5,attr);} }

// Function implementations for IfcRelConnects


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnects::declaration() const { return *IFC4X3_RC1_IfcRelConnects_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnects::Class() { return *IFC4X3_RC1_IfcRelConnects_type; }
Ifc4x3_rc1::IfcRelConnects::IfcRelConnects(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnects_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnects::IfcRelConnects(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnects_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcRelConnectsElements
::Ifc4x3_rc1::IfcConnectionGeometry* Ifc4x3_rc1::IfcRelConnectsElements::ConnectionGeometry() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcConnectionGeometry>(); }
void Ifc4x3_rc1::IfcRelConnectsElements::setConnectionGeometry(::Ifc4x3_rc1::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelConnectsElements::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelConnectsElements::setRelatingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelConnectsElements::RelatedElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelConnectsElements::setRelatedElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsElements::declaration() const { return *IFC4X3_RC1_IfcRelConnectsElements_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsElements::Class() { return *IFC4X3_RC1_IfcRelConnectsElements_type; }
Ifc4x3_rc1::IfcRelConnectsElements::IfcRelConnectsElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsElements::IfcRelConnectsElements(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_rc1::IfcElement* v6_RelatingElement, ::Ifc4x3_rc1::IfcElement* v7_RelatedElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsElements_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ConnectionGeometry));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatedElement));data_->setArgument(6,attr);} }

// Function implementations for IfcRelConnectsPathElements
std::vector< int > /*[0:?]*/ Ifc4x3_rc1::IfcRelConnectsPathElements::RelatingPriorities() const {  std::vector< int > /*[0:?]*/ v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcRelConnectsPathElements::setRelatingPriorities(std::vector< int > /*[0:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
std::vector< int > /*[0:?]*/ Ifc4x3_rc1::IfcRelConnectsPathElements::RelatedPriorities() const {  std::vector< int > /*[0:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRelConnectsPathElements::setRelatedPriorities(std::vector< int > /*[0:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcConnectionTypeEnum::Value Ifc4x3_rc1::IfcRelConnectsPathElements::RelatedConnectionType() const {  return ::Ifc4x3_rc1::IfcConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcRelConnectsPathElements::setRelatedConnectionType(::Ifc4x3_rc1::IfcConnectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConnectionTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcConnectionTypeEnum::Value Ifc4x3_rc1::IfcRelConnectsPathElements::RelatingConnectionType() const {  return ::Ifc4x3_rc1::IfcConnectionTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcRelConnectsPathElements::setRelatingConnectionType(::Ifc4x3_rc1::IfcConnectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcConnectionTypeEnum::ToString(v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsPathElements::declaration() const { return *IFC4X3_RC1_IfcRelConnectsPathElements_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsPathElements::Class() { return *IFC4X3_RC1_IfcRelConnectsPathElements_type; }
Ifc4x3_rc1::IfcRelConnectsPathElements::IfcRelConnectsPathElements(IfcEntityInstanceData* e) : IfcRelConnectsElements((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsPathElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsPathElements::IfcRelConnectsPathElements(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_rc1::IfcElement* v6_RelatingElement, ::Ifc4x3_rc1::IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4x3_rc1::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4x3_rc1::IfcConnectionTypeEnum::Value v11_RelatingConnectionType) : IfcRelConnectsElements((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsPathElements_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ConnectionGeometry));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatedElement));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_RelatingPriorities));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_RelatedPriorities));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_RelatedConnectionType,::Ifc4x3_rc1::IfcConnectionTypeEnum::ToString(v10_RelatedConnectionType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_RelatingConnectionType,::Ifc4x3_rc1::IfcConnectionTypeEnum::ToString(v11_RelatingConnectionType))));data_->setArgument(10,attr);} }

// Function implementations for IfcRelConnectsPortToElement
::Ifc4x3_rc1::IfcPort* Ifc4x3_rc1::IfcRelConnectsPortToElement::RelatingPort() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcPort>(); }
void Ifc4x3_rc1::IfcRelConnectsPortToElement::setRelatingPort(::Ifc4x3_rc1::IfcPort* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcDistributionElement* Ifc4x3_rc1::IfcRelConnectsPortToElement::RelatedElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcDistributionElement>(); }
void Ifc4x3_rc1::IfcRelConnectsPortToElement::setRelatedElement(::Ifc4x3_rc1::IfcDistributionElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsPortToElement::declaration() const { return *IFC4X3_RC1_IfcRelConnectsPortToElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsPortToElement::Class() { return *IFC4X3_RC1_IfcRelConnectsPortToElement_type; }
Ifc4x3_rc1::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsPortToElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcPort* v5_RelatingPort, ::Ifc4x3_rc1::IfcDistributionElement* v6_RelatedElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsPortToElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingPort));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedElement));data_->setArgument(5,attr);} }

// Function implementations for IfcRelConnectsPorts
::Ifc4x3_rc1::IfcPort* Ifc4x3_rc1::IfcRelConnectsPorts::RelatingPort() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcPort>(); }
void Ifc4x3_rc1::IfcRelConnectsPorts::setRelatingPort(::Ifc4x3_rc1::IfcPort* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcPort* Ifc4x3_rc1::IfcRelConnectsPorts::RelatedPort() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcPort>(); }
void Ifc4x3_rc1::IfcRelConnectsPorts::setRelatedPort(::Ifc4x3_rc1::IfcPort* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelConnectsPorts::RealizingElement() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelConnectsPorts::setRealizingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsPorts::declaration() const { return *IFC4X3_RC1_IfcRelConnectsPorts_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsPorts::Class() { return *IFC4X3_RC1_IfcRelConnectsPorts_type; }
Ifc4x3_rc1::IfcRelConnectsPorts::IfcRelConnectsPorts(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsPorts_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsPorts::IfcRelConnectsPorts(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcPort* v5_RelatingPort, ::Ifc4x3_rc1::IfcPort* v6_RelatedPort, ::Ifc4x3_rc1::IfcElement* v7_RealizingElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsPorts_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingPort));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedPort));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RealizingElement));data_->setArgument(6,attr);} }

// Function implementations for IfcRelConnectsStructuralActivity
::Ifc4x3_rc1::IfcStructuralActivityAssignmentSelect* Ifc4x3_rc1::IfcRelConnectsStructuralActivity::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcStructuralActivityAssignmentSelect>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralActivity::setRelatingElement(::Ifc4x3_rc1::IfcStructuralActivityAssignmentSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcStructuralActivity* Ifc4x3_rc1::IfcRelConnectsStructuralActivity::RelatedStructuralActivity() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcStructuralActivity>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralActivity::setRelatedStructuralActivity(::Ifc4x3_rc1::IfcStructuralActivity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsStructuralActivity::declaration() const { return *IFC4X3_RC1_IfcRelConnectsStructuralActivity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsStructuralActivity::Class() { return *IFC4X3_RC1_IfcRelConnectsStructuralActivity_type; }
Ifc4x3_rc1::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsStructuralActivity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcStructuralActivityAssignmentSelect* v5_RelatingElement, ::Ifc4x3_rc1::IfcStructuralActivity* v6_RelatedStructuralActivity) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsStructuralActivity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedStructuralActivity));data_->setArgument(5,attr);} }

// Function implementations for IfcRelConnectsStructuralMember
::Ifc4x3_rc1::IfcStructuralMember* Ifc4x3_rc1::IfcRelConnectsStructuralMember::RelatingStructuralMember() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcStructuralMember>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setRelatingStructuralMember(::Ifc4x3_rc1::IfcStructuralMember* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcStructuralConnection* Ifc4x3_rc1::IfcRelConnectsStructuralMember::RelatedStructuralConnection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcStructuralConnection>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setRelatedStructuralConnection(::Ifc4x3_rc1::IfcStructuralConnection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcBoundaryCondition* Ifc4x3_rc1::IfcRelConnectsStructuralMember::AppliedCondition() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcBoundaryCondition>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_rc1::IfcBoundaryCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcStructuralConnectionCondition* Ifc4x3_rc1::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcStructuralConnectionCondition>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_rc1::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsStructuralMember::declaration() const { return *IFC4X3_RC1_IfcRelConnectsStructuralMember_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsStructuralMember::Class() { return *IFC4X3_RC1_IfcRelConnectsStructuralMember_type; }
Ifc4x3_rc1::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsStructuralMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_rc1::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_rc1::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_rc1::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_rc1::IfcAxis2Placement3D* v10_ConditionCoordinateSystem) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsStructuralMember_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingStructuralMember));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedStructuralConnection));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_AppliedCondition));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AdditionalConditions));data_->setArgument(7,attr);} if (v9_SupportedLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SupportedLength));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_ConditionCoordinateSystem));data_->setArgument(9,attr);} }

// Function implementations for IfcRelConnectsWithEccentricity
::Ifc4x3_rc1::IfcConnectionGeometry* Ifc4x3_rc1::IfcRelConnectsWithEccentricity::ConnectionConstraint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcConnectionGeometry>(); }
void Ifc4x3_rc1::IfcRelConnectsWithEccentricity::setConnectionConstraint(::Ifc4x3_rc1::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsWithEccentricity::declaration() const { return *IFC4X3_RC1_IfcRelConnectsWithEccentricity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsWithEccentricity::Class() { return *IFC4X3_RC1_IfcRelConnectsWithEccentricity_type; }
Ifc4x3_rc1::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(IfcEntityInstanceData* e) : IfcRelConnectsStructuralMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsWithEccentricity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_rc1::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_rc1::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_rc1::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_rc1::IfcAxis2Placement3D* v10_ConditionCoordinateSystem, ::Ifc4x3_rc1::IfcConnectionGeometry* v11_ConnectionConstraint) : IfcRelConnectsStructuralMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsWithEccentricity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingStructuralMember));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedStructuralConnection));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_AppliedCondition));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AdditionalConditions));data_->setArgument(7,attr);} if (v9_SupportedLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SupportedLength));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_ConditionCoordinateSystem));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_ConnectionConstraint));data_->setArgument(10,attr);} }

// Function implementations for IfcRelConnectsWithRealizingElements
aggregate_of< ::Ifc4x3_rc1::IfcElement >::ptr Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::RealizingElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcElement >(); }
void Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_rc1::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::Class() { return *IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type; }
Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(IfcEntityInstanceData* e) : IfcRelConnectsElements((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_rc1::IfcElement* v6_RelatingElement, ::Ifc4x3_rc1::IfcElement* v7_RelatedElement, aggregate_of< ::Ifc4x3_rc1::IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType) : IfcRelConnectsElements((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelConnectsWithRealizingElements_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ConnectionGeometry));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_RelatedElement));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_RealizingElements)->generalize());data_->setArgument(7,attr);} if (v9_ConnectionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ConnectionType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRelContainedInSpatialStructure
aggregate_of< ::Ifc4x3_rc1::IfcProduct >::ptr Ifc4x3_rc1::IfcRelContainedInSpatialStructure::RelatedElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcProduct >(); }
void Ifc4x3_rc1::IfcRelContainedInSpatialStructure::setRelatedElements(aggregate_of< ::Ifc4x3_rc1::IfcProduct >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcSpatialElement* Ifc4x3_rc1::IfcRelContainedInSpatialStructure::RelatingStructure() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcSpatialElement>(); }
void Ifc4x3_rc1::IfcRelContainedInSpatialStructure::setRelatingStructure(::Ifc4x3_rc1::IfcSpatialElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelContainedInSpatialStructure::declaration() const { return *IFC4X3_RC1_IfcRelContainedInSpatialStructure_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelContainedInSpatialStructure::Class() { return *IFC4X3_RC1_IfcRelContainedInSpatialStructure_type; }
Ifc4x3_rc1::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelContainedInSpatialStructure_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcProduct >::ptr v5_RelatedElements, ::Ifc4x3_rc1::IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelContainedInSpatialStructure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedElements)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingStructure));data_->setArgument(5,attr);} }

// Function implementations for IfcRelCoversBldgElements
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelCoversBldgElements::RelatingBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelCoversBldgElements::setRelatingBuildingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcCovering >::ptr Ifc4x3_rc1::IfcRelCoversBldgElements::RelatedCoverings() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcCovering >(); }
void Ifc4x3_rc1::IfcRelCoversBldgElements::setRelatedCoverings(aggregate_of< ::Ifc4x3_rc1::IfcCovering >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelCoversBldgElements::declaration() const { return *IFC4X3_RC1_IfcRelCoversBldgElements_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelCoversBldgElements::Class() { return *IFC4X3_RC1_IfcRelCoversBldgElements_type; }
Ifc4x3_rc1::IfcRelCoversBldgElements::IfcRelCoversBldgElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelCoversBldgElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelCoversBldgElements::IfcRelCoversBldgElements(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcElement* v5_RelatingBuildingElement, aggregate_of< ::Ifc4x3_rc1::IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelCoversBldgElements_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingBuildingElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedCoverings)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelCoversSpaces
::Ifc4x3_rc1::IfcSpace* Ifc4x3_rc1::IfcRelCoversSpaces::RelatingSpace() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSpace>(); }
void Ifc4x3_rc1::IfcRelCoversSpaces::setRelatingSpace(::Ifc4x3_rc1::IfcSpace* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcCovering >::ptr Ifc4x3_rc1::IfcRelCoversSpaces::RelatedCoverings() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcCovering >(); }
void Ifc4x3_rc1::IfcRelCoversSpaces::setRelatedCoverings(aggregate_of< ::Ifc4x3_rc1::IfcCovering >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelCoversSpaces::declaration() const { return *IFC4X3_RC1_IfcRelCoversSpaces_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelCoversSpaces::Class() { return *IFC4X3_RC1_IfcRelCoversSpaces_type; }
Ifc4x3_rc1::IfcRelCoversSpaces::IfcRelCoversSpaces(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelCoversSpaces_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelCoversSpaces::IfcRelCoversSpaces(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcSpace* v5_RelatingSpace, aggregate_of< ::Ifc4x3_rc1::IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelCoversSpaces_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingSpace));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedCoverings)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelDeclares
::Ifc4x3_rc1::IfcContext* Ifc4x3_rc1::IfcRelDeclares::RelatingContext() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcContext>(); }
void Ifc4x3_rc1::IfcRelDeclares::setRelatingContext(::Ifc4x3_rc1::IfcContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcRelDeclares::RelatedDefinitions() const {  aggregate_of_instance::ptr v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcRelDeclares::setRelatedDefinitions(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelDeclares::declaration() const { return *IFC4X3_RC1_IfcRelDeclares_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDeclares::Class() { return *IFC4X3_RC1_IfcRelDeclares_type; }
Ifc4x3_rc1::IfcRelDeclares::IfcRelDeclares(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDeclares_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDeclares::IfcRelDeclares(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcContext* v5_RelatingContext, aggregate_of_instance::ptr v6_RelatedDefinitions) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDeclares_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingContext));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedDefinitions));data_->setArgument(5,attr);} }

// Function implementations for IfcRelDecomposes


const IfcParse::entity& Ifc4x3_rc1::IfcRelDecomposes::declaration() const { return *IFC4X3_RC1_IfcRelDecomposes_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDecomposes::Class() { return *IFC4X3_RC1_IfcRelDecomposes_type; }
Ifc4x3_rc1::IfcRelDecomposes::IfcRelDecomposes(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDecomposes_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDecomposes::IfcRelDecomposes(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDecomposes_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcRelDefines


const IfcParse::entity& Ifc4x3_rc1::IfcRelDefines::declaration() const { return *IFC4X3_RC1_IfcRelDefines_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDefines::Class() { return *IFC4X3_RC1_IfcRelDefines_type; }
Ifc4x3_rc1::IfcRelDefines::IfcRelDefines(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDefines_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDefines::IfcRelDefines(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDefines_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcRelDefinesByObject
aggregate_of< ::Ifc4x3_rc1::IfcObject >::ptr Ifc4x3_rc1::IfcRelDefinesByObject::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcObject >(); }
void Ifc4x3_rc1::IfcRelDefinesByObject::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObject >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcObject* Ifc4x3_rc1::IfcRelDefinesByObject::RelatingObject() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcObject>(); }
void Ifc4x3_rc1::IfcRelDefinesByObject::setRelatingObject(::Ifc4x3_rc1::IfcObject* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByObject::declaration() const { return *IFC4X3_RC1_IfcRelDefinesByObject_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByObject::Class() { return *IFC4X3_RC1_IfcRelDefinesByObject_type; }
Ifc4x3_rc1::IfcRelDefinesByObject::IfcRelDefinesByObject(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDefinesByObject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDefinesByObject::IfcRelDefinesByObject(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcObject* v6_RelatingObject) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDefinesByObject_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingObject));data_->setArgument(5,attr);} }

// Function implementations for IfcRelDefinesByProperties
aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr Ifc4x3_rc1::IfcRelDefinesByProperties::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcObjectDefinition >(); }
void Ifc4x3_rc1::IfcRelDefinesByProperties::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcPropertySetDefinitionSelect* Ifc4x3_rc1::IfcRelDefinesByProperties::RelatingPropertyDefinition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcPropertySetDefinitionSelect>(); }
void Ifc4x3_rc1::IfcRelDefinesByProperties::setRelatingPropertyDefinition(::Ifc4x3_rc1::IfcPropertySetDefinitionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByProperties::declaration() const { return *IFC4X3_RC1_IfcRelDefinesByProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByProperties::Class() { return *IFC4X3_RC1_IfcRelDefinesByProperties_type; }
Ifc4x3_rc1::IfcRelDefinesByProperties::IfcRelDefinesByProperties(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDefinesByProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDefinesByProperties::IfcRelDefinesByProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcPropertySetDefinitionSelect* v6_RelatingPropertyDefinition) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDefinesByProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingPropertyDefinition));data_->setArgument(5,attr);} }

// Function implementations for IfcRelDefinesByTemplate
aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr Ifc4x3_rc1::IfcRelDefinesByTemplate::RelatedPropertySets() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcPropertySetDefinition >(); }
void Ifc4x3_rc1::IfcRelDefinesByTemplate::setRelatedPropertySets(aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcPropertySetTemplate* Ifc4x3_rc1::IfcRelDefinesByTemplate::RelatingTemplate() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcPropertySetTemplate>(); }
void Ifc4x3_rc1::IfcRelDefinesByTemplate::setRelatingTemplate(::Ifc4x3_rc1::IfcPropertySetTemplate* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByTemplate::declaration() const { return *IFC4X3_RC1_IfcRelDefinesByTemplate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByTemplate::Class() { return *IFC4X3_RC1_IfcRelDefinesByTemplate_type; }
Ifc4x3_rc1::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDefinesByTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr v5_RelatedPropertySets, ::Ifc4x3_rc1::IfcPropertySetTemplate* v6_RelatingTemplate) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDefinesByTemplate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedPropertySets)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingTemplate));data_->setArgument(5,attr);} }

// Function implementations for IfcRelDefinesByType
aggregate_of< ::Ifc4x3_rc1::IfcObject >::ptr Ifc4x3_rc1::IfcRelDefinesByType::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcObject >(); }
void Ifc4x3_rc1::IfcRelDefinesByType::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObject >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcTypeObject* Ifc4x3_rc1::IfcRelDefinesByType::RelatingType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcTypeObject>(); }
void Ifc4x3_rc1::IfcRelDefinesByType::setRelatingType(::Ifc4x3_rc1::IfcTypeObject* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByType::declaration() const { return *IFC4X3_RC1_IfcRelDefinesByType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelDefinesByType::Class() { return *IFC4X3_RC1_IfcRelDefinesByType_type; }
Ifc4x3_rc1::IfcRelDefinesByType::IfcRelDefinesByType(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelDefinesByType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelDefinesByType::IfcRelDefinesByType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_rc1::IfcTypeObject* v6_RelatingType) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelDefinesByType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedObjects)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingType));data_->setArgument(5,attr);} }

// Function implementations for IfcRelFillsElement
::Ifc4x3_rc1::IfcOpeningElement* Ifc4x3_rc1::IfcRelFillsElement::RelatingOpeningElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcOpeningElement>(); }
void Ifc4x3_rc1::IfcRelFillsElement::setRelatingOpeningElement(::Ifc4x3_rc1::IfcOpeningElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelFillsElement::RelatedBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelFillsElement::setRelatedBuildingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelFillsElement::declaration() const { return *IFC4X3_RC1_IfcRelFillsElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelFillsElement::Class() { return *IFC4X3_RC1_IfcRelFillsElement_type; }
Ifc4x3_rc1::IfcRelFillsElement::IfcRelFillsElement(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelFillsElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelFillsElement::IfcRelFillsElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcOpeningElement* v5_RelatingOpeningElement, ::Ifc4x3_rc1::IfcElement* v6_RelatedBuildingElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelFillsElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingOpeningElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedBuildingElement));data_->setArgument(5,attr);} }

// Function implementations for IfcRelFlowControlElements
aggregate_of< ::Ifc4x3_rc1::IfcDistributionControlElement >::ptr Ifc4x3_rc1::IfcRelFlowControlElements::RelatedControlElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc1::IfcDistributionControlElement >(); }
void Ifc4x3_rc1::IfcRelFlowControlElements::setRelatedControlElements(aggregate_of< ::Ifc4x3_rc1::IfcDistributionControlElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcDistributionFlowElement* Ifc4x3_rc1::IfcRelFlowControlElements::RelatingFlowElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcDistributionFlowElement>(); }
void Ifc4x3_rc1::IfcRelFlowControlElements::setRelatingFlowElement(::Ifc4x3_rc1::IfcDistributionFlowElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelFlowControlElements::declaration() const { return *IFC4X3_RC1_IfcRelFlowControlElements_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelFlowControlElements::Class() { return *IFC4X3_RC1_IfcRelFlowControlElements_type; }
Ifc4x3_rc1::IfcRelFlowControlElements::IfcRelFlowControlElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelFlowControlElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc1::IfcDistributionControlElement >::ptr v5_RelatedControlElements, ::Ifc4x3_rc1::IfcDistributionFlowElement* v6_RelatingFlowElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelFlowControlElements_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedControlElements)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingFlowElement));data_->setArgument(5,attr);} }

// Function implementations for IfcRelInterferesElements
::Ifc4x3_rc1::IfcInterferenceSelect* Ifc4x3_rc1::IfcRelInterferesElements::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcInterferenceSelect>(); }
void Ifc4x3_rc1::IfcRelInterferesElements::setRelatingElement(::Ifc4x3_rc1::IfcInterferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcInterferenceSelect* Ifc4x3_rc1::IfcRelInterferesElements::RelatedElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcInterferenceSelect>(); }
void Ifc4x3_rc1::IfcRelInterferesElements::setRelatedElement(::Ifc4x3_rc1::IfcInterferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcConnectionGeometry* Ifc4x3_rc1::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcConnectionGeometry>(); }
void Ifc4x3_rc1::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_rc1::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcRelInterferesElements::ImpliedOrder() const {  boost::logic::tribool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelInterferesElements::declaration() const { return *IFC4X3_RC1_IfcRelInterferesElements_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelInterferesElements::Class() { return *IFC4X3_RC1_IfcRelInterferesElements_type; }
Ifc4x3_rc1::IfcRelInterferesElements::IfcRelInterferesElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelInterferesElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelInterferesElements::IfcRelInterferesElements(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcInterferenceSelect* v5_RelatingElement, ::Ifc4x3_rc1::IfcInterferenceSelect* v6_RelatedElement, ::Ifc4x3_rc1::IfcConnectionGeometry* v7_InterferenceGeometry, boost::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelInterferesElements_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_InterferenceGeometry));data_->setArgument(6,attr);} if (v8_InterferenceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_InterferenceType));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_ImpliedOrder));data_->setArgument(8,attr);} }

// Function implementations for IfcRelNests
::Ifc4x3_rc1::IfcObjectDefinition* Ifc4x3_rc1::IfcRelNests::RelatingObject() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcObjectDefinition>(); }
void Ifc4x3_rc1::IfcRelNests::setRelatingObject(::Ifc4x3_rc1::IfcObjectDefinition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr Ifc4x3_rc1::IfcRelNests::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcObjectDefinition >(); }
void Ifc4x3_rc1::IfcRelNests::setRelatedObjects(aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelNests::declaration() const { return *IFC4X3_RC1_IfcRelNests_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelNests::Class() { return *IFC4X3_RC1_IfcRelNests_type; }
Ifc4x3_rc1::IfcRelNests::IfcRelNests(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelNests_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelNests::IfcRelNests(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_rc1::IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelNests_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingObject));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedObjects)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelPositions
::Ifc4x3_rc1::IfcPositioningElement* Ifc4x3_rc1::IfcRelPositions::RelatingPositioningElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcPositioningElement>(); }
void Ifc4x3_rc1::IfcRelPositions::setRelatingPositioningElement(::Ifc4x3_rc1::IfcPositioningElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcProduct >::ptr Ifc4x3_rc1::IfcRelPositions::RelatedProducts() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcProduct >(); }
void Ifc4x3_rc1::IfcRelPositions::setRelatedProducts(aggregate_of< ::Ifc4x3_rc1::IfcProduct >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelPositions::declaration() const { return *IFC4X3_RC1_IfcRelPositions_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelPositions::Class() { return *IFC4X3_RC1_IfcRelPositions_type; }
Ifc4x3_rc1::IfcRelPositions::IfcRelPositions(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelPositions_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelPositions::IfcRelPositions(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcPositioningElement* v5_RelatingPositioningElement, aggregate_of< ::Ifc4x3_rc1::IfcProduct >::ptr v6_RelatedProducts) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelPositions_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingPositioningElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedProducts)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelProjectsElement
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelProjectsElement::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelProjectsElement::setRelatingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcFeatureElementAddition* Ifc4x3_rc1::IfcRelProjectsElement::RelatedFeatureElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcFeatureElementAddition>(); }
void Ifc4x3_rc1::IfcRelProjectsElement::setRelatedFeatureElement(::Ifc4x3_rc1::IfcFeatureElementAddition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelProjectsElement::declaration() const { return *IFC4X3_RC1_IfcRelProjectsElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelProjectsElement::Class() { return *IFC4X3_RC1_IfcRelProjectsElement_type; }
Ifc4x3_rc1::IfcRelProjectsElement::IfcRelProjectsElement(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelProjectsElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelProjectsElement::IfcRelProjectsElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcElement* v5_RelatingElement, ::Ifc4x3_rc1::IfcFeatureElementAddition* v6_RelatedFeatureElement) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelProjectsElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedFeatureElement));data_->setArgument(5,attr);} }

// Function implementations for IfcRelReferencedInSpatialStructure
aggregate_of_instance::ptr Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::RelatedElements() const {  aggregate_of_instance::ptr v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::setRelatedElements(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcSpatialElement* Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::RelatingStructure() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcSpatialElement>(); }
void Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::setRelatingStructure(::Ifc4x3_rc1::IfcSpatialElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::declaration() const { return *IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::Class() { return *IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type; }
Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of_instance::ptr v5_RelatedElements, ::Ifc4x3_rc1::IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatedElements));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingStructure));data_->setArgument(5,attr);} }

// Function implementations for IfcRelSequence
::Ifc4x3_rc1::IfcProcess* Ifc4x3_rc1::IfcRelSequence::RelatingProcess() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcProcess>(); }
void Ifc4x3_rc1::IfcRelSequence::setRelatingProcess(::Ifc4x3_rc1::IfcProcess* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcProcess* Ifc4x3_rc1::IfcRelSequence::RelatedProcess() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcProcess>(); }
void Ifc4x3_rc1::IfcRelSequence::setRelatedProcess(::Ifc4x3_rc1::IfcProcess* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcLagTime* Ifc4x3_rc1::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcLagTime>(); }
void Ifc4x3_rc1::IfcRelSequence::setTimeLag(::Ifc4x3_rc1::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcSequenceEnum::Value > Ifc4x3_rc1::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSequenceEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc1::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSequenceEnum::ToString(*v)));data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelSequence::declaration() const { return *IFC4X3_RC1_IfcRelSequence_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelSequence::Class() { return *IFC4X3_RC1_IfcRelSequence_type; }
Ifc4x3_rc1::IfcRelSequence::IfcRelSequence(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelSequence_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelSequence::IfcRelSequence(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcProcess* v5_RelatingProcess, ::Ifc4x3_rc1::IfcProcess* v6_RelatedProcess, ::Ifc4x3_rc1::IfcLagTime* v7_TimeLag, boost::optional< ::Ifc4x3_rc1::IfcSequenceEnum::Value > v8_SequenceType, boost::optional< std::string > v9_UserDefinedSequenceType) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelSequence_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingProcess));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedProcess));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_TimeLag));data_->setArgument(6,attr);} if (v8_SequenceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v8_SequenceType,::Ifc4x3_rc1::IfcSequenceEnum::ToString(*v8_SequenceType))));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_UserDefinedSequenceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_UserDefinedSequenceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRelServicesBuildings
::Ifc4x3_rc1::IfcSystem* Ifc4x3_rc1::IfcRelServicesBuildings::RelatingSystem() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSystem>(); }
void Ifc4x3_rc1::IfcRelServicesBuildings::setRelatingSystem(::Ifc4x3_rc1::IfcSystem* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcSpatialElement >::ptr Ifc4x3_rc1::IfcRelServicesBuildings::RelatedBuildings() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcSpatialElement >(); }
void Ifc4x3_rc1::IfcRelServicesBuildings::setRelatedBuildings(aggregate_of< ::Ifc4x3_rc1::IfcSpatialElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelServicesBuildings::declaration() const { return *IFC4X3_RC1_IfcRelServicesBuildings_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelServicesBuildings::Class() { return *IFC4X3_RC1_IfcRelServicesBuildings_type; }
Ifc4x3_rc1::IfcRelServicesBuildings::IfcRelServicesBuildings(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelServicesBuildings_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelServicesBuildings::IfcRelServicesBuildings(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcSystem* v5_RelatingSystem, aggregate_of< ::Ifc4x3_rc1::IfcSpatialElement >::ptr v6_RelatedBuildings) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelServicesBuildings_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingSystem));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedBuildings)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelSpaceBoundary
::Ifc4x3_rc1::IfcSpaceBoundarySelect* Ifc4x3_rc1::IfcRelSpaceBoundary::RelatingSpace() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSpaceBoundarySelect>(); }
void Ifc4x3_rc1::IfcRelSpaceBoundary::setRelatingSpace(::Ifc4x3_rc1::IfcSpaceBoundarySelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelSpaceBoundary::RelatedBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelSpaceBoundary::setRelatedBuildingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcConnectionGeometry* Ifc4x3_rc1::IfcRelSpaceBoundary::ConnectionGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcConnectionGeometry>(); }
void Ifc4x3_rc1::IfcRelSpaceBoundary::setConnectionGeometry(::Ifc4x3_rc1::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Value Ifc4x3_rc1::IfcRelSpaceBoundary::PhysicalOrVirtualBoundary() const {  return ::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcRelSpaceBoundary::setPhysicalOrVirtualBoundary(::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::ToString(v)));data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcInternalOrExternalEnum::Value Ifc4x3_rc1::IfcRelSpaceBoundary::InternalOrExternalBoundary() const {  return ::Ifc4x3_rc1::IfcInternalOrExternalEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcRelSpaceBoundary::setInternalOrExternalBoundary(::Ifc4x3_rc1::IfcInternalOrExternalEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcInternalOrExternalEnum::ToString(v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelSpaceBoundary::declaration() const { return *IFC4X3_RC1_IfcRelSpaceBoundary_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelSpaceBoundary::Class() { return *IFC4X3_RC1_IfcRelSpaceBoundary_type; }
Ifc4x3_rc1::IfcRelSpaceBoundary::IfcRelSpaceBoundary(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelSpaceBoundary_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelSpaceBoundary::IfcRelSpaceBoundary(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_rc1::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_rc1::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_rc1::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelSpaceBoundary_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingSpace));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedBuildingElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ConnectionGeometry));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PhysicalOrVirtualBoundary,::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_InternalOrExternalBoundary,::Ifc4x3_rc1::IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary))));data_->setArgument(8,attr);} }

// Function implementations for IfcRelSpaceBoundary1stLevel
::Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel* Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::ParentBoundary() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel>(); }
void Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::setParentBoundary(::Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }

::Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::list::ptr Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::InnerBoundaries() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary1stLevel_type, 9)->as<IfcRelSpaceBoundary1stLevel>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::declaration() const { return *IFC4X3_RC1_IfcRelSpaceBoundary1stLevel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::Class() { return *IFC4X3_RC1_IfcRelSpaceBoundary1stLevel_type; }
Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(IfcEntityInstanceData* e) : IfcRelSpaceBoundary((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelSpaceBoundary1stLevel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_rc1::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_rc1::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_rc1::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary) : IfcRelSpaceBoundary((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelSpaceBoundary1stLevel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingSpace));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedBuildingElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ConnectionGeometry));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PhysicalOrVirtualBoundary,::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_InternalOrExternalBoundary,::Ifc4x3_rc1::IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_ParentBoundary));data_->setArgument(9,attr);} }

// Function implementations for IfcRelSpaceBoundary2ndLevel
::Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel* Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel>(); }
void Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::setCorrespondingBoundary(::Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }

::Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::list::ptr Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::Corresponds() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary2ndLevel_type, 10)->as<IfcRelSpaceBoundary2ndLevel>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::declaration() const { return *IFC4X3_RC1_IfcRelSpaceBoundary2ndLevel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::Class() { return *IFC4X3_RC1_IfcRelSpaceBoundary2ndLevel_type; }
Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(IfcEntityInstanceData* e) : IfcRelSpaceBoundary1stLevel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelSpaceBoundary2ndLevel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_rc1::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_rc1::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_rc1::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_rc1::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary, ::Ifc4x3_rc1::IfcRelSpaceBoundary2ndLevel* v11_CorrespondingBoundary) : IfcRelSpaceBoundary1stLevel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelSpaceBoundary2ndLevel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingSpace));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedBuildingElement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ConnectionGeometry));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PhysicalOrVirtualBoundary,::Ifc4x3_rc1::IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_InternalOrExternalBoundary,::Ifc4x3_rc1::IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_ParentBoundary));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_CorrespondingBoundary));data_->setArgument(10,attr);} }

// Function implementations for IfcRelVoidsElement
::Ifc4x3_rc1::IfcElement* Ifc4x3_rc1::IfcRelVoidsElement::RelatingBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcElement>(); }
void Ifc4x3_rc1::IfcRelVoidsElement::setRelatingBuildingElement(::Ifc4x3_rc1::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcFeatureElementSubtraction* Ifc4x3_rc1::IfcRelVoidsElement::RelatedOpeningElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcFeatureElementSubtraction>(); }
void Ifc4x3_rc1::IfcRelVoidsElement::setRelatedOpeningElement(::Ifc4x3_rc1::IfcFeatureElementSubtraction* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRelVoidsElement::declaration() const { return *IFC4X3_RC1_IfcRelVoidsElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelVoidsElement::Class() { return *IFC4X3_RC1_IfcRelVoidsElement_type; }
Ifc4x3_rc1::IfcRelVoidsElement::IfcRelVoidsElement(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelVoidsElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelVoidsElement::IfcRelVoidsElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcElement* v5_RelatingBuildingElement, ::Ifc4x3_rc1::IfcFeatureElementSubtraction* v6_RelatedOpeningElement) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelVoidsElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_RelatingBuildingElement));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatedOpeningElement));data_->setArgument(5,attr);} }

// Function implementations for IfcRelationship


const IfcParse::entity& Ifc4x3_rc1::IfcRelationship::declaration() const { return *IFC4X3_RC1_IfcRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRelationship::Class() { return *IFC4X3_RC1_IfcRelationship_type; }
Ifc4x3_rc1::IfcRelationship::IfcRelationship(IfcEntityInstanceData* e) : IfcRoot((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRelationship::IfcRelationship(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRelationship_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcReparametrisedCompositeCurveSegment
double Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::ParamLength() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::setParamLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::declaration() const { return *IFC4X3_RC1_IfcReparametrisedCompositeCurveSegment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::Class() { return *IFC4X3_RC1_IfcReparametrisedCompositeCurveSegment_type; }
Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(IfcEntityInstanceData* e) : IfcCompositeCurveSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcReparametrisedCompositeCurveSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(::Ifc4x3_rc1::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_rc1::IfcCurve* v3_ParentCurve, double v4_ParamLength) : IfcCompositeCurveSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcReparametrisedCompositeCurveSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Transition,::Ifc4x3_rc1::IfcTransitionCode::ToString(v1_Transition))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_SameSense));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ParentCurve));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ParamLength));data_->setArgument(3,attr);} }

// Function implementations for IfcRepresentation
::Ifc4x3_rc1::IfcRepresentationContext* Ifc4x3_rc1::IfcRepresentation::ContextOfItems() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcRepresentationContext>(); }
void Ifc4x3_rc1::IfcRepresentation::setContextOfItems(::Ifc4x3_rc1::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr Ifc4x3_rc1::IfcRepresentation::Items() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc1::IfcRepresentationItem >(); }
void Ifc4x3_rc1::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }

::Ifc4x3_rc1::IfcRepresentationMap::list::ptr Ifc4x3_rc1::IfcRepresentation::RepresentationMap() const { return data_->getInverse(IFC4X3_RC1_IfcRepresentationMap_type, 1)->as<IfcRepresentationMap>(); }
::Ifc4x3_rc1::IfcPresentationLayerAssignment::list::ptr Ifc4x3_rc1::IfcRepresentation::LayerAssignments() const { return data_->getInverse(IFC4X3_RC1_IfcPresentationLayerAssignment_type, 2)->as<IfcPresentationLayerAssignment>(); }
::Ifc4x3_rc1::IfcProductRepresentation::list::ptr Ifc4x3_rc1::IfcRepresentation::OfProductRepresentation() const { return data_->getInverse(IFC4X3_RC1_IfcProductRepresentation_type, 2)->as<IfcProductRepresentation>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcRepresentation::declaration() const { return *IFC4X3_RC1_IfcRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRepresentation::Class() { return *IFC4X3_RC1_IfcRepresentation_type; }
Ifc4x3_rc1::IfcRepresentation::IfcRepresentation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRepresentation::IfcRepresentation(::Ifc4x3_rc1::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v4_Items) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRepresentation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ContextOfItems));data_->setArgument(0,attr);} if (v2_RepresentationIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_RepresentationIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_RepresentationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_RepresentationType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Items)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcRepresentationContext
boost::optional< std::string > Ifc4x3_rc1::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }

::Ifc4x3_rc1::IfcRepresentation::list::ptr Ifc4x3_rc1::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X3_RC1_IfcRepresentation_type, 0)->as<IfcRepresentation>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcRepresentationContext::declaration() const { return *IFC4X3_RC1_IfcRepresentationContext_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRepresentationContext::Class() { return *IFC4X3_RC1_IfcRepresentationContext_type; }
Ifc4x3_rc1::IfcRepresentationContext::IfcRepresentationContext(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRepresentationContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRepresentationContext::IfcRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRepresentationContext_type);  if (v1_ContextIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_ContextIdentifier));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_ContextType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ContextType));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcRepresentationItem

::Ifc4x3_rc1::IfcPresentationLayerAssignment::list::ptr Ifc4x3_rc1::IfcRepresentationItem::LayerAssignment() const { return data_->getInverse(IFC4X3_RC1_IfcPresentationLayerAssignment_type, 2)->as<IfcPresentationLayerAssignment>(); }
::Ifc4x3_rc1::IfcStyledItem::list::ptr Ifc4x3_rc1::IfcRepresentationItem::StyledByItem() const { return data_->getInverse(IFC4X3_RC1_IfcStyledItem_type, 0)->as<IfcStyledItem>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcRepresentationItem::declaration() const { return *IFC4X3_RC1_IfcRepresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRepresentationItem::Class() { return *IFC4X3_RC1_IfcRepresentationItem_type; }
Ifc4x3_rc1::IfcRepresentationItem::IfcRepresentationItem(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRepresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRepresentationItem::IfcRepresentationItem() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRepresentationItem_type);  }

// Function implementations for IfcRepresentationMap
::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcRepresentationMap::MappingOrigin() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(); }
void Ifc4x3_rc1::IfcRepresentationMap::setMappingOrigin(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcRepresentation* Ifc4x3_rc1::IfcRepresentationMap::MappedRepresentation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcRepresentation>(); }
void Ifc4x3_rc1::IfcRepresentationMap::setMappedRepresentation(::Ifc4x3_rc1::IfcRepresentation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }

::Ifc4x3_rc1::IfcShapeAspect::list::ptr Ifc4x3_rc1::IfcRepresentationMap::HasShapeAspects() const { return data_->getInverse(IFC4X3_RC1_IfcShapeAspect_type, 4)->as<IfcShapeAspect>(); }
::Ifc4x3_rc1::IfcMappedItem::list::ptr Ifc4x3_rc1::IfcRepresentationMap::MapUsage() const { return data_->getInverse(IFC4X3_RC1_IfcMappedItem_type, 0)->as<IfcMappedItem>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcRepresentationMap::declaration() const { return *IFC4X3_RC1_IfcRepresentationMap_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRepresentationMap::Class() { return *IFC4X3_RC1_IfcRepresentationMap_type; }
Ifc4x3_rc1::IfcRepresentationMap::IfcRepresentationMap(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRepresentationMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_rc1::IfcAxis2Placement* v1_MappingOrigin, ::Ifc4x3_rc1::IfcRepresentation* v2_MappedRepresentation) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRepresentationMap_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MappingOrigin));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_MappedRepresentation));data_->setArgument(1,attr);} }

// Function implementations for IfcResource
boost::optional< std::string > Ifc4x3_rc1::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }

::Ifc4x3_rc1::IfcRelAssignsToResource::list::ptr Ifc4x3_rc1::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToResource_type, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcResource::declaration() const { return *IFC4X3_RC1_IfcResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcResource::Class() { return *IFC4X3_RC1_IfcResource_type; }
Ifc4x3_rc1::IfcResource::IfcResource(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcResource::IfcResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcResourceApprovalRelationship
aggregate_of_instance::ptr Ifc4x3_rc1::IfcResourceApprovalRelationship::RelatedResourceObjects() const {  aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcResourceApprovalRelationship::setRelatedResourceObjects(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcApproval* Ifc4x3_rc1::IfcResourceApprovalRelationship::RelatingApproval() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcApproval>(); }
void Ifc4x3_rc1::IfcResourceApprovalRelationship::setRelatingApproval(::Ifc4x3_rc1::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcResourceApprovalRelationship::declaration() const { return *IFC4X3_RC1_IfcResourceApprovalRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcResourceApprovalRelationship::Class() { return *IFC4X3_RC1_IfcResourceApprovalRelationship_type; }
Ifc4x3_rc1::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcResourceApprovalRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of_instance::ptr v3_RelatedResourceObjects, ::Ifc4x3_rc1::IfcApproval* v4_RelatingApproval) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcResourceApprovalRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatedResourceObjects));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatingApproval));data_->setArgument(3,attr);} }

// Function implementations for IfcResourceConstraintRelationship
::Ifc4x3_rc1::IfcConstraint* Ifc4x3_rc1::IfcResourceConstraintRelationship::RelatingConstraint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcConstraint>(); }
void Ifc4x3_rc1::IfcResourceConstraintRelationship::setRelatingConstraint(::Ifc4x3_rc1::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcResourceConstraintRelationship::RelatedResourceObjects() const {  aggregate_of_instance::ptr v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcResourceConstraintRelationship::setRelatedResourceObjects(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcResourceConstraintRelationship::declaration() const { return *IFC4X3_RC1_IfcResourceConstraintRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcResourceConstraintRelationship::Class() { return *IFC4X3_RC1_IfcResourceConstraintRelationship_type; }
Ifc4x3_rc1::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcResourceConstraintRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc1::IfcConstraint* v3_RelatingConstraint, aggregate_of_instance::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcResourceConstraintRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_RelatingConstraint));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatedResourceObjects));data_->setArgument(3,attr);} }

// Function implementations for IfcResourceLevelRelationship
boost::optional< std::string > Ifc4x3_rc1::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcResourceLevelRelationship::declaration() const { return *IFC4X3_RC1_IfcResourceLevelRelationship_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcResourceLevelRelationship::Class() { return *IFC4X3_RC1_IfcResourceLevelRelationship_type; }
Ifc4x3_rc1::IfcResourceLevelRelationship::IfcResourceLevelRelationship(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcResourceLevelRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcResourceLevelRelationship_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcResourceTime
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc1::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; }
void Ifc4x3_rc1::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcResourceTime::declaration() const { return *IFC4X3_RC1_IfcResourceTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcResourceTime::Class() { return *IFC4X3_RC1_IfcResourceTime_type; }
Ifc4x3_rc1::IfcResourceTime::IfcResourceTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcResourceTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcResourceTime::IfcResourceTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< std::string > v4_ScheduleWork, boost::optional< double > v5_ScheduleUsage, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_ScheduleContour, boost::optional< std::string > v9_LevelingDelay, boost::optional< bool > v10_IsOverAllocated, boost::optional< std::string > v11_StatusTime, boost::optional< std::string > v12_ActualWork, boost::optional< double > v13_ActualUsage, boost::optional< std::string > v14_ActualStart, boost::optional< std::string > v15_ActualFinish, boost::optional< std::string > v16_RemainingWork, boost::optional< double > v17_RemainingUsage, boost::optional< double > v18_Completion) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcResourceTime_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ScheduleWork) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ScheduleWork));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ScheduleUsage) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ScheduleUsage));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_ScheduleStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_ScheduleStart));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ScheduleFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ScheduleFinish));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_ScheduleContour) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_ScheduleContour));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_LevelingDelay) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_LevelingDelay));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_IsOverAllocated) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_IsOverAllocated));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_StatusTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_StatusTime));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_ActualWork) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_ActualWork));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_ActualUsage) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_ActualUsage));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_ActualStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_ActualStart));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_ActualFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_ActualFinish));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_RemainingWork) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_RemainingWork));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_RemainingUsage) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_RemainingUsage));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } if (v18_Completion) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v18_Completion));data_->setArgument(17,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(17, attr); } }

// Function implementations for IfcRevolvedAreaSolid
::Ifc4x3_rc1::IfcAxis1Placement* Ifc4x3_rc1::IfcRevolvedAreaSolid::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAxis1Placement>(); }
void Ifc4x3_rc1::IfcRevolvedAreaSolid::setAxis(::Ifc4x3_rc1::IfcAxis1Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcRevolvedAreaSolid::Angle() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcRevolvedAreaSolid::setAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRevolvedAreaSolid::declaration() const { return *IFC4X3_RC1_IfcRevolvedAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRevolvedAreaSolid::Class() { return *IFC4X3_RC1_IfcRevolvedAreaSolid_type; }
Ifc4x3_rc1::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRevolvedAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcAxis1Placement* v3_Axis, double v4_Angle) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRevolvedAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Axis));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Angle));data_->setArgument(3,attr);} }

// Function implementations for IfcRevolvedAreaSolidTapered
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcRevolvedAreaSolidTapered::EndSweptArea() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcRevolvedAreaSolidTapered::setEndSweptArea(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRevolvedAreaSolidTapered::declaration() const { return *IFC4X3_RC1_IfcRevolvedAreaSolidTapered_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRevolvedAreaSolidTapered::Class() { return *IFC4X3_RC1_IfcRevolvedAreaSolidTapered_type; }
Ifc4x3_rc1::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(IfcEntityInstanceData* e) : IfcRevolvedAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRevolvedAreaSolidTapered_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcAxis1Placement* v3_Axis, double v4_Angle, ::Ifc4x3_rc1::IfcProfileDef* v5_EndSweptArea) : IfcRevolvedAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRevolvedAreaSolidTapered_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Axis));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Angle));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndSweptArea));data_->setArgument(4,attr);} }

// Function implementations for IfcRightCircularCone
double Ifc4x3_rc1::IfcRightCircularCone::Height() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRightCircularCone::setHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcRightCircularCone::BottomRadius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRightCircularCone::setBottomRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRightCircularCone::declaration() const { return *IFC4X3_RC1_IfcRightCircularCone_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRightCircularCone::Class() { return *IFC4X3_RC1_IfcRightCircularCone_type; }
Ifc4x3_rc1::IfcRightCircularCone::IfcRightCircularCone(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRightCircularCone_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRightCircularCone::IfcRightCircularCone(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRightCircularCone_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Height));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_BottomRadius));data_->setArgument(2,attr);} }

// Function implementations for IfcRightCircularCylinder
double Ifc4x3_rc1::IfcRightCircularCylinder::Height() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcRightCircularCylinder::setHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcRightCircularCylinder::Radius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRightCircularCylinder::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRightCircularCylinder::declaration() const { return *IFC4X3_RC1_IfcRightCircularCylinder_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRightCircularCylinder::Class() { return *IFC4X3_RC1_IfcRightCircularCylinder_type; }
Ifc4x3_rc1::IfcRightCircularCylinder::IfcRightCircularCylinder(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRightCircularCylinder_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRightCircularCylinder_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Height));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Radius));data_->setArgument(2,attr);} }

// Function implementations for IfcRoad


const IfcParse::entity& Ifc4x3_rc1::IfcRoad::declaration() const { return *IFC4X3_RC1_IfcRoad_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRoad::Class() { return *IFC4X3_RC1_IfcRoad_type; }
Ifc4x3_rc1::IfcRoad::IfcRoad(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRoad_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoad_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRoof
boost::optional< ::Ifc4x3_rc1::IfcRoofTypeEnum::Value > Ifc4x3_rc1::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcRoofTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRoof::declaration() const { return *IFC4X3_RC1_IfcRoof_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRoof::Class() { return *IFC4X3_RC1_IfcRoof_type; }
Ifc4x3_rc1::IfcRoof::IfcRoof(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRoof_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRoof::IfcRoof(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcRoofTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoof_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcRoofTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcRoofType
::Ifc4x3_rc1::IfcRoofTypeEnum::Value Ifc4x3_rc1::IfcRoofType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcRoofTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcRoofType::setPredefinedType(::Ifc4x3_rc1::IfcRoofTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcRoofTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRoofType::declaration() const { return *IFC4X3_RC1_IfcRoofType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRoofType::Class() { return *IFC4X3_RC1_IfcRoofType_type; }
Ifc4x3_rc1::IfcRoofType::IfcRoofType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRoofType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRoofType::IfcRoofType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcRoofTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoofType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcRoofTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRoot
std::string Ifc4x3_rc1::IfcRoot::GlobalId() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcOwnerHistory* Ifc4x3_rc1::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcOwnerHistory>(); }
void Ifc4x3_rc1::IfcRoot::setOwnerHistory(::Ifc4x3_rc1::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRoot::declaration() const { return *IFC4X3_RC1_IfcRoot_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRoot::Class() { return *IFC4X3_RC1_IfcRoot_type; }
Ifc4x3_rc1::IfcRoot::IfcRoot(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRoot_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRoot::IfcRoot(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoot_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcRoundedRectangleProfileDef
double Ifc4x3_rc1::IfcRoundedRectangleProfileDef::RoundingRadius() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcRoundedRectangleProfileDef::setRoundingRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcRoundedRectangleProfileDef::declaration() const { return *IFC4X3_RC1_IfcRoundedRectangleProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcRoundedRectangleProfileDef::Class() { return *IFC4X3_RC1_IfcRoundedRectangleProfileDef_type; }
Ifc4x3_rc1::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcEntityInstanceData* e) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcRoundedRectangleProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcRoundedRectangleProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_XDim));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_YDim));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RoundingRadius));data_->setArgument(5,attr);} }

// Function implementations for IfcSIUnit
boost::optional< ::Ifc4x3_rc1::IfcSIPrefix::Value > Ifc4x3_rc1::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSIPrefix::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc1::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSIPrefix::ToString(*v)));data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcSIUnitName::Value Ifc4x3_rc1::IfcSIUnit::Name() const {  return ::Ifc4x3_rc1::IfcSIUnitName::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc1::IfcSIUnit::setName(::Ifc4x3_rc1::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSIUnit::declaration() const { return *IFC4X3_RC1_IfcSIUnit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSIUnit::Class() { return *IFC4X3_RC1_IfcSIUnit_type; }
Ifc4x3_rc1::IfcSIUnit::IfcSIUnit(IfcEntityInstanceData* e) : IfcNamedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSIUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSIUnit::IfcSIUnit(::Ifc4x3_rc1::IfcUnitEnum::Value v2_UnitType, boost::optional< ::Ifc4x3_rc1::IfcSIPrefix::Value > v3_Prefix, ::Ifc4x3_rc1::IfcSIUnitName::Value v4_Name) : IfcNamedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSIUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::Derived());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_UnitType,::Ifc4x3_rc1::IfcUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);} if (v3_Prefix) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v3_Prefix,::Ifc4x3_rc1::IfcSIPrefix::ToString(*v3_Prefix))));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v4_Name,::Ifc4x3_rc1::IfcSIUnitName::ToString(v4_Name))));data_->setArgument(3,attr);} }

// Function implementations for IfcSanitaryTerminal
boost::optional< ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_rc1::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSanitaryTerminal::declaration() const { return *IFC4X3_RC1_IfcSanitaryTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSanitaryTerminal::Class() { return *IFC4X3_RC1_IfcSanitaryTerminal_type; }
Ifc4x3_rc1::IfcSanitaryTerminal::IfcSanitaryTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSanitaryTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSanitaryTerminal::IfcSanitaryTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSanitaryTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSanitaryTerminalType
::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value Ifc4x3_rc1::IfcSanitaryTerminalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSanitaryTerminalType::setPredefinedType(::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSanitaryTerminalType::declaration() const { return *IFC4X3_RC1_IfcSanitaryTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSanitaryTerminalType::Class() { return *IFC4X3_RC1_IfcSanitaryTerminalType_type; }
Ifc4x3_rc1::IfcSanitaryTerminalType::IfcSanitaryTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSanitaryTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSanitaryTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSanitaryTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSchedulingTime
boost::optional< std::string > Ifc4x3_rc1::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > Ifc4x3_rc1::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcDataOriginEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc1::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v)));data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSchedulingTime::declaration() const { return *IFC4X3_RC1_IfcSchedulingTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSchedulingTime::Class() { return *IFC4X3_RC1_IfcSchedulingTime_type; }
Ifc4x3_rc1::IfcSchedulingTime::IfcSchedulingTime(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSchedulingTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSchedulingTime::IfcSchedulingTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSchedulingTime_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcSeamCurve


const IfcParse::entity& Ifc4x3_rc1::IfcSeamCurve::declaration() const { return *IFC4X3_RC1_IfcSeamCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSeamCurve::Class() { return *IFC4X3_RC1_IfcSeamCurve_type; }
Ifc4x3_rc1::IfcSeamCurve::IfcSeamCurve(IfcEntityInstanceData* e) : IfcSurfaceCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSeamCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSeamCurve::IfcSeamCurve(::Ifc4x3_rc1::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_rc1::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSeamCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Curve3D));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AssociatedGeometry)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_MasterRepresentation,::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation))));data_->setArgument(2,attr);} }

// Function implementations for IfcSectionProperties
::Ifc4x3_rc1::IfcSectionTypeEnum::Value Ifc4x3_rc1::IfcSectionProperties::SectionType() const {  return ::Ifc4x3_rc1::IfcSectionTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc1::IfcSectionProperties::setSectionType(::Ifc4x3_rc1::IfcSectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSectionTypeEnum::ToString(v)));data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcSectionProperties::StartProfile() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcSectionProperties::setStartProfile(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcSectionProperties::EndProfile() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcSectionProperties::setEndProfile(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSectionProperties::declaration() const { return *IFC4X3_RC1_IfcSectionProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSectionProperties::Class() { return *IFC4X3_RC1_IfcSectionProperties_type; }
Ifc4x3_rc1::IfcSectionProperties::IfcSectionProperties(IfcEntityInstanceData* e) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSectionProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSectionProperties::IfcSectionProperties(::Ifc4x3_rc1::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4x3_rc1::IfcProfileDef* v2_StartProfile, ::Ifc4x3_rc1::IfcProfileDef* v3_EndProfile) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_SectionType,::Ifc4x3_rc1::IfcSectionTypeEnum::ToString(v1_SectionType))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartProfile));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_EndProfile));data_->setArgument(2,attr);} }

// Function implementations for IfcSectionReinforcementProperties
double Ifc4x3_rc1::IfcSectionReinforcementProperties::LongitudinalStartPosition() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcSectionReinforcementProperties::setLongitudinalStartPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcSectionReinforcementProperties::LongitudinalEndPosition() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc1::IfcSectionReinforcementProperties::ReinforcementRole() const {  return ::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc1::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcSectionProperties* Ifc4x3_rc1::IfcSectionReinforcementProperties::SectionDefinition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSectionProperties>(); }
void Ifc4x3_rc1::IfcSectionReinforcementProperties::setSectionDefinition(::Ifc4x3_rc1::IfcSectionProperties* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcReinforcementBarProperties >::ptr Ifc4x3_rc1::IfcSectionReinforcementProperties::CrossSectionReinforcementDefinitions() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcReinforcementBarProperties >(); }
void Ifc4x3_rc1::IfcSectionReinforcementProperties::setCrossSectionReinforcementDefinitions(aggregate_of< ::Ifc4x3_rc1::IfcReinforcementBarProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSectionReinforcementProperties::declaration() const { return *IFC4X3_RC1_IfcSectionReinforcementProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSectionReinforcementProperties::Class() { return *IFC4X3_RC1_IfcSectionReinforcementProperties_type; }
Ifc4x3_rc1::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(IfcEntityInstanceData* e) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSectionReinforcementProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, ::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4x3_rc1::IfcSectionProperties* v5_SectionDefinition, aggregate_of< ::Ifc4x3_rc1::IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionReinforcementProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_LongitudinalStartPosition));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_LongitudinalEndPosition));data_->setArgument(1,attr);} if (v3_TransversePosition) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_TransversePosition));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v4_ReinforcementRole,::Ifc4x3_rc1::IfcReinforcingBarRoleEnum::ToString(v4_ReinforcementRole))));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_SectionDefinition));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_CrossSectionReinforcementDefinitions)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcSectionedSolid
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcSectionedSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcSectionedSolid::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr Ifc4x3_rc1::IfcSectionedSolid::CrossSections() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcProfileDef >(); }
void Ifc4x3_rc1::IfcSectionedSolid::setCrossSections(aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSolid::declaration() const { return *IFC4X3_RC1_IfcSectionedSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSolid::Class() { return *IFC4X3_RC1_IfcSectionedSolid_type; }
Ifc4x3_rc1::IfcSectionedSolid::IfcSectionedSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSectionedSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSectionedSolid::IfcSectionedSolid(::Ifc4x3_rc1::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v2_CrossSections) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionedSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Directrix));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CrossSections)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcSectionedSolidHorizontal
aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr Ifc4x3_rc1::IfcSectionedSolidHorizontal::CrossSectionPositions() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcDistanceExpression >(); }
void Ifc4x3_rc1::IfcSectionedSolidHorizontal::setCrossSectionPositions(aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
bool Ifc4x3_rc1::IfcSectionedSolidHorizontal::FixedAxisVertical() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcSectionedSolidHorizontal::setFixedAxisVertical(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSolidHorizontal::declaration() const { return *IFC4X3_RC1_IfcSectionedSolidHorizontal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSolidHorizontal::Class() { return *IFC4X3_RC1_IfcSectionedSolidHorizontal_type; }
Ifc4x3_rc1::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(IfcEntityInstanceData* e) : IfcSectionedSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSectionedSolidHorizontal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(::Ifc4x3_rc1::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v3_CrossSectionPositions, bool v4_FixedAxisVertical) : IfcSectionedSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionedSolidHorizontal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Directrix));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CrossSections)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CrossSectionPositions)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_FixedAxisVertical));data_->setArgument(3,attr);} }

// Function implementations for IfcSectionedSpine
::Ifc4x3_rc1::IfcCompositeCurve* Ifc4x3_rc1::IfcSectionedSpine::SpineCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCompositeCurve>(); }
void Ifc4x3_rc1::IfcSectionedSpine::setSpineCurve(::Ifc4x3_rc1::IfcCompositeCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr Ifc4x3_rc1::IfcSectionedSpine::CrossSections() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcProfileDef >(); }
void Ifc4x3_rc1::IfcSectionedSpine::setCrossSections(aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcAxis2Placement3D >::ptr Ifc4x3_rc1::IfcSectionedSpine::CrossSectionPositions() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcAxis2Placement3D >(); }
void Ifc4x3_rc1::IfcSectionedSpine::setCrossSectionPositions(aggregate_of< ::Ifc4x3_rc1::IfcAxis2Placement3D >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSpine::declaration() const { return *IFC4X3_RC1_IfcSectionedSpine_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSpine::Class() { return *IFC4X3_RC1_IfcSectionedSpine_type; }
Ifc4x3_rc1::IfcSectionedSpine::IfcSectionedSpine(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSectionedSpine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSectionedSpine::IfcSectionedSpine(::Ifc4x3_rc1::IfcCompositeCurve* v1_SpineCurve, aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_rc1::IfcAxis2Placement3D >::ptr v3_CrossSectionPositions) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionedSpine_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SpineCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CrossSections)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CrossSectionPositions)->generalize());data_->setArgument(2,attr);} }

// Function implementations for IfcSectionedSurface
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcSectionedSurface::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcSectionedSurface::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr Ifc4x3_rc1::IfcSectionedSurface::CrossSectionPositions() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcDistanceExpression >(); }
void Ifc4x3_rc1::IfcSectionedSurface::setCrossSectionPositions(aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr Ifc4x3_rc1::IfcSectionedSurface::CrossSections() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcProfileDef >(); }
void Ifc4x3_rc1::IfcSectionedSurface::setCrossSections(aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
bool Ifc4x3_rc1::IfcSectionedSurface::FixedAxisVertical() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcSectionedSurface::setFixedAxisVertical(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSurface::declaration() const { return *IFC4X3_RC1_IfcSectionedSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSectionedSurface::Class() { return *IFC4X3_RC1_IfcSectionedSurface_type; }
Ifc4x3_rc1::IfcSectionedSurface::IfcSectionedSurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSectionedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSectionedSurface::IfcSectionedSurface(::Ifc4x3_rc1::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_rc1::IfcDistanceExpression >::ptr v2_CrossSectionPositions, aggregate_of< ::Ifc4x3_rc1::IfcProfileDef >::ptr v3_CrossSections, bool v4_FixedAxisVertical) : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSectionedSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Directrix));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CrossSectionPositions)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CrossSections)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_FixedAxisVertical));data_->setArgument(3,attr);} }

// Function implementations for IfcSensor
boost::optional< ::Ifc4x3_rc1::IfcSensorTypeEnum::Value > Ifc4x3_rc1::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSensorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSensor::declaration() const { return *IFC4X3_RC1_IfcSensor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSensor::Class() { return *IFC4X3_RC1_IfcSensor_type; }
Ifc4x3_rc1::IfcSensor::IfcSensor(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSensor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSensor::IfcSensor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSensorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSensor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSensorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSensorType
::Ifc4x3_rc1::IfcSensorTypeEnum::Value Ifc4x3_rc1::IfcSensorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSensorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSensorType::setPredefinedType(::Ifc4x3_rc1::IfcSensorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSensorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSensorType::declaration() const { return *IFC4X3_RC1_IfcSensorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSensorType::Class() { return *IFC4X3_RC1_IfcSensorType_type; }
Ifc4x3_rc1::IfcSensorType::IfcSensorType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSensorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSensorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSensorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSensorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcShadingDevice
boost::optional< ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value > Ifc4x3_rc1::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcShadingDevice::declaration() const { return *IFC4X3_RC1_IfcShadingDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcShadingDevice::Class() { return *IFC4X3_RC1_IfcShadingDevice_type; }
Ifc4x3_rc1::IfcShadingDevice::IfcShadingDevice(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcShadingDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcShadingDevice::IfcShadingDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShadingDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcShadingDeviceType
::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value Ifc4x3_rc1::IfcShadingDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcShadingDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcShadingDeviceType::declaration() const { return *IFC4X3_RC1_IfcShadingDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcShadingDeviceType::Class() { return *IFC4X3_RC1_IfcShadingDeviceType_type; }
Ifc4x3_rc1::IfcShadingDeviceType::IfcShadingDeviceType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcShadingDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShadingDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcShadingDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcShapeAspect
aggregate_of< ::Ifc4x3_rc1::IfcShapeModel >::ptr Ifc4x3_rc1::IfcShapeAspect::ShapeRepresentations() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcShapeModel >(); }
void Ifc4x3_rc1::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_rc1::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::logic::tribool Ifc4x3_rc1::IfcShapeAspect::ProductDefinitional() const {  boost::logic::tribool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcProductRepresentationSelect* Ifc4x3_rc1::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcProductRepresentationSelect>(); }
void Ifc4x3_rc1::IfcShapeAspect::setPartOfProductDefinitionShape(::Ifc4x3_rc1::IfcProductRepresentationSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }

::Ifc4x3_rc1::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc1::IfcShapeAspect::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC1_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcShapeAspect::declaration() const { return *IFC4X3_RC1_IfcShapeAspect_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcShapeAspect::Class() { return *IFC4X3_RC1_IfcShapeAspect_type; }
Ifc4x3_rc1::IfcShapeAspect::IfcShapeAspect(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcShapeAspect_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcShapeAspect::IfcShapeAspect(aggregate_of< ::Ifc4x3_rc1::IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, ::Ifc4x3_rc1::IfcProductRepresentationSelect* v5_PartOfProductDefinitionShape) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShapeAspect_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ShapeRepresentations)->generalize());data_->setArgument(0,attr);} if (v2_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Name));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ProductDefinitional));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_PartOfProductDefinitionShape));data_->setArgument(4,attr);} }

// Function implementations for IfcShapeModel

::Ifc4x3_rc1::IfcShapeAspect::list::ptr Ifc4x3_rc1::IfcShapeModel::OfShapeAspect() const { return data_->getInverse(IFC4X3_RC1_IfcShapeAspect_type, 0)->as<IfcShapeAspect>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcShapeModel::declaration() const { return *IFC4X3_RC1_IfcShapeModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcShapeModel::Class() { return *IFC4X3_RC1_IfcShapeModel_type; }
Ifc4x3_rc1::IfcShapeModel::IfcShapeModel(IfcEntityInstanceData* e) : IfcRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcShapeModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcShapeModel::IfcShapeModel(::Ifc4x3_rc1::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShapeModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ContextOfItems));data_->setArgument(0,attr);} if (v2_RepresentationIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_RepresentationIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_RepresentationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_RepresentationType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Items)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcShapeRepresentation


const IfcParse::entity& Ifc4x3_rc1::IfcShapeRepresentation::declaration() const { return *IFC4X3_RC1_IfcShapeRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcShapeRepresentation::Class() { return *IFC4X3_RC1_IfcShapeRepresentation_type; }
Ifc4x3_rc1::IfcShapeRepresentation::IfcShapeRepresentation(IfcEntityInstanceData* e) : IfcShapeModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcShapeRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcShapeRepresentation::IfcShapeRepresentation(::Ifc4x3_rc1::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShapeRepresentation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ContextOfItems));data_->setArgument(0,attr);} if (v2_RepresentationIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_RepresentationIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_RepresentationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_RepresentationType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Items)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcShellBasedSurfaceModel
aggregate_of_instance::ptr Ifc4x3_rc1::IfcShellBasedSurfaceModel::SbsmBoundary() const {  aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcShellBasedSurfaceModel::setSbsmBoundary(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcShellBasedSurfaceModel::declaration() const { return *IFC4X3_RC1_IfcShellBasedSurfaceModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcShellBasedSurfaceModel::Class() { return *IFC4X3_RC1_IfcShellBasedSurfaceModel_type; }
Ifc4x3_rc1::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcShellBasedSurfaceModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of_instance::ptr v1_SbsmBoundary) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcShellBasedSurfaceModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SbsmBoundary));data_->setArgument(0,attr);} }

// Function implementations for IfcSign
boost::optional< ::Ifc4x3_rc1::IfcSignTypeEnum::Value > Ifc4x3_rc1::IfcSign::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSignTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSignTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSign::declaration() const { return *IFC4X3_RC1_IfcSign_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSign::Class() { return *IFC4X3_RC1_IfcSign_type; }
Ifc4x3_rc1::IfcSign::IfcSign(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSign_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSign::IfcSign(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSignTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSign_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSignTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSignType
::Ifc4x3_rc1::IfcSignTypeEnum::Value Ifc4x3_rc1::IfcSignType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSignTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSignType::setPredefinedType(::Ifc4x3_rc1::IfcSignTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSignTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSignType::declaration() const { return *IFC4X3_RC1_IfcSignType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSignType::Class() { return *IFC4X3_RC1_IfcSignType_type; }
Ifc4x3_rc1::IfcSignType::IfcSignType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSignType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSignTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSignTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSignal
boost::optional< ::Ifc4x3_rc1::IfcSignalTypeEnum::Value > Ifc4x3_rc1::IfcSignal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSignalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSignalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSignal::declaration() const { return *IFC4X3_RC1_IfcSignal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSignal::Class() { return *IFC4X3_RC1_IfcSignal_type; }
Ifc4x3_rc1::IfcSignal::IfcSignal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSignal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSignal::IfcSignal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSignalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSignalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSignalType
::Ifc4x3_rc1::IfcSignalTypeEnum::Value Ifc4x3_rc1::IfcSignalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSignalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSignalType::setPredefinedType(::Ifc4x3_rc1::IfcSignalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSignalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSignalType::declaration() const { return *IFC4X3_RC1_IfcSignalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSignalType::Class() { return *IFC4X3_RC1_IfcSignalType_type; }
Ifc4x3_rc1::IfcSignalType::IfcSignalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSignalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSignalType::IfcSignalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSignalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSignalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSignalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSimpleProperty


const IfcParse::entity& Ifc4x3_rc1::IfcSimpleProperty::declaration() const { return *IFC4X3_RC1_IfcSimpleProperty_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSimpleProperty::Class() { return *IFC4X3_RC1_IfcSimpleProperty_type; }
Ifc4x3_rc1::IfcSimpleProperty::IfcSimpleProperty(IfcEntityInstanceData* e) : IfcProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSimpleProperty_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSimpleProperty_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcSimplePropertyTemplate
boost::optional< ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_rc1::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcPropertyEnumeration* Ifc4x3_rc1::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcPropertyEnumeration>(); }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_rc1::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > Ifc4x3_rc1::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStateEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStateEnum::ToString(*v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSimplePropertyTemplate::declaration() const { return *IFC4X3_RC1_IfcSimplePropertyTemplate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSimplePropertyTemplate::Class() { return *IFC4X3_RC1_IfcSimplePropertyTemplate_type; }
Ifc4x3_rc1::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSimplePropertyTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_PrimaryMeasureType, boost::optional< std::string > v7_SecondaryMeasureType, ::Ifc4x3_rc1::IfcPropertyEnumeration* v8_Enumerators, ::Ifc4x3_rc1::IfcUnit* v9_PrimaryUnit, ::Ifc4x3_rc1::IfcUnit* v10_SecondaryUnit, boost::optional< std::string > v11_Expression, boost::optional< ::Ifc4x3_rc1::IfcStateEnum::Value > v12_AccessState) : IfcPropertyTemplate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSimplePropertyTemplate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_TemplateType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v5_TemplateType,::Ifc4x3_rc1::IfcSimplePropertyTemplateTypeEnum::ToString(*v5_TemplateType))));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_PrimaryMeasureType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_PrimaryMeasureType));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_SecondaryMeasureType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_SecondaryMeasureType));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Enumerators));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_PrimaryUnit));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_SecondaryUnit));data_->setArgument(9,attr);} if (v11_Expression) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_Expression));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_AccessState) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v12_AccessState,::Ifc4x3_rc1::IfcStateEnum::ToString(*v12_AccessState))));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } }

// Function implementations for IfcSite
boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc1::IfcSite::RefLatitude() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc1::IfcSite::RefLongitude() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< int > /*[3:4]*/ v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
::Ifc4x3_rc1::IfcPostalAddress* Ifc4x3_rc1::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc1::IfcPostalAddress>(); }
void Ifc4x3_rc1::IfcSite::setSiteAddress(::Ifc4x3_rc1::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSite::declaration() const { return *IFC4X3_RC1_IfcSite_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSite::Class() { return *IFC4X3_RC1_IfcSite_type; }
Ifc4x3_rc1::IfcSite::IfcSite(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSite_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< std::vector< int > /*[3:4]*/ > v10_RefLatitude, boost::optional< std::vector< int > /*[3:4]*/ > v11_RefLongitude, boost::optional< double > v12_RefElevation, boost::optional< std::string > v13_LandTitleNumber, ::Ifc4x3_rc1::IfcPostalAddress* v14_SiteAddress) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSite_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_RefLatitude) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_RefLatitude));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_RefLongitude) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_RefLongitude));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_RefElevation) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_RefElevation));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_LandTitleNumber) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_LandTitleNumber));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v14_SiteAddress));data_->setArgument(13,attr);} }

// Function implementations for IfcSlab
boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > Ifc4x3_rc1::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSlab::declaration() const { return *IFC4X3_RC1_IfcSlab_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSlab::Class() { return *IFC4X3_RC1_IfcSlab_type; }
Ifc4x3_rc1::IfcSlab::IfcSlab(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSlab_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSlab::IfcSlab(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlab_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSlabElementedCase


const IfcParse::entity& Ifc4x3_rc1::IfcSlabElementedCase::declaration() const { return *IFC4X3_RC1_IfcSlabElementedCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSlabElementedCase::Class() { return *IFC4X3_RC1_IfcSlabElementedCase_type; }
Ifc4x3_rc1::IfcSlabElementedCase::IfcSlabElementedCase(IfcEntityInstanceData* e) : IfcSlab((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSlabElementedCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSlabElementedCase::IfcSlabElementedCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcSlab((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabElementedCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSlabStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcSlabStandardCase::declaration() const { return *IFC4X3_RC1_IfcSlabStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSlabStandardCase::Class() { return *IFC4X3_RC1_IfcSlabStandardCase_type; }
Ifc4x3_rc1::IfcSlabStandardCase::IfcSlabStandardCase(IfcEntityInstanceData* e) : IfcSlab((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSlabStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSlabStandardCase::IfcSlabStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcSlab((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSlabType
::Ifc4x3_rc1::IfcSlabTypeEnum::Value Ifc4x3_rc1::IfcSlabType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSlabTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSlabType::setPredefinedType(::Ifc4x3_rc1::IfcSlabTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSlabType::declaration() const { return *IFC4X3_RC1_IfcSlabType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSlabType::Class() { return *IFC4X3_RC1_IfcSlabType_type; }
Ifc4x3_rc1::IfcSlabType::IfcSlabType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSlabType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSlabTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlabType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSlabTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSlippageConnectionCondition
boost::optional< double > Ifc4x3_rc1::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSlippageConnectionCondition::declaration() const { return *IFC4X3_RC1_IfcSlippageConnectionCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSlippageConnectionCondition::Class() { return *IFC4X3_RC1_IfcSlippageConnectionCondition_type; }
Ifc4x3_rc1::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(IfcEntityInstanceData* e) : IfcStructuralConnectionCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSlippageConnectionCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(boost::optional< std::string > v1_Name, boost::optional< double > v2_SlippageX, boost::optional< double > v3_SlippageY, boost::optional< double > v4_SlippageZ) : IfcStructuralConnectionCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSlippageConnectionCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_SlippageX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_SlippageX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_SlippageY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_SlippageY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_SlippageZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_SlippageZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcSolarDevice
boost::optional< ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value > Ifc4x3_rc1::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSolarDevice::declaration() const { return *IFC4X3_RC1_IfcSolarDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSolarDevice::Class() { return *IFC4X3_RC1_IfcSolarDevice_type; }
Ifc4x3_rc1::IfcSolarDevice::IfcSolarDevice(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSolarDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSolarDevice::IfcSolarDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolarDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSolarDeviceType
::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value Ifc4x3_rc1::IfcSolarDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSolarDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSolarDeviceType::declaration() const { return *IFC4X3_RC1_IfcSolarDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSolarDeviceType::Class() { return *IFC4X3_RC1_IfcSolarDeviceType_type; }
Ifc4x3_rc1::IfcSolarDeviceType::IfcSolarDeviceType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSolarDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSolarDeviceType::IfcSolarDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolarDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSolarDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSolidModel


const IfcParse::entity& Ifc4x3_rc1::IfcSolidModel::declaration() const { return *IFC4X3_RC1_IfcSolidModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSolidModel::Class() { return *IFC4X3_RC1_IfcSolidModel_type; }
Ifc4x3_rc1::IfcSolidModel::IfcSolidModel(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSolidModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolidModel_type);  }

// Function implementations for IfcSolidStratum


const IfcParse::entity& Ifc4x3_rc1::IfcSolidStratum::declaration() const { return *IFC4X3_RC1_IfcSolidStratum_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSolidStratum::Class() { return *IFC4X3_RC1_IfcSolidStratum_type; }
Ifc4x3_rc1::IfcSolidStratum::IfcSolidStratum(IfcEntityInstanceData* e) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSolidStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSolidStratum::IfcSolidStratum(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSolidStratum_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcSpace
boost::optional< ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value > Ifc4x3_rc1::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }

::Ifc4x3_rc1::IfcRelCoversSpaces::list::ptr Ifc4x3_rc1::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X3_RC1_IfcRelCoversSpaces_type, 4)->as<IfcRelCoversSpaces>(); }
::Ifc4x3_rc1::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc1::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelSpaceBoundary_type, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcSpace::declaration() const { return *IFC4X3_RC1_IfcSpace_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpace::Class() { return *IFC4X3_RC1_IfcSpace_type; }
Ifc4x3_rc1::IfcSpace::IfcSpace(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_ElevationWithFlooring) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_ElevationWithFlooring) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_ElevationWithFlooring));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcSpaceHeater
boost::optional< ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_rc1::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpaceHeater::declaration() const { return *IFC4X3_RC1_IfcSpaceHeater_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpaceHeater::Class() { return *IFC4X3_RC1_IfcSpaceHeater_type; }
Ifc4x3_rc1::IfcSpaceHeater::IfcSpaceHeater(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpaceHeater_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpaceHeater::IfcSpaceHeater(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceHeater_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSpaceHeaterType
::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value Ifc4x3_rc1::IfcSpaceHeaterType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSpaceHeaterType::setPredefinedType(::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpaceHeaterType::declaration() const { return *IFC4X3_RC1_IfcSpaceHeaterType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpaceHeaterType::Class() { return *IFC4X3_RC1_IfcSpaceHeaterType_type; }
Ifc4x3_rc1::IfcSpaceHeaterType::IfcSpaceHeaterType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpaceHeaterType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceHeaterType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSpaceHeaterTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSpaceType
::Ifc4x3_rc1::IfcSpaceTypeEnum::Value Ifc4x3_rc1::IfcSpaceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSpaceType::setPredefinedType(::Ifc4x3_rc1::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpaceType::declaration() const { return *IFC4X3_RC1_IfcSpaceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpaceType::Class() { return *IFC4X3_RC1_IfcSpaceType_type; }
Ifc4x3_rc1::IfcSpaceType::IfcSpaceType(IfcEntityInstanceData* e) : IfcSpatialStructureElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpaceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSpaceTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialStructureElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpaceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSpaceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_LongName));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcSpatialElement
boost::optional< std::string > Ifc4x3_rc1::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }

::Ifc4x3_rc1::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelContainedInSpatialStructure_type, 5)->as<IfcRelContainedInSpatialStructure>(); }
::Ifc4x3_rc1::IfcRelServicesBuildings::list::ptr Ifc4x3_rc1::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X3_RC1_IfcRelServicesBuildings_type, 5)->as<IfcRelServicesBuildings>(); }
::Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcSpatialElement::ReferencesElements() const { return data_->getInverse(IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type, 5)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcSpatialElement::declaration() const { return *IFC4X3_RC1_IfcSpatialElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpatialElement::Class() { return *IFC4X3_RC1_IfcSpatialElement_type; }
Ifc4x3_rc1::IfcSpatialElement::IfcSpatialElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpatialElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcSpatialElementType
boost::optional< std::string > Ifc4x3_rc1::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpatialElementType::declaration() const { return *IFC4X3_RC1_IfcSpatialElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpatialElementType::Class() { return *IFC4X3_RC1_IfcSpatialElementType_type; }
Ifc4x3_rc1::IfcSpatialElementType::IfcSpatialElementType(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpatialElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSpatialStructureElement
boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > Ifc4x3_rc1::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpatialStructureElement::declaration() const { return *IFC4X3_RC1_IfcSpatialStructureElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpatialStructureElement::Class() { return *IFC4X3_RC1_IfcSpatialStructureElement_type; }
Ifc4x3_rc1::IfcSpatialStructureElement::IfcSpatialStructureElement(IfcEntityInstanceData* e) : IfcSpatialElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpatialStructureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpatialStructureElement::IfcSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialStructureElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_CompositionType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_CompositionType,::Ifc4x3_rc1::IfcElementCompositionEnum::ToString(*v9_CompositionType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSpatialStructureElementType


const IfcParse::entity& Ifc4x3_rc1::IfcSpatialStructureElementType::declaration() const { return *IFC4X3_RC1_IfcSpatialStructureElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpatialStructureElementType::Class() { return *IFC4X3_RC1_IfcSpatialStructureElementType_type; }
Ifc4x3_rc1::IfcSpatialStructureElementType::IfcSpatialStructureElementType(IfcEntityInstanceData* e) : IfcSpatialElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpatialStructureElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcSpatialElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialStructureElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSpatialZone
boost::optional< ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value > Ifc4x3_rc1::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpatialZone::declaration() const { return *IFC4X3_RC1_IfcSpatialZone_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpatialZone::Class() { return *IFC4X3_RC1_IfcSpatialZone_type; }
Ifc4x3_rc1::IfcSpatialZone::IfcSpatialZone(IfcEntityInstanceData* e) : IfcSpatialElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpatialZone_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType) : IfcSpatialElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialZone_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongName));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSpatialZoneType
::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc1::IfcSpatialZoneType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSpatialZoneType::declaration() const { return *IFC4X3_RC1_IfcSpatialZoneType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSpatialZoneType::Class() { return *IFC4X3_RC1_IfcSpatialZoneType_type; }
Ifc4x3_rc1::IfcSpatialZoneType::IfcSpatialZoneType(IfcEntityInstanceData* e) : IfcSpatialElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSpatialZoneType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSpatialZoneType::IfcSpatialZoneType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSpatialZoneType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSpatialZoneTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_LongName));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcSphere
double Ifc4x3_rc1::IfcSphere::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSphere::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSphere::declaration() const { return *IFC4X3_RC1_IfcSphere_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSphere::Class() { return *IFC4X3_RC1_IfcSphere_type; }
Ifc4x3_rc1::IfcSphere::IfcSphere(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSphere_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSphere::IfcSphere(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSphere_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Radius));data_->setArgument(1,attr);} }

// Function implementations for IfcSphericalSurface
double Ifc4x3_rc1::IfcSphericalSurface::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSphericalSurface::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSphericalSurface::declaration() const { return *IFC4X3_RC1_IfcSphericalSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSphericalSurface::Class() { return *IFC4X3_RC1_IfcSphericalSurface_type; }
Ifc4x3_rc1::IfcSphericalSurface::IfcSphericalSurface(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSphericalSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSphericalSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Radius));data_->setArgument(1,attr);} }

// Function implementations for IfcStackTerminal
boost::optional< ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value > Ifc4x3_rc1::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStackTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStackTerminal::declaration() const { return *IFC4X3_RC1_IfcStackTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStackTerminal::Class() { return *IFC4X3_RC1_IfcStackTerminal_type; }
Ifc4x3_rc1::IfcStackTerminal::IfcStackTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStackTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStackTerminal::IfcStackTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStackTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcStackTerminalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcStackTerminalType
::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value Ifc4x3_rc1::IfcStackTerminalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcStackTerminalType::setPredefinedType(::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStackTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStackTerminalType::declaration() const { return *IFC4X3_RC1_IfcStackTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStackTerminalType::Class() { return *IFC4X3_RC1_IfcStackTerminalType_type; }
Ifc4x3_rc1::IfcStackTerminalType::IfcStackTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStackTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcStackTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStackTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcStackTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStair
boost::optional< ::Ifc4x3_rc1::IfcStairTypeEnum::Value > Ifc4x3_rc1::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStairTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStairTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStair::declaration() const { return *IFC4X3_RC1_IfcStair_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStair::Class() { return *IFC4X3_RC1_IfcStair_type; }
Ifc4x3_rc1::IfcStair::IfcStair(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStair_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcStairTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStair_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcStairTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcStairFlight
boost::optional< int > Ifc4x3_rc1::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value > Ifc4x3_rc1::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); }
void Ifc4x3_rc1::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcStairFlightTypeEnum::ToString(*v)));data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStairFlight::declaration() const { return *IFC4X3_RC1_IfcStairFlight_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStairFlight::Class() { return *IFC4X3_RC1_IfcStairFlight_type; }
Ifc4x3_rc1::IfcStairFlight::IfcStairFlight(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStairFlight_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStairFlight::IfcStairFlight(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value > v13_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairFlight_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_NumberOfRisers) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_NumberOfRisers));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_NumberOfTreads) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_NumberOfTreads));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_RiserHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_RiserHeight));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_TreadLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_TreadLength));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v13_PredefinedType,::Ifc4x3_rc1::IfcStairFlightTypeEnum::ToString(*v13_PredefinedType))));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcStairFlightType
::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value Ifc4x3_rc1::IfcStairFlightType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStairFlightTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcStairFlightType::setPredefinedType(::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStairFlightTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStairFlightType::declaration() const { return *IFC4X3_RC1_IfcStairFlightType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStairFlightType::Class() { return *IFC4X3_RC1_IfcStairFlightType_type; }
Ifc4x3_rc1::IfcStairFlightType::IfcStairFlightType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStairFlightType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStairFlightType::IfcStairFlightType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcStairFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairFlightType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcStairFlightTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStairType
::Ifc4x3_rc1::IfcStairTypeEnum::Value Ifc4x3_rc1::IfcStairType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStairTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcStairType::setPredefinedType(::Ifc4x3_rc1::IfcStairTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStairTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStairType::declaration() const { return *IFC4X3_RC1_IfcStairType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStairType::Class() { return *IFC4X3_RC1_IfcStairType_type; }
Ifc4x3_rc1::IfcStairType::IfcStairType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStairType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcStairTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStairType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcStairTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStructuralAction
boost::optional< bool > Ifc4x3_rc1::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralAction::declaration() const { return *IFC4X3_RC1_IfcStructuralAction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralAction::Class() { return *IFC4X3_RC1_IfcStructuralAction_type; }
Ifc4x3_rc1::IfcStructuralAction::IfcStructuralAction(IfcEntityInstanceData* e) : IfcStructuralActivity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralAction::IfcStructuralAction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralActivity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralAction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} if (v10_DestabilizingLoad) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_DestabilizingLoad));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcStructuralActivity
::Ifc4x3_rc1::IfcStructuralLoad* Ifc4x3_rc1::IfcStructuralActivity::AppliedLoad() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcStructuralLoad>(); }
void Ifc4x3_rc1::IfcStructuralActivity::setAppliedLoad(::Ifc4x3_rc1::IfcStructuralLoad* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value Ifc4x3_rc1::IfcStructuralActivity::GlobalOrLocal() const {  return ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcStructuralActivity::setGlobalOrLocal(::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v)));data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelConnectsStructuralActivity::list::ptr Ifc4x3_rc1::IfcStructuralActivity::AssignedToStructuralItem() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsStructuralActivity_type, 5)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcStructuralActivity::declaration() const { return *IFC4X3_RC1_IfcStructuralActivity_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralActivity::Class() { return *IFC4X3_RC1_IfcStructuralActivity_type; }
Ifc4x3_rc1::IfcStructuralActivity::IfcStructuralActivity(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralActivity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralActivity::IfcStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralActivity_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralAnalysisModel
::Ifc4x3_rc1::IfcAnalysisModelTypeEnum::Value Ifc4x3_rc1::IfcStructuralAnalysisModel::PredefinedType() const {  return ::Ifc4x3_rc1::IfcAnalysisModelTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_rc1::IfcAnalysisModelTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAnalysisModelTypeEnum::ToString(v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadGroup >::ptr > Ifc4x3_rc1::IfcStructuralAnalysisModel::LoadedBy() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcStructuralLoadGroup >(); }
void Ifc4x3_rc1::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralResultGroup >::ptr > Ifc4x3_rc1::IfcStructuralAnalysisModel::HasResults() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc1::IfcStructuralResultGroup >(); }
void Ifc4x3_rc1::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcObjectPlacement* Ifc4x3_rc1::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcObjectPlacement>(); }
void Ifc4x3_rc1::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_rc1::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralAnalysisModel::declaration() const { return *IFC4X3_RC1_IfcStructuralAnalysisModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralAnalysisModel::Class() { return *IFC4X3_RC1_IfcStructuralAnalysisModel_type; }
Ifc4x3_rc1::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralAnalysisModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4x3_rc1::IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcStructuralResultGroup >::ptr > v9_HasResults, ::Ifc4x3_rc1::IfcObjectPlacement* v10_SharedPlacement) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralAnalysisModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PredefinedType,::Ifc4x3_rc1::IfcAnalysisModelTypeEnum::ToString(v6_PredefinedType))));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_OrientationOf2DPlane));data_->setArgument(6,attr);} if (v8_LoadedBy) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LoadedBy)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_HasResults) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_HasResults)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_SharedPlacement));data_->setArgument(9,attr);} }

// Function implementations for IfcStructuralConnection
::Ifc4x3_rc1::IfcBoundaryCondition* Ifc4x3_rc1::IfcStructuralConnection::AppliedCondition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcBoundaryCondition>(); }
void Ifc4x3_rc1::IfcStructuralConnection::setAppliedCondition(::Ifc4x3_rc1::IfcBoundaryCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }

::Ifc4x3_rc1::IfcRelConnectsStructuralMember::list::ptr Ifc4x3_rc1::IfcStructuralConnection::ConnectsStructuralMembers() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsStructuralMember_type, 5)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcStructuralConnection::declaration() const { return *IFC4X3_RC1_IfcStructuralConnection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralConnection::Class() { return *IFC4X3_RC1_IfcStructuralConnection_type; }
Ifc4x3_rc1::IfcStructuralConnection::IfcStructuralConnection(IfcEntityInstanceData* e) : IfcStructuralItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralConnection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedCondition));data_->setArgument(7,attr);} }

// Function implementations for IfcStructuralConnectionCondition
boost::optional< std::string > Ifc4x3_rc1::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralConnectionCondition::declaration() const { return *IFC4X3_RC1_IfcStructuralConnectionCondition_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralConnectionCondition::Class() { return *IFC4X3_RC1_IfcStructuralConnectionCondition_type; }
Ifc4x3_rc1::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralConnectionCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralConnectionCondition_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcStructuralCurveAction
boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc1::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} }
::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc1::IfcStructuralCurveAction::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveAction::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveAction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveAction::Class() { return *IFC4X3_RC1_IfcStructuralCurveAction_type; }
Ifc4x3_rc1::IfcStructuralCurveAction::IfcStructuralCurveAction(IfcEntityInstanceData* e) : IfcStructuralAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralCurveAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralCurveAction::IfcStructuralCurveAction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveAction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} if (v10_DestabilizingLoad) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_DestabilizingLoad));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_ProjectedOrTrue) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_ProjectedOrTrue,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralCurveConnection
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcStructuralCurveConnection::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcStructuralCurveConnection::setAxis(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveConnection::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveConnection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveConnection::Class() { return *IFC4X3_RC1_IfcStructuralCurveConnection_type; }
Ifc4x3_rc1::IfcStructuralCurveConnection::IfcStructuralCurveConnection(IfcEntityInstanceData* e) : IfcStructuralConnection((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralCurveConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralCurveConnection::IfcStructuralCurveConnection(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_rc1::IfcDirection* v9_Axis) : IfcStructuralConnection((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveConnection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedCondition));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Axis));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralCurveMember
::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::Value Ifc4x3_rc1::IfcStructuralCurveMember::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcStructuralCurveMember::setPredefinedType(::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcStructuralCurveMember::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcStructuralCurveMember::setAxis(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveMember::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveMember_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveMember::Class() { return *IFC4X3_RC1_IfcStructuralCurveMember_type; }
Ifc4x3_rc1::IfcStructuralCurveMember::IfcStructuralCurveMember(IfcEntityInstanceData* e) : IfcStructuralMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralCurveMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralCurveMember::IfcStructuralCurveMember(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_rc1::IfcDirection* v9_Axis) : IfcStructuralMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveMember_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PredefinedType,::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::ToString(v8_PredefinedType))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Axis));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralCurveMemberVarying


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveMemberVarying::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveMemberVarying_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveMemberVarying::Class() { return *IFC4X3_RC1_IfcStructuralCurveMemberVarying_type; }
Ifc4x3_rc1::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(IfcEntityInstanceData* e) : IfcStructuralCurveMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralCurveMemberVarying_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_rc1::IfcDirection* v9_Axis) : IfcStructuralCurveMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveMemberVarying_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PredefinedType,::Ifc4x3_rc1::IfcStructuralCurveMemberTypeEnum::ToString(v8_PredefinedType))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Axis));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralCurveReaction
::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc1::IfcStructuralCurveReaction::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcStructuralCurveReaction::setPredefinedType(::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveReaction::declaration() const { return *IFC4X3_RC1_IfcStructuralCurveReaction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralCurveReaction::Class() { return *IFC4X3_RC1_IfcStructuralCurveReaction_type; }
Ifc4x3_rc1::IfcStructuralCurveReaction::IfcStructuralCurveReaction(IfcEntityInstanceData* e) : IfcStructuralReaction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralCurveReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralCurveReaction::IfcStructuralCurveReaction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralCurveReaction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStructuralItem

::Ifc4x3_rc1::IfcRelConnectsStructuralActivity::list::ptr Ifc4x3_rc1::IfcStructuralItem::AssignedStructuralActivity() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsStructuralActivity_type, 4)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcStructuralItem::declaration() const { return *IFC4X3_RC1_IfcStructuralItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralItem::Class() { return *IFC4X3_RC1_IfcStructuralItem_type; }
Ifc4x3_rc1::IfcStructuralItem::IfcStructuralItem(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralItem::IfcStructuralItem(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralItem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} }

// Function implementations for IfcStructuralLinearAction


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLinearAction::declaration() const { return *IFC4X3_RC1_IfcStructuralLinearAction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLinearAction::Class() { return *IFC4X3_RC1_IfcStructuralLinearAction_type; }
Ifc4x3_rc1::IfcStructuralLinearAction::IfcStructuralLinearAction(IfcEntityInstanceData* e) : IfcStructuralCurveAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLinearAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralCurveAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLinearAction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} if (v10_DestabilizingLoad) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_DestabilizingLoad));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_ProjectedOrTrue) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_ProjectedOrTrue,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcStructuralCurveActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralLoad
boost::optional< std::string > Ifc4x3_rc1::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoad::declaration() const { return *IFC4X3_RC1_IfcStructuralLoad_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoad::Class() { return *IFC4X3_RC1_IfcStructuralLoad_type; }
Ifc4x3_rc1::IfcStructuralLoad::IfcStructuralLoad(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoad_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoad_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcStructuralLoadCase
boost::optional< std::vector< double > /*[3:3]*/ > Ifc4x3_rc1::IfcStructuralLoadCase::SelfWeightCoefficients() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::vector< double > /*[3:3]*/ v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadCase::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadCase::Class() { return *IFC4X3_RC1_IfcStructuralLoadCase_type; }
Ifc4x3_rc1::IfcStructuralLoadCase::IfcStructuralLoadCase(IfcEntityInstanceData* e) : IfcStructuralLoadGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_rc1::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_rc1::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose, boost::optional< std::vector< double > /*[3:3]*/ > v11_SelfWeightCoefficients) : IfcStructuralLoadGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PredefinedType,::Ifc4x3_rc1::IfcLoadGroupTypeEnum::ToString(v6_PredefinedType))));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v7_ActionType,::Ifc4x3_rc1::IfcActionTypeEnum::ToString(v7_ActionType))));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_ActionSource,::Ifc4x3_rc1::IfcActionSourceTypeEnum::ToString(v8_ActionSource))));data_->setArgument(7,attr);} if (v9_Coefficient) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Coefficient));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Purpose));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_SelfWeightCoefficients) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_SelfWeightCoefficients));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcStructuralLoadConfiguration
aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >::ptr Ifc4x3_rc1::IfcStructuralLoadConfiguration::Values() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >(); }
void Ifc4x3_rc1::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc1::IfcStructuralLoadConfiguration::Locations() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadConfiguration_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadConfiguration::Class() { return *IFC4X3_RC1_IfcStructuralLoadConfiguration_type; }
Ifc4x3_rc1::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(IfcEntityInstanceData* e) : IfcStructuralLoad((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadConfiguration_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_rc1::IfcStructuralLoadOrResult >::ptr v2_Values, boost::optional< std::vector< std::vector< double > > > v3_Locations) : IfcStructuralLoad((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadConfiguration_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Values)->generalize());data_->setArgument(1,attr);} if (v3_Locations) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Locations));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcStructuralLoadGroup
::Ifc4x3_rc1::IfcLoadGroupTypeEnum::Value Ifc4x3_rc1::IfcStructuralLoadGroup::PredefinedType() const {  return ::Ifc4x3_rc1::IfcLoadGroupTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcStructuralLoadGroup::setPredefinedType(::Ifc4x3_rc1::IfcLoadGroupTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcLoadGroupTypeEnum::ToString(v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcActionTypeEnum::Value Ifc4x3_rc1::IfcStructuralLoadGroup::ActionType() const {  return ::Ifc4x3_rc1::IfcActionTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc1::IfcStructuralLoadGroup::setActionType(::Ifc4x3_rc1::IfcActionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcActionTypeEnum::ToString(v)));data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcActionSourceTypeEnum::Value Ifc4x3_rc1::IfcStructuralLoadGroup::ActionSource() const {  return ::Ifc4x3_rc1::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_rc1::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }

::Ifc4x3_rc1::IfcStructuralResultGroup::list::ptr Ifc4x3_rc1::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X3_RC1_IfcStructuralResultGroup_type, 6)->as<IfcStructuralResultGroup>(); }
::Ifc4x3_rc1::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc1::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X3_RC1_IfcStructuralAnalysisModel_type, 7)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadGroup::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadGroup_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadGroup::Class() { return *IFC4X3_RC1_IfcStructuralLoadGroup_type; }
Ifc4x3_rc1::IfcStructuralLoadGroup::IfcStructuralLoadGroup(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_rc1::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_rc1::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadGroup_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PredefinedType,::Ifc4x3_rc1::IfcLoadGroupTypeEnum::ToString(v6_PredefinedType))));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v7_ActionType,::Ifc4x3_rc1::IfcActionTypeEnum::ToString(v7_ActionType))));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_ActionSource,::Ifc4x3_rc1::IfcActionSourceTypeEnum::ToString(v8_ActionSource))));data_->setArgument(7,attr);} if (v9_Coefficient) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Coefficient));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Purpose));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcStructuralLoadLinearForce
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadLinearForce_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadLinearForce::Class() { return *IFC4X3_RC1_IfcStructuralLoadLinearForce_type; }
Ifc4x3_rc1::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadLinearForce_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadLinearForce_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_LinearForceX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_LinearForceX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_LinearForceY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_LinearForceY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_LinearForceZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_LinearForceZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_LinearMomentX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_LinearMomentX));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LinearMomentY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LinearMomentY));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LinearMomentZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LinearMomentZ));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcStructuralLoadOrResult


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadOrResult::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadOrResult_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadOrResult::Class() { return *IFC4X3_RC1_IfcStructuralLoadOrResult_type; }
Ifc4x3_rc1::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(IfcEntityInstanceData* e) : IfcStructuralLoad((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadOrResult_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< std::string > v1_Name) : IfcStructuralLoad((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadOrResult_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcStructuralLoadPlanarForce
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadPlanarForce_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadPlanarForce::Class() { return *IFC4X3_RC1_IfcStructuralLoadPlanarForce_type; }
Ifc4x3_rc1::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadPlanarForce_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(boost::optional< std::string > v1_Name, boost::optional< double > v2_PlanarForceX, boost::optional< double > v3_PlanarForceY, boost::optional< double > v4_PlanarForceZ) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadPlanarForce_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_PlanarForceX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_PlanarForceX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_PlanarForceY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_PlanarForceY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_PlanarForceZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_PlanarForceZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcStructuralLoadSingleDisplacement
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleDisplacement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::Class() { return *IFC4X3_RC1_IfcStructuralLoadSingleDisplacement_type; }
Ifc4x3_rc1::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadSingleDisplacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadSingleDisplacement_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DisplacementX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_DisplacementX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_DisplacementY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_DisplacementY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_DisplacementZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_DisplacementZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_RotationalDisplacementRX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_RotationalDisplacementRX));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_RotationalDisplacementRY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_RotationalDisplacementRY));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RotationalDisplacementRZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RotationalDisplacementRZ));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcStructuralLoadSingleDisplacementDistortion
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleDisplacementDistortion_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::Class() { return *IFC4X3_RC1_IfcStructuralLoadSingleDisplacementDistortion_type; }
Ifc4x3_rc1::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(IfcEntityInstanceData* e) : IfcStructuralLoadSingleDisplacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadSingleDisplacementDistortion_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadSingleDisplacementDistortion_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DisplacementX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_DisplacementX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_DisplacementY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_DisplacementY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_DisplacementZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_DisplacementZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_RotationalDisplacementRX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_RotationalDisplacementRX));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_RotationalDisplacementRY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_RotationalDisplacementRY));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RotationalDisplacementRZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RotationalDisplacementRZ));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Distortion) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Distortion));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcStructuralLoadSingleForce
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleForce_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleForce::Class() { return *IFC4X3_RC1_IfcStructuralLoadSingleForce_type; }
Ifc4x3_rc1::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadSingleForce_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadSingleForce_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_ForceX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ForceX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_ForceY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_ForceY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ForceZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ForceZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_MomentX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_MomentX));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_MomentY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_MomentY));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_MomentZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_MomentZ));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } }

// Function implementations for IfcStructuralLoadSingleForceWarping
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadSingleForceWarping_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::Class() { return *IFC4X3_RC1_IfcStructuralLoadSingleForceWarping_type; }
Ifc4x3_rc1::IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(IfcEntityInstanceData* e) : IfcStructuralLoadSingleForce((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadSingleForceWarping_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadSingleForceWarping_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_ForceX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ForceX));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_ForceY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_ForceY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ForceZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ForceZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_MomentX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_MomentX));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_MomentY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_MomentY));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_MomentZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_MomentZ));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_WarpingMoment) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_WarpingMoment));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcStructuralLoadStatic


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadStatic::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadStatic_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadStatic::Class() { return *IFC4X3_RC1_IfcStructuralLoadStatic_type; }
Ifc4x3_rc1::IfcStructuralLoadStatic::IfcStructuralLoadStatic(IfcEntityInstanceData* e) : IfcStructuralLoadOrResult((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadStatic_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::string > v1_Name) : IfcStructuralLoadOrResult((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadStatic_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } }

// Function implementations for IfcStructuralLoadTemperature
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadTemperature::declaration() const { return *IFC4X3_RC1_IfcStructuralLoadTemperature_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralLoadTemperature::Class() { return *IFC4X3_RC1_IfcStructuralLoadTemperature_type; }
Ifc4x3_rc1::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralLoadTemperature_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(boost::optional< std::string > v1_Name, boost::optional< double > v2_DeltaTConstant, boost::optional< double > v3_DeltaTY, boost::optional< double > v4_DeltaTZ) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralLoadTemperature_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DeltaTConstant) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_DeltaTConstant));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_DeltaTY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_DeltaTY));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_DeltaTZ) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_DeltaTZ));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcStructuralMember

::Ifc4x3_rc1::IfcRelConnectsStructuralMember::list::ptr Ifc4x3_rc1::IfcStructuralMember::ConnectedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelConnectsStructuralMember_type, 4)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcStructuralMember::declaration() const { return *IFC4X3_RC1_IfcStructuralMember_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralMember::Class() { return *IFC4X3_RC1_IfcStructuralMember_type; }
Ifc4x3_rc1::IfcStructuralMember::IfcStructuralMember(IfcEntityInstanceData* e) : IfcStructuralItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralMember::IfcStructuralMember(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation) : IfcStructuralItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralMember_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} }

// Function implementations for IfcStructuralPlanarAction


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPlanarAction::declaration() const { return *IFC4X3_RC1_IfcStructuralPlanarAction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPlanarAction::Class() { return *IFC4X3_RC1_IfcStructuralPlanarAction_type; }
Ifc4x3_rc1::IfcStructuralPlanarAction::IfcStructuralPlanarAction(IfcEntityInstanceData* e) : IfcStructuralSurfaceAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralPlanarAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralPlanarAction::IfcStructuralPlanarAction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralSurfaceAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralPlanarAction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} if (v10_DestabilizingLoad) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_DestabilizingLoad));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_ProjectedOrTrue) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_ProjectedOrTrue,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralPointAction


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPointAction::declaration() const { return *IFC4X3_RC1_IfcStructuralPointAction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPointAction::Class() { return *IFC4X3_RC1_IfcStructuralPointAction_type; }
Ifc4x3_rc1::IfcStructuralPointAction::IfcStructuralPointAction(IfcEntityInstanceData* e) : IfcStructuralAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralPointAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralPointAction::IfcStructuralPointAction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralPointAction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} if (v10_DestabilizingLoad) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_DestabilizingLoad));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcStructuralPointConnection
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcStructuralPointConnection::ConditionCoordinateSystem() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcStructuralPointConnection::setConditionCoordinateSystem(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPointConnection::declaration() const { return *IFC4X3_RC1_IfcStructuralPointConnection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPointConnection::Class() { return *IFC4X3_RC1_IfcStructuralPointConnection_type; }
Ifc4x3_rc1::IfcStructuralPointConnection::IfcStructuralPointConnection(IfcEntityInstanceData* e) : IfcStructuralConnection((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralPointConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralPointConnection::IfcStructuralPointConnection(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_rc1::IfcAxis2Placement3D* v9_ConditionCoordinateSystem) : IfcStructuralConnection((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralPointConnection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedCondition));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_ConditionCoordinateSystem));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralPointReaction


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPointReaction::declaration() const { return *IFC4X3_RC1_IfcStructuralPointReaction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralPointReaction::Class() { return *IFC4X3_RC1_IfcStructuralPointReaction_type; }
Ifc4x3_rc1::IfcStructuralPointReaction::IfcStructuralPointReaction(IfcEntityInstanceData* e) : IfcStructuralReaction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralPointReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralReaction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralPointReaction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralReaction


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralReaction::declaration() const { return *IFC4X3_RC1_IfcStructuralReaction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralReaction::Class() { return *IFC4X3_RC1_IfcStructuralReaction_type; }
Ifc4x3_rc1::IfcStructuralReaction::IfcStructuralReaction(IfcEntityInstanceData* e) : IfcStructuralActivity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralReaction::IfcStructuralReaction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralActivity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralReaction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralResultGroup
::Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::Value Ifc4x3_rc1::IfcStructuralResultGroup::TheoryType() const {  return ::Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcStructuralResultGroup::setTheoryType(::Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::ToString(v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcStructuralLoadGroup* Ifc4x3_rc1::IfcStructuralResultGroup::ResultForLoadGroup() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcStructuralLoadGroup>(); }
void Ifc4x3_rc1::IfcStructuralResultGroup::setResultForLoadGroup(::Ifc4x3_rc1::IfcStructuralLoadGroup* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
bool Ifc4x3_rc1::IfcStructuralResultGroup::IsLinear() const {  bool v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcStructuralResultGroup::setIsLinear(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }

::Ifc4x3_rc1::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc1::IfcStructuralResultGroup::ResultGroupFor() const { return data_->getInverse(IFC4X3_RC1_IfcStructuralAnalysisModel_type, 8)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcStructuralResultGroup::declaration() const { return *IFC4X3_RC1_IfcStructuralResultGroup_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralResultGroup::Class() { return *IFC4X3_RC1_IfcStructuralResultGroup_type; }
Ifc4x3_rc1::IfcStructuralResultGroup::IfcStructuralResultGroup(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralResultGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4x3_rc1::IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralResultGroup_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_TheoryType,::Ifc4x3_rc1::IfcAnalysisTheoryTypeEnum::ToString(v6_TheoryType))));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_ResultForLoadGroup));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_IsLinear));data_->setArgument(7,attr);} }

// Function implementations for IfcStructuralSurfaceAction
boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc1::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v)));data_->setArgument(10,attr);} }
::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc1::IfcStructuralSurfaceAction::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceAction::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceAction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceAction::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceAction_type; }
Ifc4x3_rc1::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(IfcEntityInstanceData* e) : IfcStructuralAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralSurfaceAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceAction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} if (v10_DestabilizingLoad) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_DestabilizingLoad));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_ProjectedOrTrue) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_ProjectedOrTrue,::Ifc4x3_rc1::IfcProjectedOrTrueLengthEnum::ToString(*v11_ProjectedOrTrue))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralSurfaceConnection


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceConnection::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceConnection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceConnection::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceConnection_type; }
Ifc4x3_rc1::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(IfcEntityInstanceData* e) : IfcStructuralConnection((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralSurfaceConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceConnection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedCondition));data_->setArgument(7,attr);} }

// Function implementations for IfcStructuralSurfaceMember
::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc1::IfcStructuralSurfaceMember::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceMember::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceMember_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceMember::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceMember_type; }
Ifc4x3_rc1::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(IfcEntityInstanceData* e) : IfcStructuralMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralSurfaceMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceMember_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PredefinedType,::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::ToString(v8_PredefinedType))));data_->setArgument(7,attr);} if (v9_Thickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Thickness));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcStructuralSurfaceMemberVarying


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceMemberVarying::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceMemberVarying_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceMemberVarying::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceMemberVarying_type; }
Ifc4x3_rc1::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(IfcEntityInstanceData* e) : IfcStructuralSurfaceMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralSurfaceMemberVarying_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralSurfaceMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceMemberVarying_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_PredefinedType,::Ifc4x3_rc1::IfcStructuralSurfaceMemberTypeEnum::ToString(v8_PredefinedType))));data_->setArgument(7,attr);} if (v9_Thickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Thickness));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcStructuralSurfaceReaction
::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc1::IfcStructuralSurfaceReaction::PredefinedType() const {  return ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcStructuralSurfaceReaction::setPredefinedType(::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceReaction::declaration() const { return *IFC4X3_RC1_IfcStructuralSurfaceReaction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStructuralSurfaceReaction::Class() { return *IFC4X3_RC1_IfcStructuralSurfaceReaction_type; }
Ifc4x3_rc1::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(IfcEntityInstanceData* e) : IfcStructuralReaction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStructuralSurfaceReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc1::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc1::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStructuralSurfaceReaction_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_AppliedLoad));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_GlobalOrLocal,::Ifc4x3_rc1::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcStructuralSurfaceActivityTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStyleModel


const IfcParse::entity& Ifc4x3_rc1::IfcStyleModel::declaration() const { return *IFC4X3_RC1_IfcStyleModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStyleModel::Class() { return *IFC4X3_RC1_IfcStyleModel_type; }
Ifc4x3_rc1::IfcStyleModel::IfcStyleModel(IfcEntityInstanceData* e) : IfcRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStyleModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStyleModel::IfcStyleModel(::Ifc4x3_rc1::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStyleModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ContextOfItems));data_->setArgument(0,attr);} if (v2_RepresentationIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_RepresentationIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_RepresentationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_RepresentationType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Items)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcStyledItem
::Ifc4x3_rc1::IfcRepresentationItem* Ifc4x3_rc1::IfcStyledItem::Item() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcRepresentationItem>(); }
void Ifc4x3_rc1::IfcStyledItem::setItem(::Ifc4x3_rc1::IfcRepresentationItem* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcStyledItem::Styles() const {  aggregate_of_instance::ptr v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcStyledItem::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcStyledItem::declaration() const { return *IFC4X3_RC1_IfcStyledItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStyledItem::Class() { return *IFC4X3_RC1_IfcStyledItem_type; }
Ifc4x3_rc1::IfcStyledItem::IfcStyledItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStyledItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStyledItem::IfcStyledItem(::Ifc4x3_rc1::IfcRepresentationItem* v1_Item, aggregate_of_instance::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStyledItem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Item));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Styles));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcStyledRepresentation


const IfcParse::entity& Ifc4x3_rc1::IfcStyledRepresentation::declaration() const { return *IFC4X3_RC1_IfcStyledRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcStyledRepresentation::Class() { return *IFC4X3_RC1_IfcStyledRepresentation_type; }
Ifc4x3_rc1::IfcStyledRepresentation::IfcStyledRepresentation(IfcEntityInstanceData* e) : IfcStyleModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcStyledRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_rc1::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v4_Items) : IfcStyleModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcStyledRepresentation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ContextOfItems));data_->setArgument(0,attr);} if (v2_RepresentationIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_RepresentationIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_RepresentationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_RepresentationType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Items)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcSubContractResource
boost::optional< ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value > Ifc4x3_rc1::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSubContractResource::declaration() const { return *IFC4X3_RC1_IfcSubContractResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSubContractResource::Class() { return *IFC4X3_RC1_IfcSubContractResource_type; }
Ifc4x3_rc1::IfcSubContractResource::IfcSubContractResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSubContractResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSubContractResource::IfcSubContractResource(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubContractResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Usage));data_->setArgument(7,attr);} if (v9_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_BaseCosts)->generalize());data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_BaseQuantity));data_->setArgument(9,attr);} if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcSubContractResourceType
::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value Ifc4x3_rc1::IfcSubContractResourceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcSubContractResourceType::setPredefinedType(::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSubContractResourceType::declaration() const { return *IFC4X3_RC1_IfcSubContractResourceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSubContractResourceType::Class() { return *IFC4X3_RC1_IfcSubContractResourceType_type; }
Ifc4x3_rc1::IfcSubContractResourceType::IfcSubContractResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSubContractResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSubContractResourceType::IfcSubContractResourceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc1::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubContractResourceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_BaseCosts) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_BaseCosts)->generalize());data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_BaseQuantity));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v12_PredefinedType,::Ifc4x3_rc1::IfcSubContractResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcSubedge
::Ifc4x3_rc1::IfcEdge* Ifc4x3_rc1::IfcSubedge::ParentEdge() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcEdge>(); }
void Ifc4x3_rc1::IfcSubedge::setParentEdge(::Ifc4x3_rc1::IfcEdge* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSubedge::declaration() const { return *IFC4X3_RC1_IfcSubedge_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSubedge::Class() { return *IFC4X3_RC1_IfcSubedge_type; }
Ifc4x3_rc1::IfcSubedge::IfcSubedge(IfcEntityInstanceData* e) : IfcEdge((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSubedge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSubedge::IfcSubedge(::Ifc4x3_rc1::IfcVertex* v1_EdgeStart, ::Ifc4x3_rc1::IfcVertex* v2_EdgeEnd, ::Ifc4x3_rc1::IfcEdge* v3_ParentEdge) : IfcEdge((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSubedge_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_EdgeStart));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_EdgeEnd));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ParentEdge));data_->setArgument(2,attr);} }

// Function implementations for IfcSurface


const IfcParse::entity& Ifc4x3_rc1::IfcSurface::declaration() const { return *IFC4X3_RC1_IfcSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurface::Class() { return *IFC4X3_RC1_IfcSurface_type; }
Ifc4x3_rc1::IfcSurface::IfcSurface(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurface::IfcSurface() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurface_type);  }

// Function implementations for IfcSurfaceCurve
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcSurfaceCurve::Curve3D() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcSurfaceCurve::setCurve3D(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc1::IfcPcurve >::ptr Ifc4x3_rc1::IfcSurfaceCurve::AssociatedGeometry() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcPcurve >(); }
void Ifc4x3_rc1::IfcSurfaceCurve::setAssociatedGeometry(aggregate_of< ::Ifc4x3_rc1::IfcPcurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Value Ifc4x3_rc1::IfcSurfaceCurve::MasterRepresentation() const {  return ::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcSurfaceCurve::setMasterRepresentation(::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::ToString(v)));data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceCurve::declaration() const { return *IFC4X3_RC1_IfcSurfaceCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceCurve::Class() { return *IFC4X3_RC1_IfcSurfaceCurve_type; }
Ifc4x3_rc1::IfcSurfaceCurve::IfcSurfaceCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4x3_rc1::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_rc1::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Curve3D));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_AssociatedGeometry)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_MasterRepresentation,::Ifc4x3_rc1::IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation))));data_->setArgument(2,attr);} }

// Function implementations for IfcSurfaceCurveSweptAreaSolid
::Ifc4x3_rc1::IfcSurface* Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcSurface>(); }
void Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(::Ifc4x3_rc1::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcSurfaceCurveSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::Class() { return *IFC4X3_RC1_IfcSurfaceCurveSweptAreaSolid_type; }
Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcEntityInstanceData* e) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceCurveSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcCurve* v3_Directrix, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam, ::Ifc4x3_rc1::IfcSurface* v6_ReferenceSurface) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceCurveSweptAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Directrix));data_->setArgument(2,attr);} if (v4_StartParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_StartParam));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EndParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EndParam));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ReferenceSurface));data_->setArgument(5,attr);} }

// Function implementations for IfcSurfaceFeature
boost::optional< ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_rc1::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceFeature::declaration() const { return *IFC4X3_RC1_IfcSurfaceFeature_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceFeature::Class() { return *IFC4X3_RC1_IfcSurfaceFeature_type; }
Ifc4x3_rc1::IfcSurfaceFeature::IfcSurfaceFeature(IfcEntityInstanceData* e) : IfcFeatureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceFeature_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceFeature::IfcSurfaceFeature(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceFeature_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSurfaceFeatureTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSurfaceOfLinearExtrusion
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::ExtrudedDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::setExtrudedDirection(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::declaration() const { return *IFC4X3_RC1_IfcSurfaceOfLinearExtrusion_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::Class() { return *IFC4X3_RC1_IfcSurfaceOfLinearExtrusion_type; }
Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcEntityInstanceData* e) : IfcSweptSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceOfLinearExtrusion_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(::Ifc4x3_rc1::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceOfLinearExtrusion_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_ExtrudedDirection));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);} }

// Function implementations for IfcSurfaceOfRevolution
::Ifc4x3_rc1::IfcAxis1Placement* Ifc4x3_rc1::IfcSurfaceOfRevolution::AxisPosition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcAxis1Placement>(); }
void Ifc4x3_rc1::IfcSurfaceOfRevolution::setAxisPosition(::Ifc4x3_rc1::IfcAxis1Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceOfRevolution::declaration() const { return *IFC4X3_RC1_IfcSurfaceOfRevolution_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceOfRevolution::Class() { return *IFC4X3_RC1_IfcSurfaceOfRevolution_type; }
Ifc4x3_rc1::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcEntityInstanceData* e) : IfcSweptSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceOfRevolution_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_rc1::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc1::IfcAxis1Placement* v3_AxisPosition) : IfcSweptSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceOfRevolution_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_AxisPosition));data_->setArgument(2,attr);} }

// Function implementations for IfcSurfaceReinforcementArea
boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc1::IfcSurfaceReinforcementArea::SurfaceReinforcement1() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc1::IfcSurfaceReinforcementArea::SurfaceReinforcement2() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[2:3]*/ v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X3_RC1_IfcSurfaceReinforcementArea_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceReinforcementArea::Class() { return *IFC4X3_RC1_IfcSurfaceReinforcementArea_type; }
Ifc4x3_rc1::IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(IfcEntityInstanceData* e) : IfcStructuralLoadOrResult((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceReinforcementArea_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceReinforcementArea_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_SurfaceReinforcement1) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_SurfaceReinforcement1));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_SurfaceReinforcement2) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_SurfaceReinforcement2));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_ShearReinforcement) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_ShearReinforcement));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } }

// Function implementations for IfcSurfaceStyle
::Ifc4x3_rc1::IfcSurfaceSide::Value Ifc4x3_rc1::IfcSurfaceStyle::Side() const {  return ::Ifc4x3_rc1::IfcSurfaceSide::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc1::IfcSurfaceStyle::setSide(::Ifc4x3_rc1::IfcSurfaceSide::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSurfaceSide::ToString(v)));data_->setArgument(1,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcSurfaceStyle::Styles() const {  aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSurfaceStyle::setStyles(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyle::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyle::Class() { return *IFC4X3_RC1_IfcSurfaceStyle_type; }
Ifc4x3_rc1::IfcSurfaceStyle::IfcSurfaceStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceStyle::IfcSurfaceStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcSurfaceSide::Value v2_Side, aggregate_of_instance::ptr v3_Styles) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceStyle_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v2_Side,::Ifc4x3_rc1::IfcSurfaceSide::ToString(v2_Side))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Styles));data_->setArgument(2,attr);} }

// Function implementations for IfcSurfaceStyleLighting
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcSurfaceStyleLighting::DiffuseTransmissionColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcSurfaceStyleLighting::setDiffuseTransmissionColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcSurfaceStyleLighting::DiffuseReflectionColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcSurfaceStyleLighting::setDiffuseReflectionColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcSurfaceStyleLighting::TransmissionColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcSurfaceStyleLighting::setTransmissionColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcSurfaceStyleLighting::ReflectanceColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcSurfaceStyleLighting::setReflectanceColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleLighting::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleLighting_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleLighting::Class() { return *IFC4X3_RC1_IfcSurfaceStyleLighting_type; }
Ifc4x3_rc1::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceStyleLighting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_rc1::IfcColourRgb* v1_DiffuseTransmissionColour, ::Ifc4x3_rc1::IfcColourRgb* v2_DiffuseReflectionColour, ::Ifc4x3_rc1::IfcColourRgb* v3_TransmissionColour, ::Ifc4x3_rc1::IfcColourRgb* v4_ReflectanceColour) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceStyleLighting_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_DiffuseTransmissionColour));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_DiffuseReflectionColour));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TransmissionColour));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_ReflectanceColour));data_->setArgument(3,attr);} }

// Function implementations for IfcSurfaceStyleRefraction
boost::optional< double > Ifc4x3_rc1::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleRefraction_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleRefraction::Class() { return *IFC4X3_RC1_IfcSurfaceStyleRefraction_type; }
Ifc4x3_rc1::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceStyleRefraction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceStyleRefraction_type);  if (v1_RefractionIndex) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_RefractionIndex));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DispersionFactor) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_DispersionFactor));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcSurfaceStyleRendering
::Ifc4x3_rc1::IfcColourOrFactor* Ifc4x3_rc1::IfcSurfaceStyleRendering::DiffuseColour() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcColourOrFactor>(); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setDiffuseColour(::Ifc4x3_rc1::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcColourOrFactor* Ifc4x3_rc1::IfcSurfaceStyleRendering::TransmissionColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcColourOrFactor>(); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setTransmissionColour(::Ifc4x3_rc1::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcColourOrFactor* Ifc4x3_rc1::IfcSurfaceStyleRendering::DiffuseTransmissionColour() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcColourOrFactor>(); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setDiffuseTransmissionColour(::Ifc4x3_rc1::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcColourOrFactor* Ifc4x3_rc1::IfcSurfaceStyleRendering::ReflectionColour() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcColourOrFactor>(); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setReflectionColour(::Ifc4x3_rc1::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcColourOrFactor* Ifc4x3_rc1::IfcSurfaceStyleRendering::SpecularColour() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcColourOrFactor>(); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setSpecularColour(::Ifc4x3_rc1::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcSpecularHighlightSelect* Ifc4x3_rc1::IfcSurfaceStyleRendering::SpecularHighlight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcSpecularHighlightSelect>(); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setSpecularHighlight(::Ifc4x3_rc1::IfcSpecularHighlightSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcReflectanceMethodEnum::Value Ifc4x3_rc1::IfcSurfaceStyleRendering::ReflectanceMethod() const {  return ::Ifc4x3_rc1::IfcReflectanceMethodEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSurfaceStyleRendering::setReflectanceMethod(::Ifc4x3_rc1::IfcReflectanceMethodEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcReflectanceMethodEnum::ToString(v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleRendering::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleRendering_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleRendering::Class() { return *IFC4X3_RC1_IfcSurfaceStyleRendering_type; }
Ifc4x3_rc1::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcEntityInstanceData* e) : IfcSurfaceStyleShading((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceStyleRendering_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_rc1::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, ::Ifc4x3_rc1::IfcColourOrFactor* v3_DiffuseColour, ::Ifc4x3_rc1::IfcColourOrFactor* v4_TransmissionColour, ::Ifc4x3_rc1::IfcColourOrFactor* v5_DiffuseTransmissionColour, ::Ifc4x3_rc1::IfcColourOrFactor* v6_ReflectionColour, ::Ifc4x3_rc1::IfcColourOrFactor* v7_SpecularColour, ::Ifc4x3_rc1::IfcSpecularHighlightSelect* v8_SpecularHighlight, ::Ifc4x3_rc1::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod) : IfcSurfaceStyleShading((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceStyleRendering_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SurfaceColour));data_->setArgument(0,attr);} if (v2_Transparency) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Transparency));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_DiffuseColour));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TransmissionColour));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_DiffuseTransmissionColour));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ReflectionColour));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_SpecularColour));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_SpecularHighlight));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_ReflectanceMethod,::Ifc4x3_rc1::IfcReflectanceMethodEnum::ToString(v9_ReflectanceMethod))));data_->setArgument(8,attr);} }

// Function implementations for IfcSurfaceStyleShading
::Ifc4x3_rc1::IfcColourRgb* Ifc4x3_rc1::IfcSurfaceStyleShading::SurfaceColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcColourRgb>(); }
void Ifc4x3_rc1::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_rc1::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleShading::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleShading_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleShading::Class() { return *IFC4X3_RC1_IfcSurfaceStyleShading_type; }
Ifc4x3_rc1::IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceStyleShading_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceStyleShading::IfcSurfaceStyleShading(::Ifc4x3_rc1::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceStyleShading_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SurfaceColour));data_->setArgument(0,attr);} if (v2_Transparency) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Transparency));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcSurfaceStyleWithTextures
aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr Ifc4x3_rc1::IfcSurfaceStyleWithTextures::Textures() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcSurfaceTexture >(); }
void Ifc4x3_rc1::IfcSurfaceStyleWithTextures::setTextures(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleWithTextures::declaration() const { return *IFC4X3_RC1_IfcSurfaceStyleWithTextures_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceStyleWithTextures::Class() { return *IFC4X3_RC1_IfcSurfaceStyleWithTextures_type; }
Ifc4x3_rc1::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceStyleWithTextures_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v1_Textures) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceStyleWithTextures_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Textures)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcSurfaceTexture
bool Ifc4x3_rc1::IfcSurfaceTexture::RepeatS() const {  bool v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
bool Ifc4x3_rc1::IfcSurfaceTexture::RepeatT() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* Ifc4x3_rc1::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcCartesianTransformationOperator2D>(); }
void Ifc4x3_rc1::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcSurfaceTexture::Parameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }

::Ifc4x3_rc1::IfcTextureCoordinate::list::ptr Ifc4x3_rc1::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X3_RC1_IfcTextureCoordinate_type, 0)->as<IfcTextureCoordinate>(); }
::Ifc4x3_rc1::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_rc1::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X3_RC1_IfcSurfaceStyleWithTextures_type, 0)->as<IfcSurfaceStyleWithTextures>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceTexture::declaration() const { return *IFC4X3_RC1_IfcSurfaceTexture_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSurfaceTexture::Class() { return *IFC4X3_RC1_IfcSurfaceTexture_type; }
Ifc4x3_rc1::IfcSurfaceTexture::IfcSurfaceTexture(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSurfaceTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSurfaceTexture::IfcSurfaceTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc1::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSurfaceTexture_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_RepeatS));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_RepeatT));data_->setArgument(1,attr);} if (v3_Mode) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Mode));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TextureTransform));data_->setArgument(3,attr);} if (v5_Parameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Parameter));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcSweptAreaSolid
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcSweptAreaSolid::SweptArea() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcSweptAreaSolid::setSweptArea(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcSweptAreaSolid::Position() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcSweptAreaSolid::setPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSweptAreaSolid::declaration() const { return *IFC4X3_RC1_IfcSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSweptAreaSolid::Class() { return *IFC4X3_RC1_IfcSweptAreaSolid_type; }
Ifc4x3_rc1::IfcSweptAreaSolid::IfcSweptAreaSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSweptAreaSolid::IfcSweptAreaSolid(::Ifc4x3_rc1::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSweptAreaSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptArea));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);} }

// Function implementations for IfcSweptDiskSolid
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcSweptDiskSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcSweptDiskSolid::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSweptDiskSolid::declaration() const { return *IFC4X3_RC1_IfcSweptDiskSolid_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSweptDiskSolid::Class() { return *IFC4X3_RC1_IfcSweptDiskSolid_type; }
Ifc4x3_rc1::IfcSweptDiskSolid::IfcSweptDiskSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSweptDiskSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_rc1::IfcCurve* v1_Directrix, double v2_Radius, boost::optional< double > v3_InnerRadius, boost::optional< double > v4_StartParam, boost::optional< double > v5_EndParam) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSweptDiskSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Directrix));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Radius));data_->setArgument(1,attr);} if (v3_InnerRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_InnerRadius));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_StartParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_StartParam));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EndParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EndParam));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcSweptDiskSolidPolygonal
boost::optional< double > Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X3_RC1_IfcSweptDiskSolidPolygonal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::Class() { return *IFC4X3_RC1_IfcSweptDiskSolidPolygonal_type; }
Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(IfcEntityInstanceData* e) : IfcSweptDiskSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSweptDiskSolidPolygonal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSweptDiskSolidPolygonal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Directrix));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Radius));data_->setArgument(1,attr);} if (v3_InnerRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_InnerRadius));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_StartParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_StartParam));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EndParam) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EndParam));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_FilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_FilletRadius));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcSweptSurface
::Ifc4x3_rc1::IfcProfileDef* Ifc4x3_rc1::IfcSweptSurface::SweptCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcProfileDef>(); }
void Ifc4x3_rc1::IfcSweptSurface::setSweptCurve(::Ifc4x3_rc1::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement3D* Ifc4x3_rc1::IfcSweptSurface::Position() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAxis2Placement3D>(); }
void Ifc4x3_rc1::IfcSweptSurface::setPosition(::Ifc4x3_rc1::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSweptSurface::declaration() const { return *IFC4X3_RC1_IfcSweptSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSweptSurface::Class() { return *IFC4X3_RC1_IfcSweptSurface_type; }
Ifc4x3_rc1::IfcSweptSurface::IfcSweptSurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSweptSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_rc1::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_rc1::IfcAxis2Placement3D* v2_Position) : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSweptSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SweptCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Position));data_->setArgument(1,attr);} }

// Function implementations for IfcSwitchingDevice
boost::optional< ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_rc1::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSwitchingDevice::declaration() const { return *IFC4X3_RC1_IfcSwitchingDevice_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSwitchingDevice::Class() { return *IFC4X3_RC1_IfcSwitchingDevice_type; }
Ifc4x3_rc1::IfcSwitchingDevice::IfcSwitchingDevice(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSwitchingDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSwitchingDevice::IfcSwitchingDevice(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSwitchingDevice_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSwitchingDeviceType
::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value Ifc4x3_rc1::IfcSwitchingDeviceType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSwitchingDeviceType::setPredefinedType(::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSwitchingDeviceType::declaration() const { return *IFC4X3_RC1_IfcSwitchingDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSwitchingDeviceType::Class() { return *IFC4X3_RC1_IfcSwitchingDeviceType_type; }
Ifc4x3_rc1::IfcSwitchingDeviceType::IfcSwitchingDeviceType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSwitchingDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSwitchingDeviceType::IfcSwitchingDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSwitchingDeviceType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcSwitchingDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSystem

::Ifc4x3_rc1::IfcRelServicesBuildings::list::ptr Ifc4x3_rc1::IfcSystem::ServicesBuildings() const { return data_->getInverse(IFC4X3_RC1_IfcRelServicesBuildings_type, 4)->as<IfcRelServicesBuildings>(); }
::Ifc4x3_rc1::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_rc1::IfcSystem::ServicesFacilities() const { return data_->getInverse(IFC4X3_RC1_IfcRelReferencedInSpatialStructure_type, 4)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcSystem::declaration() const { return *IFC4X3_RC1_IfcSystem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSystem::Class() { return *IFC4X3_RC1_IfcSystem_type; }
Ifc4x3_rc1::IfcSystem::IfcSystem(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcSystemFurnitureElement
boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc1::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSystemFurnitureElement::declaration() const { return *IFC4X3_RC1_IfcSystemFurnitureElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSystemFurnitureElement::Class() { return *IFC4X3_RC1_IfcSystemFurnitureElement_type; }
Ifc4x3_rc1::IfcSystemFurnitureElement::IfcSystemFurnitureElement(IfcEntityInstanceData* e) : IfcFurnishingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSystemFurnitureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystemFurnitureElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcSystemFurnitureElementType
boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc1::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcSystemFurnitureElementType::declaration() const { return *IFC4X3_RC1_IfcSystemFurnitureElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcSystemFurnitureElementType::Class() { return *IFC4X3_RC1_IfcSystemFurnitureElementType_type; }
Ifc4x3_rc1::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(IfcEntityInstanceData* e) : IfcFurnishingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcSystemFurnitureElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType) : IfcFurnishingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcSystemFurnitureElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcSystemFurnitureElementTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcTShapeProfileDef
double Ifc4x3_rc1::IfcTShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcTShapeProfileDef::FlangeWidth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcTShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcTShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcTShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTShapeProfileDef::Class() { return *IFC4X3_RC1_IfcTShapeProfileDef_type; }
Ifc4x3_rc1::IfcTShapeProfileDef::IfcTShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_FlangeWidth));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WebThickness));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_FlangeThickness));data_->setArgument(6,attr);} if (v8_FilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_FilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_FlangeEdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_FlangeEdgeRadius));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_WebEdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_WebEdgeRadius));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_WebSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_WebSlope));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_FlangeSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_FlangeSlope));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } }

// Function implementations for IfcTable
boost::optional< std::string > Ifc4x3_rc1::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableRow >::ptr > Ifc4x3_rc1::IfcTable::Rows() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcTableRow >(); }
void Ifc4x3_rc1::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(1,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableColumn >::ptr > Ifc4x3_rc1::IfcTable::Columns() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc1::IfcTableColumn >(); }
void Ifc4x3_rc1::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTable::declaration() const { return *IFC4X3_RC1_IfcTable_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTable::Class() { return *IFC4X3_RC1_IfcTable_type; }
Ifc4x3_rc1::IfcTable::IfcTable(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTable_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableRow >::ptr > v2_Rows, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcTableColumn >::ptr > v3_Columns) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTable_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Rows) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Rows)->generalize());data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Columns) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Columns)->generalize());data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcTableColumn
boost::optional< std::string > Ifc4x3_rc1::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcTableColumn::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcReference* Ifc4x3_rc1::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcReference>(); }
void Ifc4x3_rc1::IfcTableColumn::setReferencePath(::Ifc4x3_rc1::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTableColumn::declaration() const { return *IFC4X3_RC1_IfcTableColumn_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTableColumn::Class() { return *IFC4X3_RC1_IfcTableColumn_type; }
Ifc4x3_rc1::IfcTableColumn::IfcTableColumn(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTableColumn_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, ::Ifc4x3_rc1::IfcUnit* v4_Unit, ::Ifc4x3_rc1::IfcReference* v5_ReferencePath) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTableColumn_type);  if (v1_Identifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Identifier));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Name));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Description));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Unit));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_ReferencePath));data_->setArgument(4,attr);} }

// Function implementations for IfcTableRow
boost::optional< aggregate_of_instance::ptr > Ifc4x3_rc1::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTableRow::setRowCells(boost::optional< aggregate_of_instance::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(0,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTableRow::declaration() const { return *IFC4X3_RC1_IfcTableRow_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTableRow::Class() { return *IFC4X3_RC1_IfcTableRow_type; }
Ifc4x3_rc1::IfcTableRow::IfcTableRow(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTableRow_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTableRow::IfcTableRow(boost::optional< aggregate_of_instance::ptr > v1_RowCells, boost::optional< bool > v2_IsHeading) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTableRow_type);  if (v1_RowCells) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_RowCells));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_IsHeading) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_IsHeading));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcTank
boost::optional< ::Ifc4x3_rc1::IfcTankTypeEnum::Value > Ifc4x3_rc1::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTankTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTankTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTank::declaration() const { return *IFC4X3_RC1_IfcTank_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTank::Class() { return *IFC4X3_RC1_IfcTank_type; }
Ifc4x3_rc1::IfcTank::IfcTank(IfcEntityInstanceData* e) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTank_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTank::IfcTank(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcTankTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTank_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcTankTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcTankType
::Ifc4x3_rc1::IfcTankTypeEnum::Value Ifc4x3_rc1::IfcTankType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTankTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTankType::setPredefinedType(::Ifc4x3_rc1::IfcTankTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTankTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTankType::declaration() const { return *IFC4X3_RC1_IfcTankType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTankType::Class() { return *IFC4X3_RC1_IfcTankType_type; }
Ifc4x3_rc1::IfcTankType::IfcTankType(IfcEntityInstanceData* e) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTankType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTankTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTankType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTankTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTask
boost::optional< std::string > Ifc4x3_rc1::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
bool Ifc4x3_rc1::IfcTask::IsMilestone() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
boost::optional< int > Ifc4x3_rc1::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
::Ifc4x3_rc1::IfcTaskTime* Ifc4x3_rc1::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc1::IfcTaskTime>(); }
void Ifc4x3_rc1::IfcTask::setTaskTime(::Ifc4x3_rc1::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcTaskTypeEnum::Value > Ifc4x3_rc1::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); }
void Ifc4x3_rc1::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(*v)));data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTask::declaration() const { return *IFC4X3_RC1_IfcTask_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTask::Class() { return *IFC4X3_RC1_IfcTask_type; }
Ifc4x3_rc1::IfcTask::IfcTask(IfcEntityInstanceData* e) : IfcProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTask_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcTaskTime* v12_TaskTime, boost::optional< ::Ifc4x3_rc1::IfcTaskTypeEnum::Value > v13_PredefinedType) : IfcProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTask_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_LongDescription));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Status) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Status));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_WorkMethod) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_WorkMethod));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_IsMilestone));data_->setArgument(9,attr);} if (v11_Priority) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_Priority));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_TaskTime));data_->setArgument(11,attr);} if (v13_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v13_PredefinedType,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(*v13_PredefinedType))));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcTaskTime
boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > Ifc4x3_rc1::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc1::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(*v)));data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; }
void Ifc4x3_rc1::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; }
void Ifc4x3_rc1::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(17,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; }
void Ifc4x3_rc1::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(18,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; }
void Ifc4x3_rc1::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(19,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTaskTime::declaration() const { return *IFC4X3_RC1_IfcTaskTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTaskTime::Class() { return *IFC4X3_RC1_IfcTaskTime_type; }
Ifc4x3_rc1::IfcTaskTime::IfcTaskTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTaskTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTaskTime::IfcTaskTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskTime_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_DurationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v4_DurationType,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(*v4_DurationType))));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ScheduleDuration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ScheduleDuration));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_ScheduleStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_ScheduleStart));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ScheduleFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ScheduleFinish));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_EarlyStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_EarlyStart));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_EarlyFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EarlyFinish));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_LateStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_LateStart));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_LateFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_LateFinish));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_FreeFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_FreeFloat));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_TotalFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_TotalFloat));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_IsCritical) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_IsCritical));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_StatusTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_StatusTime));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_ActualDuration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_ActualDuration));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_ActualStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_ActualStart));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } if (v18_ActualFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v18_ActualFinish));data_->setArgument(17,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(17, attr); } if (v19_RemainingTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v19_RemainingTime));data_->setArgument(18,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(18, attr); } if (v20_Completion) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v20_Completion));data_->setArgument(19,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(19, attr); } }

// Function implementations for IfcTaskTimeRecurring
::Ifc4x3_rc1::IfcRecurrencePattern* Ifc4x3_rc1::IfcTaskTimeRecurring::Recurrence() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(20)))->as<::Ifc4x3_rc1::IfcRecurrencePattern>(); }
void Ifc4x3_rc1::IfcTaskTimeRecurring::setRecurrence(::Ifc4x3_rc1::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(20,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTaskTimeRecurring::declaration() const { return *IFC4X3_RC1_IfcTaskTimeRecurring_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTaskTimeRecurring::Class() { return *IFC4X3_RC1_IfcTaskTimeRecurring_type; }
Ifc4x3_rc1::IfcTaskTimeRecurring::IfcTaskTimeRecurring(IfcEntityInstanceData* e) : IfcTaskTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTaskTimeRecurring_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_rc1::IfcTaskDurationEnum::Value > v4_DurationType, boost::optional< std::string > v5_ScheduleDuration, boost::optional< std::string > v6_ScheduleStart, boost::optional< std::string > v7_ScheduleFinish, boost::optional< std::string > v8_EarlyStart, boost::optional< std::string > v9_EarlyFinish, boost::optional< std::string > v10_LateStart, boost::optional< std::string > v11_LateFinish, boost::optional< std::string > v12_FreeFloat, boost::optional< std::string > v13_TotalFloat, boost::optional< bool > v14_IsCritical, boost::optional< std::string > v15_StatusTime, boost::optional< std::string > v16_ActualDuration, boost::optional< std::string > v17_ActualStart, boost::optional< std::string > v18_ActualFinish, boost::optional< std::string > v19_RemainingTime, boost::optional< double > v20_Completion, ::Ifc4x3_rc1::IfcRecurrencePattern* v21_Recurrence) : IfcTaskTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskTimeRecurring_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_DurationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v4_DurationType,::Ifc4x3_rc1::IfcTaskDurationEnum::ToString(*v4_DurationType))));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ScheduleDuration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ScheduleDuration));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_ScheduleStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_ScheduleStart));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ScheduleFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ScheduleFinish));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_EarlyStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_EarlyStart));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_EarlyFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EarlyFinish));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_LateStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_LateStart));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_LateFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_LateFinish));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_FreeFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_FreeFloat));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_TotalFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_TotalFloat));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_IsCritical) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_IsCritical));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_StatusTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_StatusTime));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_ActualDuration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_ActualDuration));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_ActualStart) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_ActualStart));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } if (v18_ActualFinish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v18_ActualFinish));data_->setArgument(17,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(17, attr); } if (v19_RemainingTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v19_RemainingTime));data_->setArgument(18,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(18, attr); } if (v20_Completion) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v20_Completion));data_->setArgument(19,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(19, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v21_Recurrence));data_->setArgument(20,attr);} }

// Function implementations for IfcTaskType
::Ifc4x3_rc1::IfcTaskTypeEnum::Value Ifc4x3_rc1::IfcTaskType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTaskType::setPredefinedType(::Ifc4x3_rc1::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTaskType::declaration() const { return *IFC4X3_RC1_IfcTaskType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTaskType::Class() { return *IFC4X3_RC1_IfcTaskType_type; }
Ifc4x3_rc1::IfcTaskType::IfcTaskType(IfcEntityInstanceData* e) : IfcTypeProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTaskType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_rc1::IfcTaskTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_WorkMethod) : IfcTypeProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTaskType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ProcessType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ProcessType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTaskTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_WorkMethod) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_WorkMethod));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } }

// Function implementations for IfcTelecomAddress
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::TelephoneNumbers() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::FacsimileNumbers() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::ElectronicMailAddresses() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc1::IfcTelecomAddress::MessagingIDs() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTelecomAddress::declaration() const { return *IFC4X3_RC1_IfcTelecomAddress_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTelecomAddress::Class() { return *IFC4X3_RC1_IfcTelecomAddress_type; }
Ifc4x3_rc1::IfcTelecomAddress::IfcTelecomAddress(IfcEntityInstanceData* e) : IfcAddress((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTelecomAddress_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_rc1::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose, boost::optional< std::vector< std::string > /*[1:?]*/ > v4_TelephoneNumbers, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_FacsimileNumbers, boost::optional< std::string > v6_PagerNumber, boost::optional< std::vector< std::string > /*[1:?]*/ > v7_ElectronicMailAddresses, boost::optional< std::string > v8_WWWHomePageURL, boost::optional< std::vector< std::string > /*[1:?]*/ > v9_MessagingIDs) : IfcAddress((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTelecomAddress_type);  if (v1_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v1_Purpose,::Ifc4x3_rc1::IfcAddressTypeEnum::ToString(*v1_Purpose))));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedPurpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedPurpose));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_TelephoneNumbers) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_TelephoneNumbers));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_FacsimileNumbers) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_FacsimileNumbers));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_PagerNumber) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_PagerNumber));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_ElectronicMailAddresses) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_ElectronicMailAddresses));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_WWWHomePageURL) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_WWWHomePageURL));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_MessagingIDs) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_MessagingIDs));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcTendon
boost::optional< ::Ifc4x3_rc1::IfcTendonTypeEnum::Value > Ifc4x3_rc1::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc1::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(16,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTendon::declaration() const { return *IFC4X3_RC1_IfcTendon_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTendon::Class() { return *IFC4X3_RC1_IfcTendon_type; }
Ifc4x3_rc1::IfcTendon::IfcTendon(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTendon_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_rc1::IfcTendonTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_TensionForce, boost::optional< double > v14_PreStress, boost::optional< double > v15_FrictionCoefficient, boost::optional< double > v16_AnchorageSlip, boost::optional< double > v17_MinCurvatureRadius) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendon_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SteelGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SteelGrade));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_NominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_NominalDiameter));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_CrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_CrossSectionArea));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_TensionForce) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_TensionForce));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_PreStress) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_PreStress));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_FrictionCoefficient) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_FrictionCoefficient));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_AnchorageSlip) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_AnchorageSlip));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } if (v17_MinCurvatureRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v17_MinCurvatureRadius));data_->setArgument(16,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(16, attr); } }

// Function implementations for IfcTendonAnchor
boost::optional< ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value > Ifc4x3_rc1::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTendonAnchor::declaration() const { return *IFC4X3_RC1_IfcTendonAnchor_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTendonAnchor::Class() { return *IFC4X3_RC1_IfcTendonAnchor_type; }
Ifc4x3_rc1::IfcTendonAnchor::IfcTendonAnchor(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTendonAnchor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTendonAnchor::IfcTendonAnchor(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonAnchor_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SteelGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SteelGrade));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcTendonAnchorType
::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value Ifc4x3_rc1::IfcTendonAnchorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTendonAnchorType::setPredefinedType(::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTendonAnchorType::declaration() const { return *IFC4X3_RC1_IfcTendonAnchorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTendonAnchorType::Class() { return *IFC4X3_RC1_IfcTendonAnchorType_type; }
Ifc4x3_rc1::IfcTendonAnchorType::IfcTendonAnchorType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTendonAnchorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonAnchorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTendonAnchorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTendonConduit
::Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value Ifc4x3_rc1::IfcTendonConduit::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTendonConduit::setPredefinedType(::Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTendonConduitTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTendonConduit::declaration() const { return *IFC4X3_RC1_IfcTendonConduit_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTendonConduit::Class() { return *IFC4X3_RC1_IfcTendonConduit_type; }
Ifc4x3_rc1::IfcTendonConduit::IfcTendonConduit(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTendonConduit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTendonConduit::IfcTendonConduit(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value v10_PredefinedType) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonConduit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SteelGrade) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SteelGrade));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTendonConduitTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTendonConduitType
::Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value Ifc4x3_rc1::IfcTendonConduitType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTendonConduitType::setPredefinedType(::Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTendonConduitTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTendonConduitType::declaration() const { return *IFC4X3_RC1_IfcTendonConduitType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTendonConduitType::Class() { return *IFC4X3_RC1_IfcTendonConduitType_type; }
Ifc4x3_rc1::IfcTendonConduitType::IfcTendonConduitType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTendonConduitType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTendonConduitTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonConduitType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTendonConduitTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTendonType
::Ifc4x3_rc1::IfcTendonTypeEnum::Value Ifc4x3_rc1::IfcTendonType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTendonType::setPredefinedType(::Ifc4x3_rc1::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTendonType::declaration() const { return *IFC4X3_RC1_IfcTendonType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTendonType::Class() { return *IFC4X3_RC1_IfcTendonType_type; }
Ifc4x3_rc1::IfcTendonType::IfcTendonType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTendonType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTendonType::IfcTendonType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTendonTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_SheathDiameter) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTendonType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTendonTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} if (v11_NominalDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_NominalDiameter));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_CrossSectionArea) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_CrossSectionArea));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_SheathDiameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_SheathDiameter));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcTessellatedFaceSet
::Ifc4x3_rc1::IfcCartesianPointList3D* Ifc4x3_rc1::IfcTessellatedFaceSet::Coordinates() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCartesianPointList3D>(); }
void Ifc4x3_rc1::IfcTessellatedFaceSet::setCoordinates(::Ifc4x3_rc1::IfcCartesianPointList3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }

::Ifc4x3_rc1::IfcIndexedColourMap::list::ptr Ifc4x3_rc1::IfcTessellatedFaceSet::HasColours() const { return data_->getInverse(IFC4X3_RC1_IfcIndexedColourMap_type, 0)->as<IfcIndexedColourMap>(); }
::Ifc4x3_rc1::IfcIndexedTextureMap::list::ptr Ifc4x3_rc1::IfcTessellatedFaceSet::HasTextures() const { return data_->getInverse(IFC4X3_RC1_IfcIndexedTextureMap_type, 1)->as<IfcIndexedTextureMap>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcTessellatedFaceSet::declaration() const { return *IFC4X3_RC1_IfcTessellatedFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTessellatedFaceSet::Class() { return *IFC4X3_RC1_IfcTessellatedFaceSet_type; }
Ifc4x3_rc1::IfcTessellatedFaceSet::IfcTessellatedFaceSet(IfcEntityInstanceData* e) : IfcTessellatedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTessellatedFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTessellatedFaceSet::IfcTessellatedFaceSet(::Ifc4x3_rc1::IfcCartesianPointList3D* v1_Coordinates) : IfcTessellatedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTessellatedFaceSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} }

// Function implementations for IfcTessellatedItem


const IfcParse::entity& Ifc4x3_rc1::IfcTessellatedItem::declaration() const { return *IFC4X3_RC1_IfcTessellatedItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTessellatedItem::Class() { return *IFC4X3_RC1_IfcTessellatedItem_type; }
Ifc4x3_rc1::IfcTessellatedItem::IfcTessellatedItem(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTessellatedItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTessellatedItem::IfcTessellatedItem() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTessellatedItem_type);  }

// Function implementations for IfcTextLiteral
std::string Ifc4x3_rc1::IfcTextLiteral::Literal() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTextLiteral::setLiteral(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcAxis2Placement* Ifc4x3_rc1::IfcTextLiteral::Placement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcAxis2Placement>(); }
void Ifc4x3_rc1::IfcTextLiteral::setPlacement(::Ifc4x3_rc1::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcTextPath::Value Ifc4x3_rc1::IfcTextLiteral::Path() const {  return ::Ifc4x3_rc1::IfcTextPath::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc1::IfcTextLiteral::setPath(::Ifc4x3_rc1::IfcTextPath::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTextPath::ToString(v)));data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextLiteral::declaration() const { return *IFC4X3_RC1_IfcTextLiteral_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextLiteral::Class() { return *IFC4X3_RC1_IfcTextLiteral_type; }
Ifc4x3_rc1::IfcTextLiteral::IfcTextLiteral(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextLiteral_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextLiteral::IfcTextLiteral(std::string v1_Literal, ::Ifc4x3_rc1::IfcAxis2Placement* v2_Placement, ::Ifc4x3_rc1::IfcTextPath::Value v3_Path) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextLiteral_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Literal));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Placement));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_Path,::Ifc4x3_rc1::IfcTextPath::ToString(v3_Path))));data_->setArgument(2,attr);} }

// Function implementations for IfcTextLiteralWithExtent
::Ifc4x3_rc1::IfcPlanarExtent* Ifc4x3_rc1::IfcTextLiteralWithExtent::Extent() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcPlanarExtent>(); }
void Ifc4x3_rc1::IfcTextLiteralWithExtent::setExtent(::Ifc4x3_rc1::IfcPlanarExtent* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
std::string Ifc4x3_rc1::IfcTextLiteralWithExtent::BoxAlignment() const {  std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTextLiteralWithExtent::setBoxAlignment(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextLiteralWithExtent::declaration() const { return *IFC4X3_RC1_IfcTextLiteralWithExtent_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextLiteralWithExtent::Class() { return *IFC4X3_RC1_IfcTextLiteralWithExtent_type; }
Ifc4x3_rc1::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(IfcEntityInstanceData* e) : IfcTextLiteral((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextLiteralWithExtent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(std::string v1_Literal, ::Ifc4x3_rc1::IfcAxis2Placement* v2_Placement, ::Ifc4x3_rc1::IfcTextPath::Value v3_Path, ::Ifc4x3_rc1::IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment) : IfcTextLiteral((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextLiteralWithExtent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Literal));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Placement));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_Path,::Ifc4x3_rc1::IfcTextPath::ToString(v3_Path))));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Extent));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_BoxAlignment));data_->setArgument(4,attr);} }

// Function implementations for IfcTextStyle
::Ifc4x3_rc1::IfcTextStyleForDefinedFont* Ifc4x3_rc1::IfcTextStyle::TextCharacterAppearance() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcTextStyleForDefinedFont>(); }
void Ifc4x3_rc1::IfcTextStyle::setTextCharacterAppearance(::Ifc4x3_rc1::IfcTextStyleForDefinedFont* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcTextStyleTextModel* Ifc4x3_rc1::IfcTextStyle::TextStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcTextStyleTextModel>(); }
void Ifc4x3_rc1::IfcTextStyle::setTextStyle(::Ifc4x3_rc1::IfcTextStyleTextModel* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcTextFontSelect* Ifc4x3_rc1::IfcTextStyle::TextFontStyle() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcTextFontSelect>(); }
void Ifc4x3_rc1::IfcTextStyle::setTextFontStyle(::Ifc4x3_rc1::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextStyle::declaration() const { return *IFC4X3_RC1_IfcTextStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextStyle::Class() { return *IFC4X3_RC1_IfcTextStyle_type; }
Ifc4x3_rc1::IfcTextStyle::IfcTextStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_rc1::IfcTextStyleForDefinedFont* v2_TextCharacterAppearance, ::Ifc4x3_rc1::IfcTextStyleTextModel* v3_TextStyle, ::Ifc4x3_rc1::IfcTextFontSelect* v4_TextFontStyle, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextStyle_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_TextCharacterAppearance));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_TextStyle));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_TextFontStyle));data_->setArgument(3,attr);} if (v5_ModelOrDraughting) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ModelOrDraughting));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcTextStyleFontModel
std::vector< std::string > /*[1:?]*/ Ifc4x3_rc1::IfcTextStyleFontModel::FontFamily() const {  std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTextStyleFontModel::setFontFamily(std::vector< std::string > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleFontModel::FontSize() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc1::IfcSizeSelect>(); }
void Ifc4x3_rc1::IfcTextStyleFontModel::setFontSize(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextStyleFontModel::declaration() const { return *IFC4X3_RC1_IfcTextStyleFontModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextStyleFontModel::Class() { return *IFC4X3_RC1_IfcTextStyleFontModel_type; }
Ifc4x3_rc1::IfcTextStyleFontModel::IfcTextStyleFontModel(IfcEntityInstanceData* e) : IfcPreDefinedTextFont((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextStyleFontModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcSizeSelect* v6_FontSize) : IfcPreDefinedTextFont((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextStyleFontModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_FontFamily));data_->setArgument(1,attr);} if (v3_FontStyle) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_FontStyle));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_FontVariant) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_FontVariant));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_FontWeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_FontWeight));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_FontSize));data_->setArgument(5,attr);} }

// Function implementations for IfcTextStyleForDefinedFont
::Ifc4x3_rc1::IfcColour* Ifc4x3_rc1::IfcTextStyleForDefinedFont::Colour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcColour>(); }
void Ifc4x3_rc1::IfcTextStyleForDefinedFont::setColour(::Ifc4x3_rc1::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc1::IfcColour* Ifc4x3_rc1::IfcTextStyleForDefinedFont::BackgroundColour() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc1::IfcColour>(); }
void Ifc4x3_rc1::IfcTextStyleForDefinedFont::setBackgroundColour(::Ifc4x3_rc1::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextStyleForDefinedFont::declaration() const { return *IFC4X3_RC1_IfcTextStyleForDefinedFont_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextStyleForDefinedFont::Class() { return *IFC4X3_RC1_IfcTextStyleForDefinedFont_type; }
Ifc4x3_rc1::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextStyleForDefinedFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_rc1::IfcColour* v1_Colour, ::Ifc4x3_rc1::IfcColour* v2_BackgroundColour) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextStyleForDefinedFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Colour));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_BackgroundColour));data_->setArgument(1,attr);} }

// Function implementations for IfcTextStyleTextModel
::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcSizeSelect>(); }
void Ifc4x3_rc1::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcSizeSelect>(); }
void Ifc4x3_rc1::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc1::IfcSizeSelect>(); }
void Ifc4x3_rc1::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
::Ifc4x3_rc1::IfcSizeSelect* Ifc4x3_rc1::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc1::IfcSizeSelect>(); }
void Ifc4x3_rc1::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_rc1::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextStyleTextModel::declaration() const { return *IFC4X3_RC1_IfcTextStyleTextModel_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextStyleTextModel::Class() { return *IFC4X3_RC1_IfcTextStyleTextModel_type; }
Ifc4x3_rc1::IfcTextStyleTextModel::IfcTextStyleTextModel(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextStyleTextModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextStyleTextModel::IfcTextStyleTextModel(::Ifc4x3_rc1::IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, ::Ifc4x3_rc1::IfcSizeSelect* v4_LetterSpacing, ::Ifc4x3_rc1::IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, ::Ifc4x3_rc1::IfcSizeSelect* v7_LineHeight) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextStyleTextModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TextIndent));data_->setArgument(0,attr);} if (v2_TextAlign) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_TextAlign));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_TextDecoration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_TextDecoration));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_LetterSpacing));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_WordSpacing));data_->setArgument(4,attr);} if (v6_TextTransform) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_TextTransform));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_LineHeight));data_->setArgument(6,attr);} }

// Function implementations for IfcTextureCoordinate
aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr Ifc4x3_rc1::IfcTextureCoordinate::Maps() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcSurfaceTexture >(); }
void Ifc4x3_rc1::IfcTextureCoordinate::setMaps(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextureCoordinate::declaration() const { return *IFC4X3_RC1_IfcTextureCoordinate_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextureCoordinate::Class() { return *IFC4X3_RC1_IfcTextureCoordinate_type; }
Ifc4x3_rc1::IfcTextureCoordinate::IfcTextureCoordinate(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextureCoordinate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v1_Maps) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextureCoordinate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Maps)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcTextureCoordinateGenerator
std::string Ifc4x3_rc1::IfcTextureCoordinateGenerator::Mode() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTextureCoordinateGenerator::setMode(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::vector< double > /*[1:?]*/ > Ifc4x3_rc1::IfcTextureCoordinateGenerator::Parameter() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X3_RC1_IfcTextureCoordinateGenerator_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextureCoordinateGenerator::Class() { return *IFC4X3_RC1_IfcTextureCoordinateGenerator_type; }
Ifc4x3_rc1::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(IfcEntityInstanceData* e) : IfcTextureCoordinate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextureCoordinateGenerator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v1_Maps, std::string v2_Mode, boost::optional< std::vector< double > /*[1:?]*/ > v3_Parameter) : IfcTextureCoordinate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextureCoordinateGenerator_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Maps)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Mode));data_->setArgument(1,attr);} if (v3_Parameter) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Parameter));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } }

// Function implementations for IfcTextureMap
aggregate_of< ::Ifc4x3_rc1::IfcTextureVertex >::ptr Ifc4x3_rc1::IfcTextureMap::Vertices() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc1::IfcTextureVertex >(); }
void Ifc4x3_rc1::IfcTextureMap::setVertices(aggregate_of< ::Ifc4x3_rc1::IfcTextureVertex >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc1::IfcFace* Ifc4x3_rc1::IfcTextureMap::MappedTo() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc1::IfcFace>(); }
void Ifc4x3_rc1::IfcTextureMap::setMappedTo(::Ifc4x3_rc1::IfcFace* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextureMap::declaration() const { return *IFC4X3_RC1_IfcTextureMap_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextureMap::Class() { return *IFC4X3_RC1_IfcTextureMap_type; }
Ifc4x3_rc1::IfcTextureMap::IfcTextureMap(IfcEntityInstanceData* e) : IfcTextureCoordinate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextureMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextureMap::IfcTextureMap(aggregate_of< ::Ifc4x3_rc1::IfcSurfaceTexture >::ptr v1_Maps, aggregate_of< ::Ifc4x3_rc1::IfcTextureVertex >::ptr v2_Vertices, ::Ifc4x3_rc1::IfcFace* v3_MappedTo) : IfcTextureCoordinate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextureMap_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Maps)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Vertices)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_MappedTo));data_->setArgument(2,attr);} }

// Function implementations for IfcTextureVertex
std::vector< double > /*[2:2]*/ Ifc4x3_rc1::IfcTextureVertex::Coordinates() const {  std::vector< double > /*[2:2]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTextureVertex::setCoordinates(std::vector< double > /*[2:2]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextureVertex::declaration() const { return *IFC4X3_RC1_IfcTextureVertex_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextureVertex::Class() { return *IFC4X3_RC1_IfcTextureVertex_type; }
Ifc4x3_rc1::IfcTextureVertex::IfcTextureVertex(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextureVertex_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Coordinates) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextureVertex_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} }

// Function implementations for IfcTextureVertexList
std::vector< std::vector< double > > Ifc4x3_rc1::IfcTextureVertexList::TexCoordsList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTextureVertexList::setTexCoordsList(std::vector< std::vector< double > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTextureVertexList::declaration() const { return *IFC4X3_RC1_IfcTextureVertexList_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTextureVertexList::Class() { return *IFC4X3_RC1_IfcTextureVertexList_type; }
Ifc4x3_rc1::IfcTextureVertexList::IfcTextureVertexList(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTextureVertexList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double > > v1_TexCoordsList) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTextureVertexList_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TexCoordsList));data_->setArgument(0,attr);} }

// Function implementations for IfcTimePeriod
std::string Ifc4x3_rc1::IfcTimePeriod::StartTime() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTimePeriod::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc1::IfcTimePeriod::EndTime() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTimePeriod::setEndTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTimePeriod::declaration() const { return *IFC4X3_RC1_IfcTimePeriod_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTimePeriod::Class() { return *IFC4X3_RC1_IfcTimePeriod_type; }
Ifc4x3_rc1::IfcTimePeriod::IfcTimePeriod(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTimePeriod_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_EndTime) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimePeriod_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_StartTime));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_EndTime));data_->setArgument(1,attr);} }

// Function implementations for IfcTimeSeries
std::string Ifc4x3_rc1::IfcTimeSeries::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
std::string Ifc4x3_rc1::IfcTimeSeries::StartTime() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::string Ifc4x3_rc1::IfcTimeSeries::EndTime() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTimeSeries::setEndTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Value Ifc4x3_rc1::IfcTimeSeries::TimeSeriesDataType() const {  return ::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::ToString(v)));data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcDataOriginEnum::Value Ifc4x3_rc1::IfcTimeSeries::DataOrigin() const {  return ::Ifc4x3_rc1::IfcDataOriginEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcTimeSeries::setDataOrigin(::Ifc4x3_rc1::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcUnit* Ifc4x3_rc1::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc1::IfcUnit>(); }
void Ifc4x3_rc1::IfcTimeSeries::setUnit(::Ifc4x3_rc1::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }

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

const IfcParse::entity& Ifc4x3_rc1::IfcTimeSeries::declaration() const { return *IFC4X3_RC1_IfcTimeSeries_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTimeSeries::Class() { return *IFC4X3_RC1_IfcTimeSeries_type; }
Ifc4x3_rc1::IfcTimeSeries::IfcTimeSeries(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTimeSeries_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTimeSeries::IfcTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_rc1::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_rc1::IfcUnit* v8_Unit) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeSeries_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} if (v2_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Description));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_StartTime));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_EndTime));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_TimeSeriesDataType,::Ifc4x3_rc1::IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(v6_DataOrigin))));data_->setArgument(5,attr);} if (v7_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_UserDefinedDataOrigin));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v8_Unit));data_->setArgument(7,attr);} }

// Function implementations for IfcTimeSeriesValue
aggregate_of_instance::ptr Ifc4x3_rc1::IfcTimeSeriesValue::ListValues() const {  aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcTimeSeriesValue::setListValues(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTimeSeriesValue::declaration() const { return *IFC4X3_RC1_IfcTimeSeriesValue_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTimeSeriesValue::Class() { return *IFC4X3_RC1_IfcTimeSeriesValue_type; }
Ifc4x3_rc1::IfcTimeSeriesValue::IfcTimeSeriesValue(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTimeSeriesValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTimeSeriesValue::IfcTimeSeriesValue(aggregate_of_instance::ptr v1_ListValues) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTimeSeriesValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ListValues));data_->setArgument(0,attr);} }

// Function implementations for IfcTopologicalRepresentationItem


const IfcParse::entity& Ifc4x3_rc1::IfcTopologicalRepresentationItem::declaration() const { return *IFC4X3_RC1_IfcTopologicalRepresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTopologicalRepresentationItem::Class() { return *IFC4X3_RC1_IfcTopologicalRepresentationItem_type; }
Ifc4x3_rc1::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTopologicalRepresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem() : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTopologicalRepresentationItem_type);  }

// Function implementations for IfcTopologyRepresentation


const IfcParse::entity& Ifc4x3_rc1::IfcTopologyRepresentation::declaration() const { return *IFC4X3_RC1_IfcTopologyRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTopologyRepresentation::Class() { return *IFC4X3_RC1_IfcTopologyRepresentation_type; }
Ifc4x3_rc1::IfcTopologyRepresentation::IfcTopologyRepresentation(IfcEntityInstanceData* e) : IfcShapeModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTopologyRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTopologyRepresentation::IfcTopologyRepresentation(::Ifc4x3_rc1::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc1::IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTopologyRepresentation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ContextOfItems));data_->setArgument(0,attr);} if (v2_RepresentationIdentifier) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_RepresentationIdentifier));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_RepresentationType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_RepresentationType));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Items)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcToroidalSurface
double Ifc4x3_rc1::IfcToroidalSurface::MajorRadius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcToroidalSurface::setMajorRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc1::IfcToroidalSurface::MinorRadius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcToroidalSurface::setMinorRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcToroidalSurface::declaration() const { return *IFC4X3_RC1_IfcToroidalSurface_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcToroidalSurface::Class() { return *IFC4X3_RC1_IfcToroidalSurface_type; }
Ifc4x3_rc1::IfcToroidalSurface::IfcToroidalSurface(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcToroidalSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_rc1::IfcAxis2Placement3D* v1_Position, double v2_MajorRadius, double v3_MinorRadius) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcToroidalSurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_MajorRadius));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_MinorRadius));data_->setArgument(2,attr);} }

// Function implementations for IfcTrackElement
boost::optional< ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value > Ifc4x3_rc1::IfcTrackElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTrackElement::declaration() const { return *IFC4X3_RC1_IfcTrackElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTrackElement::Class() { return *IFC4X3_RC1_IfcTrackElement_type; }
Ifc4x3_rc1::IfcTrackElement::IfcTrackElement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTrackElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTrackElement::IfcTrackElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrackElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcTrackElementType
::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value Ifc4x3_rc1::IfcTrackElementType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTrackElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTrackElementType::setPredefinedType(::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTrackElementType::declaration() const { return *IFC4X3_RC1_IfcTrackElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTrackElementType::Class() { return *IFC4X3_RC1_IfcTrackElementType_type; }
Ifc4x3_rc1::IfcTrackElementType::IfcTrackElementType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTrackElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTrackElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrackElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTrackElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTransformer
boost::optional< ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value > Ifc4x3_rc1::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTransformerTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTransformer::declaration() const { return *IFC4X3_RC1_IfcTransformer_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTransformer::Class() { return *IFC4X3_RC1_IfcTransformer_type; }
Ifc4x3_rc1::IfcTransformer::IfcTransformer(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTransformer_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTransformer::IfcTransformer(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransformer_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcTransformerTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcTransformerType
::Ifc4x3_rc1::IfcTransformerTypeEnum::Value Ifc4x3_rc1::IfcTransformerType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTransformerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTransformerType::setPredefinedType(::Ifc4x3_rc1::IfcTransformerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTransformerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTransformerType::declaration() const { return *IFC4X3_RC1_IfcTransformerType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTransformerType::Class() { return *IFC4X3_RC1_IfcTransformerType_type; }
Ifc4x3_rc1::IfcTransformerType::IfcTransformerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTransformerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTransformerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransformerType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTransformerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTransitionCurveSegment2D
boost::optional< double > Ifc4x3_rc1::IfcTransitionCurveSegment2D::StartRadius() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcTransitionCurveSegment2D::EndRadius() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
bool Ifc4x3_rc1::IfcTransitionCurveSegment2D::IsStartRadiusCCW() const {  bool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
bool Ifc4x3_rc1::IfcTransitionCurveSegment2D::IsEndRadiusCCW() const {  bool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setIsEndRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc1::IfcTransitionCurveType::Value Ifc4x3_rc1::IfcTransitionCurveSegment2D::TransitionCurveType() const {  return ::Ifc4x3_rc1::IfcTransitionCurveType::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc1::IfcTransitionCurveSegment2D::setTransitionCurveType(::Ifc4x3_rc1::IfcTransitionCurveType::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTransitionCurveType::ToString(v)));data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTransitionCurveSegment2D::declaration() const { return *IFC4X3_RC1_IfcTransitionCurveSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTransitionCurveSegment2D::Class() { return *IFC4X3_RC1_IfcTransitionCurveSegment2D_type; }
Ifc4x3_rc1::IfcTransitionCurveSegment2D::IfcTransitionCurveSegment2D(IfcEntityInstanceData* e) : IfcCurveSegment2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTransitionCurveSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTransitionCurveSegment2D::IfcTransitionCurveSegment2D(::Ifc4x3_rc1::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength, boost::optional< double > v4_StartRadius, boost::optional< double > v5_EndRadius, bool v6_IsStartRadiusCCW, bool v7_IsEndRadiusCCW, ::Ifc4x3_rc1::IfcTransitionCurveType::Value v8_TransitionCurveType) : IfcCurveSegment2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransitionCurveSegment2D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_StartPoint));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartDirection));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_SegmentLength));data_->setArgument(2,attr);} if (v4_StartRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_StartRadius));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_EndRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_EndRadius));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_IsStartRadiusCCW));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_IsEndRadiusCCW));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_TransitionCurveType,::Ifc4x3_rc1::IfcTransitionCurveType::ToString(v8_TransitionCurveType))));data_->setArgument(7,attr);} }

// Function implementations for IfcTransportElement
::Ifc4x3_rc1::IfcTransportElementTypeSelect* Ifc4x3_rc1::IfcTransportElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcTransportElementTypeSelect>(); }
void Ifc4x3_rc1::IfcTransportElement::setPredefinedType(::Ifc4x3_rc1::IfcTransportElementTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTransportElement::declaration() const { return *IFC4X3_RC1_IfcTransportElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTransportElement::Class() { return *IFC4X3_RC1_IfcTransportElement_type; }
Ifc4x3_rc1::IfcTransportElement::IfcTransportElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTransportElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTransportElement::IfcTransportElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc1::IfcTransportElementTypeSelect* v9_PredefinedType) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_PredefinedType));data_->setArgument(8,attr);} }

// Function implementations for IfcTransportElementType
::Ifc4x3_rc1::IfcTransportElementTypeSelect* Ifc4x3_rc1::IfcTransportElementType::PredefinedType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc1::IfcTransportElementTypeSelect>(); }
void Ifc4x3_rc1::IfcTransportElementType::setPredefinedType(::Ifc4x3_rc1::IfcTransportElementTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTransportElementType::declaration() const { return *IFC4X3_RC1_IfcTransportElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTransportElementType::Class() { return *IFC4X3_RC1_IfcTransportElementType_type; }
Ifc4x3_rc1::IfcTransportElementType::IfcTransportElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTransportElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTransportElementType::IfcTransportElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTransportElementTypeSelect* v10_PredefinedType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTransportElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_PredefinedType));data_->setArgument(9,attr);} }

// Function implementations for IfcTrapeziumProfileDef
double Ifc4x3_rc1::IfcTrapeziumProfileDef::BottomXDim() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTrapeziumProfileDef::setBottomXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcTrapeziumProfileDef::TopXDim() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTrapeziumProfileDef::setTopXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcTrapeziumProfileDef::YDim() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTrapeziumProfileDef::setYDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcTrapeziumProfileDef::TopXOffset() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTrapeziumProfileDef::setTopXOffset(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTrapeziumProfileDef::declaration() const { return *IFC4X3_RC1_IfcTrapeziumProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTrapeziumProfileDef::Class() { return *IFC4X3_RC1_IfcTrapeziumProfileDef_type; }
Ifc4x3_rc1::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTrapeziumProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrapeziumProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_BottomXDim));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_TopXDim));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_YDim));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_TopXOffset));data_->setArgument(6,attr);} }

// Function implementations for IfcTriangulatedFaceSet
boost::optional< std::vector< std::vector< double > > > Ifc4x3_rc1::IfcTriangulatedFaceSet::Normals() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::vector< std::vector< double > > v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(1,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(2,attr);} }
std::vector< std::vector< int > > Ifc4x3_rc1::IfcTriangulatedFaceSet::CoordIndex() const {  std::vector< std::vector< int > > v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTriangulatedFaceSet::setCoordIndex(std::vector< std::vector< int > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc1::IfcTriangulatedFaceSet::PnIndex() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::vector< int > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTriangulatedFaceSet::declaration() const { return *IFC4X3_RC1_IfcTriangulatedFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTriangulatedFaceSet::Class() { return *IFC4X3_RC1_IfcTriangulatedFaceSet_type; }
Ifc4x3_rc1::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(IfcEntityInstanceData* e) : IfcTessellatedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTriangulatedFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTriangulatedFaceSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} if (v2_Normals) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Normals));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Closed) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Closed));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_CoordIndex));data_->setArgument(3,attr);} if (v5_PnIndex) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_PnIndex));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } }

// Function implementations for IfcTriangulatedIrregularNetwork
std::vector< int > /*[1:?]*/ Ifc4x3_rc1::IfcTriangulatedIrregularNetwork::Flags() const {  std::vector< int > /*[1:?]*/ v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcTriangulatedIrregularNetwork::setFlags(std::vector< int > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTriangulatedIrregularNetwork::declaration() const { return *IFC4X3_RC1_IfcTriangulatedIrregularNetwork_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTriangulatedIrregularNetwork::Class() { return *IFC4X3_RC1_IfcTriangulatedIrregularNetwork_type; }
Ifc4x3_rc1::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(IfcEntityInstanceData* e) : IfcTriangulatedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTriangulatedIrregularNetwork_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(::Ifc4x3_rc1::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, std::vector< int > /*[1:?]*/ v6_Flags) : IfcTriangulatedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTriangulatedIrregularNetwork_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} if (v2_Normals) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_Normals));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_Closed) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Closed));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_CoordIndex));data_->setArgument(3,attr);} if (v5_PnIndex) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_PnIndex));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_Flags));data_->setArgument(5,attr);} }

// Function implementations for IfcTrimmedCurve
::Ifc4x3_rc1::IfcCurve* Ifc4x3_rc1::IfcTrimmedCurve::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcCurve>(); }
void Ifc4x3_rc1::IfcTrimmedCurve::setBasisCurve(::Ifc4x3_rc1::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcTrimmedCurve::Trim1() const {  aggregate_of_instance::ptr v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcTrimmedCurve::setTrim1(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
aggregate_of_instance::ptr Ifc4x3_rc1::IfcTrimmedCurve::Trim2() const {  aggregate_of_instance::ptr v = *data_->getArgument(2); return v; }
void Ifc4x3_rc1::IfcTrimmedCurve::setTrim2(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
bool Ifc4x3_rc1::IfcTrimmedCurve::SenseAgreement() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcTrimmedCurve::setSenseAgreement(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc1::IfcTrimmingPreference::Value Ifc4x3_rc1::IfcTrimmedCurve::MasterRepresentation() const {  return ::Ifc4x3_rc1::IfcTrimmingPreference::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcTrimmedCurve::setMasterRepresentation(::Ifc4x3_rc1::IfcTrimmingPreference::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTrimmingPreference::ToString(v)));data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTrimmedCurve::declaration() const { return *IFC4X3_RC1_IfcTrimmedCurve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTrimmedCurve::Class() { return *IFC4X3_RC1_IfcTrimmedCurve_type; }
Ifc4x3_rc1::IfcTrimmedCurve::IfcTrimmedCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTrimmedCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_rc1::IfcCurve* v1_BasisCurve, aggregate_of_instance::ptr v2_Trim1, aggregate_of_instance::ptr v3_Trim2, bool v4_SenseAgreement, ::Ifc4x3_rc1::IfcTrimmingPreference::Value v5_MasterRepresentation) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTrimmedCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Trim1));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Trim2));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_SenseAgreement));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_MasterRepresentation,::Ifc4x3_rc1::IfcTrimmingPreference::ToString(v5_MasterRepresentation))));data_->setArgument(4,attr);} }

// Function implementations for IfcTubeBundle
boost::optional< ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value > Ifc4x3_rc1::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcTubeBundleTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTubeBundle::declaration() const { return *IFC4X3_RC1_IfcTubeBundle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTubeBundle::Class() { return *IFC4X3_RC1_IfcTubeBundle_type; }
Ifc4x3_rc1::IfcTubeBundle::IfcTubeBundle(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTubeBundle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTubeBundle::IfcTubeBundle(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTubeBundle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcTubeBundleTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcTubeBundleType
::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value Ifc4x3_rc1::IfcTubeBundleType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcTubeBundleType::setPredefinedType(::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcTubeBundleTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcTubeBundleType::declaration() const { return *IFC4X3_RC1_IfcTubeBundleType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTubeBundleType::Class() { return *IFC4X3_RC1_IfcTubeBundleType_type; }
Ifc4x3_rc1::IfcTubeBundleType::IfcTubeBundleType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTubeBundleType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcTubeBundleTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTubeBundleType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcTubeBundleTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTypeObject
boost::optional< std::string > Ifc4x3_rc1::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > Ifc4x3_rc1::IfcTypeObject::HasPropertySets() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc1::IfcPropertySetDefinition >(); }
void Ifc4x3_rc1::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(5,attr);} }

::Ifc4x3_rc1::IfcRelDefinesByType::list::ptr Ifc4x3_rc1::IfcTypeObject::Types() const { return data_->getInverse(IFC4X3_RC1_IfcRelDefinesByType_type, 5)->as<IfcRelDefinesByType>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcTypeObject::declaration() const { return *IFC4X3_RC1_IfcTypeObject_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTypeObject::Class() { return *IFC4X3_RC1_IfcTypeObject_type; }
Ifc4x3_rc1::IfcTypeObject::IfcTypeObject(IfcEntityInstanceData* e) : IfcObjectDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTypeObject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets) : IfcObjectDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTypeObject_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcTypeProcess
boost::optional< std::string > Ifc4x3_rc1::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc1::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToProcess_type, 6)->as<IfcRelAssignsToProcess>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcTypeProcess::declaration() const { return *IFC4X3_RC1_IfcTypeProcess_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTypeProcess::Class() { return *IFC4X3_RC1_IfcTypeProcess_type; }
Ifc4x3_rc1::IfcTypeProcess::IfcTypeProcess(IfcEntityInstanceData* e) : IfcTypeObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTypeProcess_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType) : IfcTypeObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTypeProcess_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ProcessType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ProcessType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcTypeProduct
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > Ifc4x3_rc1::IfcTypeProduct::RepresentationMaps() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcRepresentationMap >(); }
void Ifc4x3_rc1::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }

::Ifc4x3_rc1::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc1::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToProduct_type, 6)->as<IfcRelAssignsToProduct>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcTypeProduct::declaration() const { return *IFC4X3_RC1_IfcTypeProduct_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTypeProduct::Class() { return *IFC4X3_RC1_IfcTypeProduct_type; }
Ifc4x3_rc1::IfcTypeProduct::IfcTypeProduct(IfcEntityInstanceData* e) : IfcTypeObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTypeProduct_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag) : IfcTypeObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTypeProduct_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcTypeResource
boost::optional< std::string > Ifc4x3_rc1::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }

::Ifc4x3_rc1::IfcRelAssignsToResource::list::ptr Ifc4x3_rc1::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC1_IfcRelAssignsToResource_type, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& Ifc4x3_rc1::IfcTypeResource::declaration() const { return *IFC4X3_RC1_IfcTypeResource_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcTypeResource::Class() { return *IFC4X3_RC1_IfcTypeResource_type; }
Ifc4x3_rc1::IfcTypeResource::IfcTypeResource(IfcEntityInstanceData* e) : IfcTypeObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcTypeResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcTypeResource::IfcTypeResource(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ResourceType) : IfcTypeObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcTypeResource_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_Identification));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_LongDescription) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_LongDescription));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ResourceType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ResourceType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcUShapeProfileDef
double Ifc4x3_rc1::IfcUShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcUShapeProfileDef::FlangeWidth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcUShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcUShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcUShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcUShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcUShapeProfileDef::Class() { return *IFC4X3_RC1_IfcUShapeProfileDef_type; }
Ifc4x3_rc1::IfcUShapeProfileDef::IfcUShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcUShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcUShapeProfileDef::IfcUShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_FlangeWidth));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WebThickness));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_FlangeThickness));data_->setArgument(6,attr);} if (v8_FilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_FilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_EdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EdgeRadius));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_FlangeSlope) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_FlangeSlope));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcUnitAssignment
aggregate_of_instance::ptr Ifc4x3_rc1::IfcUnitAssignment::Units() const {  aggregate_of_instance::ptr v = *data_->getArgument(0); return v; }
void Ifc4x3_rc1::IfcUnitAssignment::setUnits(aggregate_of_instance::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcUnitAssignment::declaration() const { return *IFC4X3_RC1_IfcUnitAssignment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcUnitAssignment::Class() { return *IFC4X3_RC1_IfcUnitAssignment_type; }
Ifc4x3_rc1::IfcUnitAssignment::IfcUnitAssignment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcUnitAssignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcUnitAssignment::IfcUnitAssignment(aggregate_of_instance::ptr v1_Units) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitAssignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Units));data_->setArgument(0,attr);} }

// Function implementations for IfcUnitaryControlElement
boost::optional< ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_rc1::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryControlElement::declaration() const { return *IFC4X3_RC1_IfcUnitaryControlElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryControlElement::Class() { return *IFC4X3_RC1_IfcUnitaryControlElement_type; }
Ifc4x3_rc1::IfcUnitaryControlElement::IfcUnitaryControlElement(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcUnitaryControlElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcUnitaryControlElement::IfcUnitaryControlElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryControlElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcUnitaryControlElementType
::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value Ifc4x3_rc1::IfcUnitaryControlElementType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcUnitaryControlElementType::setPredefinedType(::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryControlElementType::declaration() const { return *IFC4X3_RC1_IfcUnitaryControlElementType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryControlElementType::Class() { return *IFC4X3_RC1_IfcUnitaryControlElementType_type; }
Ifc4x3_rc1::IfcUnitaryControlElementType::IfcUnitaryControlElementType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcUnitaryControlElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryControlElementType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcUnitaryControlElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcUnitaryEquipment
boost::optional< ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_rc1::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryEquipment::declaration() const { return *IFC4X3_RC1_IfcUnitaryEquipment_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryEquipment::Class() { return *IFC4X3_RC1_IfcUnitaryEquipment_type; }
Ifc4x3_rc1::IfcUnitaryEquipment::IfcUnitaryEquipment(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcUnitaryEquipment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcUnitaryEquipment::IfcUnitaryEquipment(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryEquipment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcUnitaryEquipmentType
::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value Ifc4x3_rc1::IfcUnitaryEquipmentType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcUnitaryEquipmentType::setPredefinedType(::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryEquipmentType::declaration() const { return *IFC4X3_RC1_IfcUnitaryEquipmentType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcUnitaryEquipmentType::Class() { return *IFC4X3_RC1_IfcUnitaryEquipmentType_type; }
Ifc4x3_rc1::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcUnitaryEquipmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcUnitaryEquipmentType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcUnitaryEquipmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcValve
boost::optional< ::Ifc4x3_rc1::IfcValveTypeEnum::Value > Ifc4x3_rc1::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcValveTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcValveTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcValve::declaration() const { return *IFC4X3_RC1_IfcValve_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcValve::Class() { return *IFC4X3_RC1_IfcValve_type; }
Ifc4x3_rc1::IfcValve::IfcValve(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcValve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcValve::IfcValve(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcValveTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcValve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcValveTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcValveType
::Ifc4x3_rc1::IfcValveTypeEnum::Value Ifc4x3_rc1::IfcValveType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcValveTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcValveType::setPredefinedType(::Ifc4x3_rc1::IfcValveTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcValveTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcValveType::declaration() const { return *IFC4X3_RC1_IfcValveType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcValveType::Class() { return *IFC4X3_RC1_IfcValveType_type; }
Ifc4x3_rc1::IfcValveType::IfcValveType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcValveType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcValveType::IfcValveType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcValveTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcValveType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcValveTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcVector
::Ifc4x3_rc1::IfcDirection* Ifc4x3_rc1::IfcVector::Orientation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcDirection>(); }
void Ifc4x3_rc1::IfcVector::setOrientation(::Ifc4x3_rc1::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc1::IfcVector::Magnitude() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcVector::setMagnitude(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVector::declaration() const { return *IFC4X3_RC1_IfcVector_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVector::Class() { return *IFC4X3_RC1_IfcVector_type; }
Ifc4x3_rc1::IfcVector::IfcVector(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVector_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVector::IfcVector(::Ifc4x3_rc1::IfcDirection* v1_Orientation, double v2_Magnitude) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVector_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Orientation));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Magnitude));data_->setArgument(1,attr);} }

// Function implementations for IfcVertex


const IfcParse::entity& Ifc4x3_rc1::IfcVertex::declaration() const { return *IFC4X3_RC1_IfcVertex_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVertex::Class() { return *IFC4X3_RC1_IfcVertex_type; }
Ifc4x3_rc1::IfcVertex::IfcVertex(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVertex_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVertex::IfcVertex() : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVertex_type);  }

// Function implementations for IfcVertexLoop
::Ifc4x3_rc1::IfcVertex* Ifc4x3_rc1::IfcVertexLoop::LoopVertex() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcVertex>(); }
void Ifc4x3_rc1::IfcVertexLoop::setLoopVertex(::Ifc4x3_rc1::IfcVertex* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVertexLoop::declaration() const { return *IFC4X3_RC1_IfcVertexLoop_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVertexLoop::Class() { return *IFC4X3_RC1_IfcVertexLoop_type; }
Ifc4x3_rc1::IfcVertexLoop::IfcVertexLoop(IfcEntityInstanceData* e) : IfcLoop((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVertexLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVertexLoop::IfcVertexLoop(::Ifc4x3_rc1::IfcVertex* v1_LoopVertex) : IfcLoop((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVertexLoop_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_LoopVertex));data_->setArgument(0,attr);} }

// Function implementations for IfcVertexPoint
::Ifc4x3_rc1::IfcPoint* Ifc4x3_rc1::IfcVertexPoint::VertexGeometry() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc1::IfcPoint>(); }
void Ifc4x3_rc1::IfcVertexPoint::setVertexGeometry(::Ifc4x3_rc1::IfcPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVertexPoint::declaration() const { return *IFC4X3_RC1_IfcVertexPoint_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVertexPoint::Class() { return *IFC4X3_RC1_IfcVertexPoint_type; }
Ifc4x3_rc1::IfcVertexPoint::IfcVertexPoint(IfcEntityInstanceData* e) : IfcVertex((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVertexPoint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_rc1::IfcPoint* v1_VertexGeometry) : IfcVertex((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVertexPoint_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_VertexGeometry));data_->setArgument(0,attr);} }

// Function implementations for IfcVibrationDamper
boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc1::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVibrationDamper::declaration() const { return *IFC4X3_RC1_IfcVibrationDamper_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVibrationDamper::Class() { return *IFC4X3_RC1_IfcVibrationDamper_type; }
Ifc4x3_rc1::IfcVibrationDamper::IfcVibrationDamper(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVibrationDamper_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationDamper_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcVibrationDamperType
boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc1::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVibrationDamperType::declaration() const { return *IFC4X3_RC1_IfcVibrationDamperType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVibrationDamperType::Class() { return *IFC4X3_RC1_IfcVibrationDamperType_type; }
Ifc4x3_rc1::IfcVibrationDamperType::IfcVibrationDamperType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVibrationDamperType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::Value > v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationDamperType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v10_PredefinedType,::Ifc4x3_rc1::IfcVibrationDamperTypeEnum::ToString(*v10_PredefinedType))));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } }

// Function implementations for IfcVibrationIsolator
boost::optional< ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_rc1::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVibrationIsolator::declaration() const { return *IFC4X3_RC1_IfcVibrationIsolator_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVibrationIsolator::Class() { return *IFC4X3_RC1_IfcVibrationIsolator_type; }
Ifc4x3_rc1::IfcVibrationIsolator::IfcVibrationIsolator(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVibrationIsolator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVibrationIsolator::IfcVibrationIsolator(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationIsolator_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcVibrationIsolatorType
::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value Ifc4x3_rc1::IfcVibrationIsolatorType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcVibrationIsolatorType::setPredefinedType(::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVibrationIsolatorType::declaration() const { return *IFC4X3_RC1_IfcVibrationIsolatorType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVibrationIsolatorType::Class() { return *IFC4X3_RC1_IfcVibrationIsolatorType_type; }
Ifc4x3_rc1::IfcVibrationIsolatorType::IfcVibrationIsolatorType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVibrationIsolatorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVibrationIsolatorType::IfcVibrationIsolatorType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVibrationIsolatorType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcVibrationIsolatorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcVirtualElement


const IfcParse::entity& Ifc4x3_rc1::IfcVirtualElement::declaration() const { return *IFC4X3_RC1_IfcVirtualElement_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVirtualElement::Class() { return *IFC4X3_RC1_IfcVirtualElement_type; }
Ifc4x3_rc1::IfcVirtualElement::IfcVirtualElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVirtualElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVirtualElement::IfcVirtualElement(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVirtualElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcVirtualGridIntersection
aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr Ifc4x3_rc1::IfcVirtualGridIntersection::IntersectingAxes() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc1::IfcGridAxis >(); }
void Ifc4x3_rc1::IfcVirtualGridIntersection::setIntersectingAxes(aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
std::vector< double > /*[2:3]*/ Ifc4x3_rc1::IfcVirtualGridIntersection::OffsetDistances() const {  std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc1::IfcVirtualGridIntersection::setOffsetDistances(std::vector< double > /*[2:3]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVirtualGridIntersection::declaration() const { return *IFC4X3_RC1_IfcVirtualGridIntersection_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVirtualGridIntersection::Class() { return *IFC4X3_RC1_IfcVirtualGridIntersection_type; }
Ifc4x3_rc1::IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVirtualGridIntersection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVirtualGridIntersection::IfcVirtualGridIntersection(aggregate_of< ::Ifc4x3_rc1::IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVirtualGridIntersection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_IntersectingAxes)->generalize());data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OffsetDistances));data_->setArgument(1,attr);} }

// Function implementations for IfcVoidStratum


const IfcParse::entity& Ifc4x3_rc1::IfcVoidStratum::declaration() const { return *IFC4X3_RC1_IfcVoidStratum_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVoidStratum::Class() { return *IFC4X3_RC1_IfcVoidStratum_type; }
Ifc4x3_rc1::IfcVoidStratum::IfcVoidStratum(IfcEntityInstanceData* e) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVoidStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVoidStratum::IfcVoidStratum(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVoidStratum_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcVoidingFeature
boost::optional< ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_rc1::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcVoidingFeature::declaration() const { return *IFC4X3_RC1_IfcVoidingFeature_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcVoidingFeature::Class() { return *IFC4X3_RC1_IfcVoidingFeature_type; }
Ifc4x3_rc1::IfcVoidingFeature::IfcVoidingFeature(IfcEntityInstanceData* e) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcVoidingFeature_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcVoidingFeature_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcVoidingFeatureTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcWall
boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > Ifc4x3_rc1::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWallTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWall::declaration() const { return *IFC4X3_RC1_IfcWall_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWall::Class() { return *IFC4X3_RC1_IfcWall_type; }
Ifc4x3_rc1::IfcWall::IfcWall(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWall_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWall::IfcWall(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWall_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcWallElementedCase


const IfcParse::entity& Ifc4x3_rc1::IfcWallElementedCase::declaration() const { return *IFC4X3_RC1_IfcWallElementedCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWallElementedCase::Class() { return *IFC4X3_RC1_IfcWallElementedCase_type; }
Ifc4x3_rc1::IfcWallElementedCase::IfcWallElementedCase(IfcEntityInstanceData* e) : IfcWall((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWallElementedCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWallElementedCase::IfcWallElementedCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcWall((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallElementedCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcWallStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcWallStandardCase::declaration() const { return *IFC4X3_RC1_IfcWallStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWallStandardCase::Class() { return *IFC4X3_RC1_IfcWallStandardCase_type; }
Ifc4x3_rc1::IfcWallStandardCase::IfcWallStandardCase(IfcEntityInstanceData* e) : IfcWall((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWallStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWallStandardCase::IfcWallStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcWall((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcWallType
::Ifc4x3_rc1::IfcWallTypeEnum::Value Ifc4x3_rc1::IfcWallType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcWallTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcWallType::setPredefinedType(::Ifc4x3_rc1::IfcWallTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWallType::declaration() const { return *IFC4X3_RC1_IfcWallType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWallType::Class() { return *IFC4X3_RC1_IfcWallType_type; }
Ifc4x3_rc1::IfcWallType::IfcWallType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWallType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWallType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcWallTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcWasteTerminal
boost::optional< ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value > Ifc4x3_rc1::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWasteTerminal::declaration() const { return *IFC4X3_RC1_IfcWasteTerminal_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWasteTerminal::Class() { return *IFC4X3_RC1_IfcWasteTerminal_type; }
Ifc4x3_rc1::IfcWasteTerminal::IfcWasteTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWasteTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWasteTerminal::IfcWasteTerminal(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWasteTerminal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcWasteTerminalType
::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value Ifc4x3_rc1::IfcWasteTerminalType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcWasteTerminalType::setPredefinedType(::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWasteTerminalType::declaration() const { return *IFC4X3_RC1_IfcWasteTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWasteTerminalType::Class() { return *IFC4X3_RC1_IfcWasteTerminalType_type; }
Ifc4x3_rc1::IfcWasteTerminalType::IfcWasteTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWasteTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWasteTerminalType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcWasteTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcWaterStratum


const IfcParse::entity& Ifc4x3_rc1::IfcWaterStratum::declaration() const { return *IFC4X3_RC1_IfcWaterStratum_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWaterStratum::Class() { return *IFC4X3_RC1_IfcWaterStratum_type; }
Ifc4x3_rc1::IfcWaterStratum::IfcWaterStratum(IfcEntityInstanceData* e) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWaterStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWaterStratum::IfcWaterStratum(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWaterStratum_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } }

// Function implementations for IfcWindow
boost::optional< double > Ifc4x3_rc1::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > Ifc4x3_rc1::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(*v)));data_->setArgument(10,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > Ifc4x3_rc1::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc1::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(*v)));data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWindow::declaration() const { return *IFC4X3_RC1_IfcWindow_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWindow::Class() { return *IFC4X3_RC1_IfcWindow_type; }
Ifc4x3_rc1::IfcWindow::IfcWindow(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWindow_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindow_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_OverallHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_OverallHeight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_OverallWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_OverallWidth));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_PartitioningType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v12_PartitioningType,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(*v12_PartitioningType))));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_UserDefinedPartitioningType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_UserDefinedPartitioningType));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcWindowLiningProperties
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x3_rc1::IfcShapeAspect>(); }
void Ifc4x3_rc1::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc1::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(15,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWindowLiningProperties::declaration() const { return *IFC4X3_RC1_IfcWindowLiningProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWindowLiningProperties::Class() { return *IFC4X3_RC1_IfcWindowLiningProperties_type; }
Ifc4x3_rc1::IfcWindowLiningProperties::IfcWindowLiningProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWindowLiningProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWindowLiningProperties::IfcWindowLiningProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::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, ::Ifc4x3_rc1::IfcShapeAspect* v13_ShapeAspectStyle, boost::optional< double > v14_LiningOffset, boost::optional< double > v15_LiningToPanelOffsetX, boost::optional< double > v16_LiningToPanelOffsetY) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowLiningProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_LiningDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_LiningDepth));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LiningThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LiningThickness));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_TransomThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_TransomThickness));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_MullionThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_MullionThickness));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_FirstTransomOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_FirstTransomOffset));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_SecondTransomOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_SecondTransomOffset));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_FirstMullionOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_FirstMullionOffset));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_SecondMullionOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_SecondMullionOffset));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v13_ShapeAspectStyle));data_->setArgument(12,attr);} if (v14_LiningOffset) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v14_LiningOffset));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } if (v15_LiningToPanelOffsetX) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v15_LiningToPanelOffsetX));data_->setArgument(14,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(14, attr); } if (v16_LiningToPanelOffsetY) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v16_LiningToPanelOffsetY));data_->setArgument(15,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(15, attr); } }

// Function implementations for IfcWindowPanelProperties
::Ifc4x3_rc1::IfcWindowPanelOperationEnum::Value Ifc4x3_rc1::IfcWindowPanelProperties::OperationType() const {  return ::Ifc4x3_rc1::IfcWindowPanelOperationEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc1::IfcWindowPanelProperties::setOperationType(::Ifc4x3_rc1::IfcWindowPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowPanelOperationEnum::ToString(v)));data_->setArgument(4,attr);} }
::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value Ifc4x3_rc1::IfcWindowPanelProperties::PanelPosition() const {  return ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc1::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
::Ifc4x3_rc1::IfcShapeAspect* Ifc4x3_rc1::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc1::IfcShapeAspect>(); }
void Ifc4x3_rc1::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_rc1::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWindowPanelProperties::declaration() const { return *IFC4X3_RC1_IfcWindowPanelProperties_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWindowPanelProperties::Class() { return *IFC4X3_RC1_IfcWindowPanelProperties_type; }
Ifc4x3_rc1::IfcWindowPanelProperties::IfcWindowPanelProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWindowPanelProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWindowPanelProperties::IfcWindowPanelProperties(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc1::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4x3_rc1::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_rc1::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowPanelProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v5_OperationType,::Ifc4x3_rc1::IfcWindowPanelOperationEnum::ToString(v5_OperationType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PanelPosition,::Ifc4x3_rc1::IfcWindowPanelPositionEnum::ToString(v6_PanelPosition))));data_->setArgument(5,attr);} if (v7_FrameDepth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_FrameDepth));data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_FrameThickness) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_FrameThickness));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_ShapeAspectStyle));data_->setArgument(8,attr);} }

// Function implementations for IfcWindowStandardCase


const IfcParse::entity& Ifc4x3_rc1::IfcWindowStandardCase::declaration() const { return *IFC4X3_RC1_IfcWindowStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWindowStandardCase::Class() { return *IFC4X3_RC1_IfcWindowStandardCase_type; }
Ifc4x3_rc1::IfcWindowStandardCase::IfcWindowStandardCase(IfcEntityInstanceData* e) : IfcWindow((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWindowStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWindowStandardCase::IfcWindowStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc1::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc1::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc1::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcWindow((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStandardCase_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_ObjectPlacement));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_Representation));data_->setArgument(6,attr);} if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_OverallHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_OverallHeight));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_OverallWidth) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_OverallWidth));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v11_PredefinedType,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(*v11_PredefinedType))));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); } if (v12_PartitioningType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v12_PartitioningType,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(*v12_PartitioningType))));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_UserDefinedPartitioningType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_UserDefinedPartitioningType));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcWindowStyle
::Ifc4x3_rc1::IfcWindowStyleConstructionEnum::Value Ifc4x3_rc1::IfcWindowStyle::ConstructionType() const {  return ::Ifc4x3_rc1::IfcWindowStyleConstructionEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcWindowStyle::setConstructionType(::Ifc4x3_rc1::IfcWindowStyleConstructionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowStyleConstructionEnum::ToString(v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc1::IfcWindowStyleOperationEnum::Value Ifc4x3_rc1::IfcWindowStyle::OperationType() const {  return ::Ifc4x3_rc1::IfcWindowStyleOperationEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcWindowStyle::setOperationType(::Ifc4x3_rc1::IfcWindowStyleOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowStyleOperationEnum::ToString(v)));data_->setArgument(9,attr);} }
bool Ifc4x3_rc1::IfcWindowStyle::ParameterTakesPrecedence() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcWindowStyle::setParameterTakesPrecedence(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
bool Ifc4x3_rc1::IfcWindowStyle::Sizeable() const {  bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcWindowStyle::setSizeable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWindowStyle::declaration() const { return *IFC4X3_RC1_IfcWindowStyle_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWindowStyle::Class() { return *IFC4X3_RC1_IfcWindowStyle_type; }
Ifc4x3_rc1::IfcWindowStyle::IfcWindowStyle(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWindowStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWindowStyle::IfcWindowStyle(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc1::IfcWindowStyleConstructionEnum::Value v9_ConstructionType, ::Ifc4x3_rc1::IfcWindowStyleOperationEnum::Value v10_OperationType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowStyle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_ConstructionType,::Ifc4x3_rc1::IfcWindowStyleConstructionEnum::ToString(v9_ConstructionType))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_OperationType,::Ifc4x3_rc1::IfcWindowStyleOperationEnum::ToString(v10_OperationType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_ParameterTakesPrecedence));data_->setArgument(10,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_Sizeable));data_->setArgument(11,attr);} }

// Function implementations for IfcWindowType
::Ifc4x3_rc1::IfcWindowTypeEnum::Value Ifc4x3_rc1::IfcWindowType::PredefinedType() const {  return ::Ifc4x3_rc1::IfcWindowTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc1::IfcWindowType::setPredefinedType(::Ifc4x3_rc1::IfcWindowTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc1::IfcWindowType::PartitioningType() const {  return ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc1::IfcWindowType::setPartitioningType(::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} }
boost::optional< bool > Ifc4x3_rc1::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWindowType::declaration() const { return *IFC4X3_RC1_IfcWindowType_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWindowType::Class() { return *IFC4X3_RC1_IfcWindowType_type; }
Ifc4x3_rc1::IfcWindowType::IfcWindowType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWindowType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_rc1::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ApplicableOccurrence, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc1::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWindowType_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ApplicableOccurrence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ApplicableOccurrence));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_HasPropertySets) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_HasPropertySets)->generalize());data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_RepresentationMaps) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_RepresentationMaps)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_Tag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Tag));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_ElementType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_ElementType));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc1::IfcWindowTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_PartitioningType,::Ifc4x3_rc1::IfcWindowTypePartitioningEnum::ToString(v11_PartitioningType))));data_->setArgument(10,attr);} if (v12_ParameterTakesPrecedence) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v12_ParameterTakesPrecedence));data_->setArgument(11,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(11, attr); } if (v13_UserDefinedPartitioningType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_UserDefinedPartitioningType));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcWorkCalendar
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > Ifc4x3_rc1::IfcWorkCalendar::WorkingTimes() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc1::IfcWorkTime >(); }
void Ifc4x3_rc1::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > Ifc4x3_rc1::IfcWorkCalendar::ExceptionTimes() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcWorkTime >(); }
void Ifc4x3_rc1::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value > Ifc4x3_rc1::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc1::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::ToString(*v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWorkCalendar::declaration() const { return *IFC4X3_RC1_IfcWorkCalendar_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWorkCalendar::Class() { return *IFC4X3_RC1_IfcWorkCalendar_type; }
Ifc4x3_rc1::IfcWorkCalendar::IfcWorkCalendar(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWorkCalendar_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v7_WorkingTimes, boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcWorkTime >::ptr > v8_ExceptionTimes, boost::optional< ::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkCalendar_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } if (v7_WorkingTimes) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v7_WorkingTimes)->generalize());data_->setArgument(6,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(6, attr); } if (v8_ExceptionTimes) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_ExceptionTimes)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v9_PredefinedType,::Ifc4x3_rc1::IfcWorkCalendarTypeEnum::ToString(*v9_PredefinedType))));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcWorkControl
std::string Ifc4x3_rc1::IfcWorkControl::CreationDate() const {  std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > Ifc4x3_rc1::IfcWorkControl::Creators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc1::IfcPerson >(); }
void Ifc4x3_rc1::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc1::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v)->generalize());data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc1::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc1::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(10,attr);} }
std::string Ifc4x3_rc1::IfcWorkControl::StartTime() const {  std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc1::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc1::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWorkControl::declaration() const { return *IFC4X3_RC1_IfcWorkControl_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWorkControl::Class() { return *IFC4X3_RC1_IfcWorkControl_type; }
Ifc4x3_rc1::IfcWorkControl::IfcWorkControl(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWorkControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkControl_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_CreationDate));data_->setArgument(6,attr);} if (v8_Creators) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Creators)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Purpose));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Duration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Duration));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_TotalFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_TotalFloat));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_StartTime));data_->setArgument(11,attr);} if (v13_FinishTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_FinishTime));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } }

// Function implementations for IfcWorkPlan
boost::optional< ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value > Ifc4x3_rc1::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc1::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkPlanTypeEnum::ToString(*v)));data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWorkPlan::declaration() const { return *IFC4X3_RC1_IfcWorkPlan_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWorkPlan::Class() { return *IFC4X3_RC1_IfcWorkPlan_type; }
Ifc4x3_rc1::IfcWorkPlan::IfcWorkPlan(IfcEntityInstanceData* e) : IfcWorkControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWorkPlan_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcWorkPlanTypeEnum::Value > v14_PredefinedType) : IfcWorkControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkPlan_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_CreationDate));data_->setArgument(6,attr);} if (v8_Creators) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Creators)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Purpose));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Duration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Duration));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_TotalFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_TotalFloat));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_StartTime));data_->setArgument(11,attr);} if (v13_FinishTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_FinishTime));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v14_PredefinedType,::Ifc4x3_rc1::IfcWorkPlanTypeEnum::ToString(*v14_PredefinedType))));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } }

// Function implementations for IfcWorkSchedule
boost::optional< ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value > Ifc4x3_rc1::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc1::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::ToString(*v)));data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWorkSchedule::declaration() const { return *IFC4X3_RC1_IfcWorkSchedule_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWorkSchedule::Class() { return *IFC4X3_RC1_IfcWorkSchedule_type; }
Ifc4x3_rc1::IfcWorkSchedule::IfcWorkSchedule(IfcEntityInstanceData* e) : IfcWorkControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWorkSchedule_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_rc1::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< aggregate_of< ::Ifc4x3_rc1::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< ::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType) : IfcWorkControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkSchedule_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Identification) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Identification));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_CreationDate));data_->setArgument(6,attr);} if (v8_Creators) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_Creators)->generalize());data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_Purpose));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } if (v10_Duration) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v10_Duration));data_->setArgument(9,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(9, attr); } if (v11_TotalFloat) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v11_TotalFloat));data_->setArgument(10,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(10, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v12_StartTime));data_->setArgument(11,attr);} if (v13_FinishTime) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v13_FinishTime));data_->setArgument(12,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(12, attr); } if (v14_PredefinedType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v14_PredefinedType,::Ifc4x3_rc1::IfcWorkScheduleTypeEnum::ToString(*v14_PredefinedType))));data_->setArgument(13,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(13, attr); } }

// Function implementations for IfcWorkTime
::Ifc4x3_rc1::IfcRecurrencePattern* Ifc4x3_rc1::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc1::IfcRecurrencePattern>(); }
void Ifc4x3_rc1::IfcWorkTime::setRecurrencePattern(::Ifc4x3_rc1::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc1::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcWorkTime::declaration() const { return *IFC4X3_RC1_IfcWorkTime_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcWorkTime::Class() { return *IFC4X3_RC1_IfcWorkTime_type; }
Ifc4x3_rc1::IfcWorkTime::IfcWorkTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcWorkTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcWorkTime::IfcWorkTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc1::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_rc1::IfcRecurrencePattern* v4_RecurrencePattern, boost::optional< std::string > v5_Start, boost::optional< std::string > v6_Finish) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcWorkTime_type);  if (v1_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_Name));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_DataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v2_DataOrigin,::Ifc4x3_rc1::IfcDataOriginEnum::ToString(*v2_DataOrigin))));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } if (v3_UserDefinedDataOrigin) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_UserDefinedDataOrigin));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RecurrencePattern));data_->setArgument(3,attr);} if (v5_Start) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_Start));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_Finish) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_Finish));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

// Function implementations for IfcZShapeProfileDef
double Ifc4x3_rc1::IfcZShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc1::IfcZShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc1::IfcZShapeProfileDef::FlangeWidth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc1::IfcZShapeProfileDef::setFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc1::IfcZShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc1::IfcZShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc1::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc1::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc1::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc1::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcZShapeProfileDef::declaration() const { return *IFC4X3_RC1_IfcZShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcZShapeProfileDef::Class() { return *IFC4X3_RC1_IfcZShapeProfileDef_type; }
Ifc4x3_rc1::IfcZShapeProfileDef::IfcZShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcZShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_rc1::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcZShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc1::IfcProfileTypeEnum::ToString(v1_ProfileType))));data_->setArgument(0,attr);} if (v2_ProfileName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_ProfileName));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Position));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_Depth));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_FlangeWidth));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_WebThickness));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_FlangeThickness));data_->setArgument(6,attr);} if (v8_FilletRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_FilletRadius));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_EdgeRadius) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_EdgeRadius));data_->setArgument(8,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(8, attr); } }

// Function implementations for IfcZone
boost::optional< std::string > Ifc4x3_rc1::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc1::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(*v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc1::IfcZone::declaration() const { return *IFC4X3_RC1_IfcZone_type; }
const IfcParse::entity& Ifc4x3_rc1::IfcZone::Class() { return *IFC4X3_RC1_IfcZone_type; }
Ifc4x3_rc1::IfcZone::IfcZone(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC1_IfcZone_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc1::IfcZone::IfcZone(std::string v1_GlobalId, ::Ifc4x3_rc1::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((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC1_IfcZone_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v5_ObjectType));data_->setArgument(4,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(4, attr); } if (v6_LongName) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_LongName));data_->setArgument(5,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(5, attr); } }

