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

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

#include <map>

const char* const Ifc4x3_rc2::Identifier = "IFC4X3_RC2";

using namespace IfcParse;
using namespace IfcWrite;

// External definitions
extern entity* IFC4X3_RC2_IfcActionRequest_type;
extern entity* IFC4X3_RC2_IfcActor_type;
extern entity* IFC4X3_RC2_IfcActorRole_type;
extern entity* IFC4X3_RC2_IfcActuator_type;
extern entity* IFC4X3_RC2_IfcActuatorType_type;
extern entity* IFC4X3_RC2_IfcAddress_type;
extern entity* IFC4X3_RC2_IfcAdvancedBrep_type;
extern entity* IFC4X3_RC2_IfcAdvancedBrepWithVoids_type;
extern entity* IFC4X3_RC2_IfcAdvancedFace_type;
extern entity* IFC4X3_RC2_IfcAirTerminal_type;
extern entity* IFC4X3_RC2_IfcAirTerminalBox_type;
extern entity* IFC4X3_RC2_IfcAirTerminalBoxType_type;
extern entity* IFC4X3_RC2_IfcAirTerminalType_type;
extern entity* IFC4X3_RC2_IfcAirToAirHeatRecovery_type;
extern entity* IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type;
extern entity* IFC4X3_RC2_IfcAlarm_type;
extern entity* IFC4X3_RC2_IfcAlarmType_type;
extern entity* IFC4X3_RC2_IfcAlignment_type;
extern entity* IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type;
extern entity* IFC4X3_RC2_IfcAlignment2DVerSegLine_type;
extern entity* IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type;
extern entity* IFC4X3_RC2_IfcAlignmentCant_type;
extern entity* IFC4X3_RC2_IfcAlignmentCantSegment_type;
extern entity* IFC4X3_RC2_IfcAlignmentCurve_type;
extern entity* IFC4X3_RC2_IfcAlignmentHorizontal_type;
extern entity* IFC4X3_RC2_IfcAlignmentHorizontalSegment_type;
extern entity* IFC4X3_RC2_IfcAlignmentParameterSegment_type;
extern entity* IFC4X3_RC2_IfcAlignmentSegment_type;
extern entity* IFC4X3_RC2_IfcAlignmentVertical_type;
extern entity* IFC4X3_RC2_IfcAlignmentVerticalSegment_type;
extern entity* IFC4X3_RC2_IfcAnnotation_type;
extern entity* IFC4X3_RC2_IfcAnnotationFillArea_type;
extern entity* IFC4X3_RC2_IfcApplication_type;
extern entity* IFC4X3_RC2_IfcAppliedValue_type;
extern entity* IFC4X3_RC2_IfcApproval_type;
extern entity* IFC4X3_RC2_IfcApprovalRelationship_type;
extern entity* IFC4X3_RC2_IfcArbitraryClosedProfileDef_type;
extern entity* IFC4X3_RC2_IfcArbitraryOpenProfileDef_type;
extern entity* IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type;
extern entity* IFC4X3_RC2_IfcAsset_type;
extern entity* IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcAudioVisualAppliance_type;
extern entity* IFC4X3_RC2_IfcAudioVisualApplianceType_type;
extern entity* IFC4X3_RC2_IfcAxis1Placement_type;
extern entity* IFC4X3_RC2_IfcAxis2Placement2D_type;
extern entity* IFC4X3_RC2_IfcAxis2Placement3D_type;
extern entity* IFC4X3_RC2_IfcAxis2PlacementLinear_type;
extern entity* IFC4X3_RC2_IfcAxisLateralInclination_type;
extern entity* IFC4X3_RC2_IfcBSplineCurve_type;
extern entity* IFC4X3_RC2_IfcBSplineCurveWithKnots_type;
extern entity* IFC4X3_RC2_IfcBSplineSurface_type;
extern entity* IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type;
extern entity* IFC4X3_RC2_IfcBeam_type;
extern entity* IFC4X3_RC2_IfcBeamStandardCase_type;
extern entity* IFC4X3_RC2_IfcBeamType_type;
extern entity* IFC4X3_RC2_IfcBearing_type;
extern entity* IFC4X3_RC2_IfcBearingType_type;
extern entity* IFC4X3_RC2_IfcBlobTexture_type;
extern entity* IFC4X3_RC2_IfcBlock_type;
extern entity* IFC4X3_RC2_IfcBlossCurve_type;
extern entity* IFC4X3_RC2_IfcBoiler_type;
extern entity* IFC4X3_RC2_IfcBoilerType_type;
extern entity* IFC4X3_RC2_IfcBooleanClippingResult_type;
extern entity* IFC4X3_RC2_IfcBooleanResult_type;
extern entity* IFC4X3_RC2_IfcBorehole_type;
extern entity* IFC4X3_RC2_IfcBoundaryCondition_type;
extern entity* IFC4X3_RC2_IfcBoundaryCurve_type;
extern entity* IFC4X3_RC2_IfcBoundaryEdgeCondition_type;
extern entity* IFC4X3_RC2_IfcBoundaryFaceCondition_type;
extern entity* IFC4X3_RC2_IfcBoundaryNodeCondition_type;
extern entity* IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type;
extern entity* IFC4X3_RC2_IfcBoundedCurve_type;
extern entity* IFC4X3_RC2_IfcBoundedSurface_type;
extern entity* IFC4X3_RC2_IfcBoundingBox_type;
extern entity* IFC4X3_RC2_IfcBoxedHalfSpace_type;
extern entity* IFC4X3_RC2_IfcBridge_type;
extern entity* IFC4X3_RC2_IfcBridgePart_type;
extern entity* IFC4X3_RC2_IfcBuilding_type;
extern entity* IFC4X3_RC2_IfcBuildingElementPart_type;
extern entity* IFC4X3_RC2_IfcBuildingElementPartType_type;
extern entity* IFC4X3_RC2_IfcBuildingElementProxy_type;
extern entity* IFC4X3_RC2_IfcBuildingElementProxyType_type;
extern entity* IFC4X3_RC2_IfcBuildingStorey_type;
extern entity* IFC4X3_RC2_IfcBuildingSystem_type;
extern entity* IFC4X3_RC2_IfcBuiltElement_type;
extern entity* IFC4X3_RC2_IfcBuiltElementType_type;
extern entity* IFC4X3_RC2_IfcBuiltSystem_type;
extern entity* IFC4X3_RC2_IfcBurner_type;
extern entity* IFC4X3_RC2_IfcBurnerType_type;
extern entity* IFC4X3_RC2_IfcCShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcCableCarrierFitting_type;
extern entity* IFC4X3_RC2_IfcCableCarrierFittingType_type;
extern entity* IFC4X3_RC2_IfcCableCarrierSegment_type;
extern entity* IFC4X3_RC2_IfcCableCarrierSegmentType_type;
extern entity* IFC4X3_RC2_IfcCableFitting_type;
extern entity* IFC4X3_RC2_IfcCableFittingType_type;
extern entity* IFC4X3_RC2_IfcCableSegment_type;
extern entity* IFC4X3_RC2_IfcCableSegmentType_type;
extern entity* IFC4X3_RC2_IfcCaissonFoundation_type;
extern entity* IFC4X3_RC2_IfcCaissonFoundationType_type;
extern entity* IFC4X3_RC2_IfcCartesianPoint_type;
extern entity* IFC4X3_RC2_IfcCartesianPointList_type;
extern entity* IFC4X3_RC2_IfcCartesianPointList2D_type;
extern entity* IFC4X3_RC2_IfcCartesianPointList3D_type;
extern entity* IFC4X3_RC2_IfcCartesianTransformationOperator_type;
extern entity* IFC4X3_RC2_IfcCartesianTransformationOperator2D_type;
extern entity* IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type;
extern entity* IFC4X3_RC2_IfcCartesianTransformationOperator3D_type;
extern entity* IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type;
extern entity* IFC4X3_RC2_IfcCenterLineProfileDef_type;
extern entity* IFC4X3_RC2_IfcChiller_type;
extern entity* IFC4X3_RC2_IfcChillerType_type;
extern entity* IFC4X3_RC2_IfcChimney_type;
extern entity* IFC4X3_RC2_IfcChimneyType_type;
extern entity* IFC4X3_RC2_IfcCircle_type;
extern entity* IFC4X3_RC2_IfcCircleHollowProfileDef_type;
extern entity* IFC4X3_RC2_IfcCircleProfileDef_type;
extern entity* IFC4X3_RC2_IfcCircularArcSegment2D_type;
extern entity* IFC4X3_RC2_IfcCivilElement_type;
extern entity* IFC4X3_RC2_IfcCivilElementType_type;
extern entity* IFC4X3_RC2_IfcClassification_type;
extern entity* IFC4X3_RC2_IfcClassificationReference_type;
extern entity* IFC4X3_RC2_IfcClosedShell_type;
extern entity* IFC4X3_RC2_IfcClothoid_type;
extern entity* IFC4X3_RC2_IfcCoil_type;
extern entity* IFC4X3_RC2_IfcCoilType_type;
extern entity* IFC4X3_RC2_IfcColourRgb_type;
extern entity* IFC4X3_RC2_IfcColourRgbList_type;
extern entity* IFC4X3_RC2_IfcColourSpecification_type;
extern entity* IFC4X3_RC2_IfcColumn_type;
extern entity* IFC4X3_RC2_IfcColumnStandardCase_type;
extern entity* IFC4X3_RC2_IfcColumnType_type;
extern entity* IFC4X3_RC2_IfcCommunicationsAppliance_type;
extern entity* IFC4X3_RC2_IfcCommunicationsApplianceType_type;
extern entity* IFC4X3_RC2_IfcComplexProperty_type;
extern entity* IFC4X3_RC2_IfcComplexPropertyTemplate_type;
extern entity* IFC4X3_RC2_IfcCompositeCurve_type;
extern entity* IFC4X3_RC2_IfcCompositeCurveOnSurface_type;
extern entity* IFC4X3_RC2_IfcCompositeCurveSegment_type;
extern entity* IFC4X3_RC2_IfcCompositeProfileDef_type;
extern entity* IFC4X3_RC2_IfcCompressor_type;
extern entity* IFC4X3_RC2_IfcCompressorType_type;
extern entity* IFC4X3_RC2_IfcCondenser_type;
extern entity* IFC4X3_RC2_IfcCondenserType_type;
extern entity* IFC4X3_RC2_IfcConic_type;
extern entity* IFC4X3_RC2_IfcConnectedFaceSet_type;
extern entity* IFC4X3_RC2_IfcConnectionCurveGeometry_type;
extern entity* IFC4X3_RC2_IfcConnectionGeometry_type;
extern entity* IFC4X3_RC2_IfcConnectionPointEccentricity_type;
extern entity* IFC4X3_RC2_IfcConnectionPointGeometry_type;
extern entity* IFC4X3_RC2_IfcConnectionSurfaceGeometry_type;
extern entity* IFC4X3_RC2_IfcConnectionVolumeGeometry_type;
extern entity* IFC4X3_RC2_IfcConstraint_type;
extern entity* IFC4X3_RC2_IfcConstructionEquipmentResource_type;
extern entity* IFC4X3_RC2_IfcConstructionEquipmentResourceType_type;
extern entity* IFC4X3_RC2_IfcConstructionMaterialResource_type;
extern entity* IFC4X3_RC2_IfcConstructionMaterialResourceType_type;
extern entity* IFC4X3_RC2_IfcConstructionProductResource_type;
extern entity* IFC4X3_RC2_IfcConstructionProductResourceType_type;
extern entity* IFC4X3_RC2_IfcConstructionResource_type;
extern entity* IFC4X3_RC2_IfcConstructionResourceType_type;
extern entity* IFC4X3_RC2_IfcContext_type;
extern entity* IFC4X3_RC2_IfcContextDependentUnit_type;
extern entity* IFC4X3_RC2_IfcControl_type;
extern entity* IFC4X3_RC2_IfcController_type;
extern entity* IFC4X3_RC2_IfcControllerType_type;
extern entity* IFC4X3_RC2_IfcConversionBasedUnit_type;
extern entity* IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type;
extern entity* IFC4X3_RC2_IfcConveyorSegment_type;
extern entity* IFC4X3_RC2_IfcConveyorSegmentType_type;
extern entity* IFC4X3_RC2_IfcCooledBeam_type;
extern entity* IFC4X3_RC2_IfcCooledBeamType_type;
extern entity* IFC4X3_RC2_IfcCoolingTower_type;
extern entity* IFC4X3_RC2_IfcCoolingTowerType_type;
extern entity* IFC4X3_RC2_IfcCoordinateOperation_type;
extern entity* IFC4X3_RC2_IfcCoordinateReferenceSystem_type;
extern entity* IFC4X3_RC2_IfcCostItem_type;
extern entity* IFC4X3_RC2_IfcCostSchedule_type;
extern entity* IFC4X3_RC2_IfcCostValue_type;
extern entity* IFC4X3_RC2_IfcCourse_type;
extern entity* IFC4X3_RC2_IfcCourseType_type;
extern entity* IFC4X3_RC2_IfcCovering_type;
extern entity* IFC4X3_RC2_IfcCoveringType_type;
extern entity* IFC4X3_RC2_IfcCrewResource_type;
extern entity* IFC4X3_RC2_IfcCrewResourceType_type;
extern entity* IFC4X3_RC2_IfcCsgPrimitive3D_type;
extern entity* IFC4X3_RC2_IfcCsgSolid_type;
extern entity* IFC4X3_RC2_IfcCurrencyRelationship_type;
extern entity* IFC4X3_RC2_IfcCurtainWall_type;
extern entity* IFC4X3_RC2_IfcCurtainWallType_type;
extern entity* IFC4X3_RC2_IfcCurve_type;
extern entity* IFC4X3_RC2_IfcCurveBoundedPlane_type;
extern entity* IFC4X3_RC2_IfcCurveBoundedSurface_type;
extern entity* IFC4X3_RC2_IfcCurveSegment_type;
extern entity* IFC4X3_RC2_IfcCurveSegment2D_type;
extern entity* IFC4X3_RC2_IfcCurveStyle_type;
extern entity* IFC4X3_RC2_IfcCurveStyleFont_type;
extern entity* IFC4X3_RC2_IfcCurveStyleFontAndScaling_type;
extern entity* IFC4X3_RC2_IfcCurveStyleFontPattern_type;
extern entity* IFC4X3_RC2_IfcCylindricalSurface_type;
extern entity* IFC4X3_RC2_IfcDamper_type;
extern entity* IFC4X3_RC2_IfcDamperType_type;
extern entity* IFC4X3_RC2_IfcDeepFoundation_type;
extern entity* IFC4X3_RC2_IfcDeepFoundationType_type;
extern entity* IFC4X3_RC2_IfcDerivedProfileDef_type;
extern entity* IFC4X3_RC2_IfcDerivedUnit_type;
extern entity* IFC4X3_RC2_IfcDerivedUnitElement_type;
extern entity* IFC4X3_RC2_IfcDimensionalExponents_type;
extern entity* IFC4X3_RC2_IfcDirection_type;
extern entity* IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type;
extern entity* IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type;
extern entity* IFC4X3_RC2_IfcDiscreteAccessory_type;
extern entity* IFC4X3_RC2_IfcDiscreteAccessoryType_type;
extern entity* IFC4X3_RC2_IfcDistributionBoard_type;
extern entity* IFC4X3_RC2_IfcDistributionBoardType_type;
extern entity* IFC4X3_RC2_IfcDistributionChamberElement_type;
extern entity* IFC4X3_RC2_IfcDistributionChamberElementType_type;
extern entity* IFC4X3_RC2_IfcDistributionCircuit_type;
extern entity* IFC4X3_RC2_IfcDistributionControlElement_type;
extern entity* IFC4X3_RC2_IfcDistributionControlElementType_type;
extern entity* IFC4X3_RC2_IfcDistributionElement_type;
extern entity* IFC4X3_RC2_IfcDistributionElementType_type;
extern entity* IFC4X3_RC2_IfcDistributionFlowElement_type;
extern entity* IFC4X3_RC2_IfcDistributionFlowElementType_type;
extern entity* IFC4X3_RC2_IfcDistributionPort_type;
extern entity* IFC4X3_RC2_IfcDistributionSystem_type;
extern entity* IFC4X3_RC2_IfcDocumentInformation_type;
extern entity* IFC4X3_RC2_IfcDocumentInformationRelationship_type;
extern entity* IFC4X3_RC2_IfcDocumentReference_type;
extern entity* IFC4X3_RC2_IfcDoor_type;
extern entity* IFC4X3_RC2_IfcDoorLiningProperties_type;
extern entity* IFC4X3_RC2_IfcDoorPanelProperties_type;
extern entity* IFC4X3_RC2_IfcDoorStandardCase_type;
extern entity* IFC4X3_RC2_IfcDoorStyle_type;
extern entity* IFC4X3_RC2_IfcDoorType_type;
extern entity* IFC4X3_RC2_IfcDraughtingPreDefinedColour_type;
extern entity* IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type;
extern entity* IFC4X3_RC2_IfcDuctFitting_type;
extern entity* IFC4X3_RC2_IfcDuctFittingType_type;
extern entity* IFC4X3_RC2_IfcDuctSegment_type;
extern entity* IFC4X3_RC2_IfcDuctSegmentType_type;
extern entity* IFC4X3_RC2_IfcDuctSilencer_type;
extern entity* IFC4X3_RC2_IfcDuctSilencerType_type;
extern entity* IFC4X3_RC2_IfcEarthworksCut_type;
extern entity* IFC4X3_RC2_IfcEarthworksElement_type;
extern entity* IFC4X3_RC2_IfcEarthworksFill_type;
extern entity* IFC4X3_RC2_IfcEdge_type;
extern entity* IFC4X3_RC2_IfcEdgeCurve_type;
extern entity* IFC4X3_RC2_IfcEdgeLoop_type;
extern entity* IFC4X3_RC2_IfcElectricAppliance_type;
extern entity* IFC4X3_RC2_IfcElectricApplianceType_type;
extern entity* IFC4X3_RC2_IfcElectricDistributionBoard_type;
extern entity* IFC4X3_RC2_IfcElectricDistributionBoardType_type;
extern entity* IFC4X3_RC2_IfcElectricFlowStorageDevice_type;
extern entity* IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type;
extern entity* IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type;
extern entity* IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type;
extern entity* IFC4X3_RC2_IfcElectricGenerator_type;
extern entity* IFC4X3_RC2_IfcElectricGeneratorType_type;
extern entity* IFC4X3_RC2_IfcElectricMotor_type;
extern entity* IFC4X3_RC2_IfcElectricMotorType_type;
extern entity* IFC4X3_RC2_IfcElectricTimeControl_type;
extern entity* IFC4X3_RC2_IfcElectricTimeControlType_type;
extern entity* IFC4X3_RC2_IfcElement_type;
extern entity* IFC4X3_RC2_IfcElementAssembly_type;
extern entity* IFC4X3_RC2_IfcElementAssemblyType_type;
extern entity* IFC4X3_RC2_IfcElementComponent_type;
extern entity* IFC4X3_RC2_IfcElementComponentType_type;
extern entity* IFC4X3_RC2_IfcElementQuantity_type;
extern entity* IFC4X3_RC2_IfcElementType_type;
extern entity* IFC4X3_RC2_IfcElementarySurface_type;
extern entity* IFC4X3_RC2_IfcEllipse_type;
extern entity* IFC4X3_RC2_IfcEllipseProfileDef_type;
extern entity* IFC4X3_RC2_IfcEnergyConversionDevice_type;
extern entity* IFC4X3_RC2_IfcEnergyConversionDeviceType_type;
extern entity* IFC4X3_RC2_IfcEngine_type;
extern entity* IFC4X3_RC2_IfcEngineType_type;
extern entity* IFC4X3_RC2_IfcEvaporativeCooler_type;
extern entity* IFC4X3_RC2_IfcEvaporativeCoolerType_type;
extern entity* IFC4X3_RC2_IfcEvaporator_type;
extern entity* IFC4X3_RC2_IfcEvaporatorType_type;
extern entity* IFC4X3_RC2_IfcEvent_type;
extern entity* IFC4X3_RC2_IfcEventTime_type;
extern entity* IFC4X3_RC2_IfcEventType_type;
extern entity* IFC4X3_RC2_IfcExtendedProperties_type;
extern entity* IFC4X3_RC2_IfcExternalInformation_type;
extern entity* IFC4X3_RC2_IfcExternalReference_type;
extern entity* IFC4X3_RC2_IfcExternalReferenceRelationship_type;
extern entity* IFC4X3_RC2_IfcExternalSpatialElement_type;
extern entity* IFC4X3_RC2_IfcExternalSpatialStructureElement_type;
extern entity* IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type;
extern entity* IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type;
extern entity* IFC4X3_RC2_IfcExternallyDefinedTextFont_type;
extern entity* IFC4X3_RC2_IfcExtrudedAreaSolid_type;
extern entity* IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type;
extern entity* IFC4X3_RC2_IfcFace_type;
extern entity* IFC4X3_RC2_IfcFaceBasedSurfaceModel_type;
extern entity* IFC4X3_RC2_IfcFaceBound_type;
extern entity* IFC4X3_RC2_IfcFaceOuterBound_type;
extern entity* IFC4X3_RC2_IfcFaceSurface_type;
extern entity* IFC4X3_RC2_IfcFacetedBrep_type;
extern entity* IFC4X3_RC2_IfcFacetedBrepWithVoids_type;
extern entity* IFC4X3_RC2_IfcFacility_type;
extern entity* IFC4X3_RC2_IfcFacilityPart_type;
extern entity* IFC4X3_RC2_IfcFailureConnectionCondition_type;
extern entity* IFC4X3_RC2_IfcFan_type;
extern entity* IFC4X3_RC2_IfcFanType_type;
extern entity* IFC4X3_RC2_IfcFastener_type;
extern entity* IFC4X3_RC2_IfcFastenerType_type;
extern entity* IFC4X3_RC2_IfcFeatureElement_type;
extern entity* IFC4X3_RC2_IfcFeatureElementAddition_type;
extern entity* IFC4X3_RC2_IfcFeatureElementSubtraction_type;
extern entity* IFC4X3_RC2_IfcFillAreaStyle_type;
extern entity* IFC4X3_RC2_IfcFillAreaStyleHatching_type;
extern entity* IFC4X3_RC2_IfcFillAreaStyleTiles_type;
extern entity* IFC4X3_RC2_IfcFilter_type;
extern entity* IFC4X3_RC2_IfcFilterType_type;
extern entity* IFC4X3_RC2_IfcFireSuppressionTerminal_type;
extern entity* IFC4X3_RC2_IfcFireSuppressionTerminalType_type;
extern entity* IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type;
extern entity* IFC4X3_RC2_IfcFlowController_type;
extern entity* IFC4X3_RC2_IfcFlowControllerType_type;
extern entity* IFC4X3_RC2_IfcFlowFitting_type;
extern entity* IFC4X3_RC2_IfcFlowFittingType_type;
extern entity* IFC4X3_RC2_IfcFlowInstrument_type;
extern entity* IFC4X3_RC2_IfcFlowInstrumentType_type;
extern entity* IFC4X3_RC2_IfcFlowMeter_type;
extern entity* IFC4X3_RC2_IfcFlowMeterType_type;
extern entity* IFC4X3_RC2_IfcFlowMovingDevice_type;
extern entity* IFC4X3_RC2_IfcFlowMovingDeviceType_type;
extern entity* IFC4X3_RC2_IfcFlowSegment_type;
extern entity* IFC4X3_RC2_IfcFlowSegmentType_type;
extern entity* IFC4X3_RC2_IfcFlowStorageDevice_type;
extern entity* IFC4X3_RC2_IfcFlowStorageDeviceType_type;
extern entity* IFC4X3_RC2_IfcFlowTerminal_type;
extern entity* IFC4X3_RC2_IfcFlowTerminalType_type;
extern entity* IFC4X3_RC2_IfcFlowTreatmentDevice_type;
extern entity* IFC4X3_RC2_IfcFlowTreatmentDeviceType_type;
extern entity* IFC4X3_RC2_IfcFooting_type;
extern entity* IFC4X3_RC2_IfcFootingType_type;
extern entity* IFC4X3_RC2_IfcFurnishingElement_type;
extern entity* IFC4X3_RC2_IfcFurnishingElementType_type;
extern entity* IFC4X3_RC2_IfcFurniture_type;
extern entity* IFC4X3_RC2_IfcFurnitureType_type;
extern entity* IFC4X3_RC2_IfcGeographicElement_type;
extern entity* IFC4X3_RC2_IfcGeographicElementType_type;
extern entity* IFC4X3_RC2_IfcGeometricCurveSet_type;
extern entity* IFC4X3_RC2_IfcGeometricRepresentationContext_type;
extern entity* IFC4X3_RC2_IfcGeometricRepresentationItem_type;
extern entity* IFC4X3_RC2_IfcGeometricRepresentationSubContext_type;
extern entity* IFC4X3_RC2_IfcGeometricSet_type;
extern entity* IFC4X3_RC2_IfcGeomodel_type;
extern entity* IFC4X3_RC2_IfcGeoslice_type;
extern entity* IFC4X3_RC2_IfcGeotechnicalAssembly_type;
extern entity* IFC4X3_RC2_IfcGeotechnicalElement_type;
extern entity* IFC4X3_RC2_IfcGeotechnicalStratum_type;
extern entity* IFC4X3_RC2_IfcGradientCurve_type;
extern entity* IFC4X3_RC2_IfcGrid_type;
extern entity* IFC4X3_RC2_IfcGridAxis_type;
extern entity* IFC4X3_RC2_IfcGridPlacement_type;
extern entity* IFC4X3_RC2_IfcGroup_type;
extern entity* IFC4X3_RC2_IfcHalfSpaceSolid_type;
extern entity* IFC4X3_RC2_IfcHeatExchanger_type;
extern entity* IFC4X3_RC2_IfcHeatExchangerType_type;
extern entity* IFC4X3_RC2_IfcHumidifier_type;
extern entity* IFC4X3_RC2_IfcHumidifierType_type;
extern entity* IFC4X3_RC2_IfcIShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcImageTexture_type;
extern entity* IFC4X3_RC2_IfcImpactProtectionDevice_type;
extern entity* IFC4X3_RC2_IfcImpactProtectionDeviceType_type;
extern entity* IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type;
extern entity* IFC4X3_RC2_IfcIndexedColourMap_type;
extern entity* IFC4X3_RC2_IfcIndexedPolyCurve_type;
extern entity* IFC4X3_RC2_IfcIndexedPolygonalFace_type;
extern entity* IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type;
extern entity* IFC4X3_RC2_IfcIndexedTextureMap_type;
extern entity* IFC4X3_RC2_IfcIndexedTriangleTextureMap_type;
extern entity* IFC4X3_RC2_IfcInterceptor_type;
extern entity* IFC4X3_RC2_IfcInterceptorType_type;
extern entity* IFC4X3_RC2_IfcIntersectionCurve_type;
extern entity* IFC4X3_RC2_IfcInventory_type;
extern entity* IFC4X3_RC2_IfcIrregularTimeSeries_type;
extern entity* IFC4X3_RC2_IfcIrregularTimeSeriesValue_type;
extern entity* IFC4X3_RC2_IfcJunctionBox_type;
extern entity* IFC4X3_RC2_IfcJunctionBoxType_type;
extern entity* IFC4X3_RC2_IfcKerb_type;
extern entity* IFC4X3_RC2_IfcKerbType_type;
extern entity* IFC4X3_RC2_IfcLShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcLaborResource_type;
extern entity* IFC4X3_RC2_IfcLaborResourceType_type;
extern entity* IFC4X3_RC2_IfcLagTime_type;
extern entity* IFC4X3_RC2_IfcLamp_type;
extern entity* IFC4X3_RC2_IfcLampType_type;
extern entity* IFC4X3_RC2_IfcLibraryInformation_type;
extern entity* IFC4X3_RC2_IfcLibraryReference_type;
extern entity* IFC4X3_RC2_IfcLightDistributionData_type;
extern entity* IFC4X3_RC2_IfcLightFixture_type;
extern entity* IFC4X3_RC2_IfcLightFixtureType_type;
extern entity* IFC4X3_RC2_IfcLightIntensityDistribution_type;
extern entity* IFC4X3_RC2_IfcLightSource_type;
extern entity* IFC4X3_RC2_IfcLightSourceAmbient_type;
extern entity* IFC4X3_RC2_IfcLightSourceDirectional_type;
extern entity* IFC4X3_RC2_IfcLightSourceGoniometric_type;
extern entity* IFC4X3_RC2_IfcLightSourcePositional_type;
extern entity* IFC4X3_RC2_IfcLightSourceSpot_type;
extern entity* IFC4X3_RC2_IfcLine_type;
extern entity* IFC4X3_RC2_IfcLineSegment2D_type;
extern entity* IFC4X3_RC2_IfcLinearAxisWithInclination_type;
extern entity* IFC4X3_RC2_IfcLinearElement_type;
extern entity* IFC4X3_RC2_IfcLinearPlacement_type;
extern entity* IFC4X3_RC2_IfcLinearPlacementWithInclination_type;
extern entity* IFC4X3_RC2_IfcLinearPositioningElement_type;
extern entity* IFC4X3_RC2_IfcLinearSpanPlacement_type;
extern entity* IFC4X3_RC2_IfcLiquidTerminal_type;
extern entity* IFC4X3_RC2_IfcLiquidTerminalType_type;
extern entity* IFC4X3_RC2_IfcLocalPlacement_type;
extern entity* IFC4X3_RC2_IfcLoop_type;
extern entity* IFC4X3_RC2_IfcManifoldSolidBrep_type;
extern entity* IFC4X3_RC2_IfcMapConversion_type;
extern entity* IFC4X3_RC2_IfcMappedItem_type;
extern entity* IFC4X3_RC2_IfcMarineFacility_type;
extern entity* IFC4X3_RC2_IfcMaterial_type;
extern entity* IFC4X3_RC2_IfcMaterialClassificationRelationship_type;
extern entity* IFC4X3_RC2_IfcMaterialConstituent_type;
extern entity* IFC4X3_RC2_IfcMaterialConstituentSet_type;
extern entity* IFC4X3_RC2_IfcMaterialDefinition_type;
extern entity* IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type;
extern entity* IFC4X3_RC2_IfcMaterialLayer_type;
extern entity* IFC4X3_RC2_IfcMaterialLayerSet_type;
extern entity* IFC4X3_RC2_IfcMaterialLayerSetUsage_type;
extern entity* IFC4X3_RC2_IfcMaterialLayerWithOffsets_type;
extern entity* IFC4X3_RC2_IfcMaterialList_type;
extern entity* IFC4X3_RC2_IfcMaterialProfile_type;
extern entity* IFC4X3_RC2_IfcMaterialProfileSet_type;
extern entity* IFC4X3_RC2_IfcMaterialProfileSetUsage_type;
extern entity* IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type;
extern entity* IFC4X3_RC2_IfcMaterialProfileWithOffsets_type;
extern entity* IFC4X3_RC2_IfcMaterialProperties_type;
extern entity* IFC4X3_RC2_IfcMaterialRelationship_type;
extern entity* IFC4X3_RC2_IfcMaterialUsageDefinition_type;
extern entity* IFC4X3_RC2_IfcMeasureWithUnit_type;
extern entity* IFC4X3_RC2_IfcMechanicalFastener_type;
extern entity* IFC4X3_RC2_IfcMechanicalFastenerType_type;
extern entity* IFC4X3_RC2_IfcMedicalDevice_type;
extern entity* IFC4X3_RC2_IfcMedicalDeviceType_type;
extern entity* IFC4X3_RC2_IfcMember_type;
extern entity* IFC4X3_RC2_IfcMemberStandardCase_type;
extern entity* IFC4X3_RC2_IfcMemberType_type;
extern entity* IFC4X3_RC2_IfcMetric_type;
extern entity* IFC4X3_RC2_IfcMirroredProfileDef_type;
extern entity* IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type;
extern entity* IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type;
extern entity* IFC4X3_RC2_IfcMonetaryUnit_type;
extern entity* IFC4X3_RC2_IfcMooringDevice_type;
extern entity* IFC4X3_RC2_IfcMooringDeviceType_type;
extern entity* IFC4X3_RC2_IfcMotorConnection_type;
extern entity* IFC4X3_RC2_IfcMotorConnectionType_type;
extern entity* IFC4X3_RC2_IfcNamedUnit_type;
extern entity* IFC4X3_RC2_IfcNavigationElement_type;
extern entity* IFC4X3_RC2_IfcNavigationElementType_type;
extern entity* IFC4X3_RC2_IfcObject_type;
extern entity* IFC4X3_RC2_IfcObjectDefinition_type;
extern entity* IFC4X3_RC2_IfcObjectPlacement_type;
extern entity* IFC4X3_RC2_IfcObjective_type;
extern entity* IFC4X3_RC2_IfcOccupant_type;
extern entity* IFC4X3_RC2_IfcOffsetCurve_type;
extern entity* IFC4X3_RC2_IfcOffsetCurve2D_type;
extern entity* IFC4X3_RC2_IfcOffsetCurve3D_type;
extern entity* IFC4X3_RC2_IfcOffsetCurveByDistances_type;
extern entity* IFC4X3_RC2_IfcOpenCrossProfileDef_type;
extern entity* IFC4X3_RC2_IfcOpenShell_type;
extern entity* IFC4X3_RC2_IfcOpeningElement_type;
extern entity* IFC4X3_RC2_IfcOpeningStandardCase_type;
extern entity* IFC4X3_RC2_IfcOrganization_type;
extern entity* IFC4X3_RC2_IfcOrganizationRelationship_type;
extern entity* IFC4X3_RC2_IfcOrientedEdge_type;
extern entity* IFC4X3_RC2_IfcOuterBoundaryCurve_type;
extern entity* IFC4X3_RC2_IfcOutlet_type;
extern entity* IFC4X3_RC2_IfcOutletType_type;
extern entity* IFC4X3_RC2_IfcOwnerHistory_type;
extern entity* IFC4X3_RC2_IfcParameterizedProfileDef_type;
extern entity* IFC4X3_RC2_IfcPath_type;
extern entity* IFC4X3_RC2_IfcPavement_type;
extern entity* IFC4X3_RC2_IfcPavementType_type;
extern entity* IFC4X3_RC2_IfcPcurve_type;
extern entity* IFC4X3_RC2_IfcPerformanceHistory_type;
extern entity* IFC4X3_RC2_IfcPermeableCoveringProperties_type;
extern entity* IFC4X3_RC2_IfcPermit_type;
extern entity* IFC4X3_RC2_IfcPerson_type;
extern entity* IFC4X3_RC2_IfcPersonAndOrganization_type;
extern entity* IFC4X3_RC2_IfcPhysicalComplexQuantity_type;
extern entity* IFC4X3_RC2_IfcPhysicalQuantity_type;
extern entity* IFC4X3_RC2_IfcPhysicalSimpleQuantity_type;
extern entity* IFC4X3_RC2_IfcPile_type;
extern entity* IFC4X3_RC2_IfcPileType_type;
extern entity* IFC4X3_RC2_IfcPipeFitting_type;
extern entity* IFC4X3_RC2_IfcPipeFittingType_type;
extern entity* IFC4X3_RC2_IfcPipeSegment_type;
extern entity* IFC4X3_RC2_IfcPipeSegmentType_type;
extern entity* IFC4X3_RC2_IfcPixelTexture_type;
extern entity* IFC4X3_RC2_IfcPlacement_type;
extern entity* IFC4X3_RC2_IfcPlanarBox_type;
extern entity* IFC4X3_RC2_IfcPlanarExtent_type;
extern entity* IFC4X3_RC2_IfcPlane_type;
extern entity* IFC4X3_RC2_IfcPlant_type;
extern entity* IFC4X3_RC2_IfcPlate_type;
extern entity* IFC4X3_RC2_IfcPlateStandardCase_type;
extern entity* IFC4X3_RC2_IfcPlateType_type;
extern entity* IFC4X3_RC2_IfcPoint_type;
extern entity* IFC4X3_RC2_IfcPointByDistanceExpression_type;
extern entity* IFC4X3_RC2_IfcPointOnCurve_type;
extern entity* IFC4X3_RC2_IfcPointOnSurface_type;
extern entity* IFC4X3_RC2_IfcPolyLoop_type;
extern entity* IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type;
extern entity* IFC4X3_RC2_IfcPolygonalFaceSet_type;
extern entity* IFC4X3_RC2_IfcPolyline_type;
extern entity* IFC4X3_RC2_IfcPort_type;
extern entity* IFC4X3_RC2_IfcPositioningElement_type;
extern entity* IFC4X3_RC2_IfcPostalAddress_type;
extern entity* IFC4X3_RC2_IfcPreDefinedColour_type;
extern entity* IFC4X3_RC2_IfcPreDefinedCurveFont_type;
extern entity* IFC4X3_RC2_IfcPreDefinedItem_type;
extern entity* IFC4X3_RC2_IfcPreDefinedProperties_type;
extern entity* IFC4X3_RC2_IfcPreDefinedPropertySet_type;
extern entity* IFC4X3_RC2_IfcPreDefinedTextFont_type;
extern entity* IFC4X3_RC2_IfcPresentationItem_type;
extern entity* IFC4X3_RC2_IfcPresentationLayerAssignment_type;
extern entity* IFC4X3_RC2_IfcPresentationLayerWithStyle_type;
extern entity* IFC4X3_RC2_IfcPresentationStyle_type;
extern entity* IFC4X3_RC2_IfcPresentationStyleAssignment_type;
extern entity* IFC4X3_RC2_IfcProcedure_type;
extern entity* IFC4X3_RC2_IfcProcedureType_type;
extern entity* IFC4X3_RC2_IfcProcess_type;
extern entity* IFC4X3_RC2_IfcProduct_type;
extern entity* IFC4X3_RC2_IfcProductDefinitionShape_type;
extern entity* IFC4X3_RC2_IfcProductRepresentation_type;
extern entity* IFC4X3_RC2_IfcProfileDef_type;
extern entity* IFC4X3_RC2_IfcProfileProperties_type;
extern entity* IFC4X3_RC2_IfcProject_type;
extern entity* IFC4X3_RC2_IfcProjectLibrary_type;
extern entity* IFC4X3_RC2_IfcProjectOrder_type;
extern entity* IFC4X3_RC2_IfcProjectedCRS_type;
extern entity* IFC4X3_RC2_IfcProjectionElement_type;
extern entity* IFC4X3_RC2_IfcProperty_type;
extern entity* IFC4X3_RC2_IfcPropertyAbstraction_type;
extern entity* IFC4X3_RC2_IfcPropertyBoundedValue_type;
extern entity* IFC4X3_RC2_IfcPropertyDefinition_type;
extern entity* IFC4X3_RC2_IfcPropertyDependencyRelationship_type;
extern entity* IFC4X3_RC2_IfcPropertyEnumeratedValue_type;
extern entity* IFC4X3_RC2_IfcPropertyEnumeration_type;
extern entity* IFC4X3_RC2_IfcPropertyListValue_type;
extern entity* IFC4X3_RC2_IfcPropertyReferenceValue_type;
extern entity* IFC4X3_RC2_IfcPropertySet_type;
extern entity* IFC4X3_RC2_IfcPropertySetDefinition_type;
extern entity* IFC4X3_RC2_IfcPropertySetTemplate_type;
extern entity* IFC4X3_RC2_IfcPropertySingleValue_type;
extern entity* IFC4X3_RC2_IfcPropertyTableValue_type;
extern entity* IFC4X3_RC2_IfcPropertyTemplate_type;
extern entity* IFC4X3_RC2_IfcPropertyTemplateDefinition_type;
extern entity* IFC4X3_RC2_IfcProtectiveDevice_type;
extern entity* IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type;
extern entity* IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type;
extern entity* IFC4X3_RC2_IfcProtectiveDeviceType_type;
extern entity* IFC4X3_RC2_IfcProxy_type;
extern entity* IFC4X3_RC2_IfcPump_type;
extern entity* IFC4X3_RC2_IfcPumpType_type;
extern entity* IFC4X3_RC2_IfcQuantityArea_type;
extern entity* IFC4X3_RC2_IfcQuantityCount_type;
extern entity* IFC4X3_RC2_IfcQuantityLength_type;
extern entity* IFC4X3_RC2_IfcQuantitySet_type;
extern entity* IFC4X3_RC2_IfcQuantityTime_type;
extern entity* IFC4X3_RC2_IfcQuantityVolume_type;
extern entity* IFC4X3_RC2_IfcQuantityWeight_type;
extern entity* IFC4X3_RC2_IfcRail_type;
extern entity* IFC4X3_RC2_IfcRailType_type;
extern entity* IFC4X3_RC2_IfcRailing_type;
extern entity* IFC4X3_RC2_IfcRailingType_type;
extern entity* IFC4X3_RC2_IfcRailway_type;
extern entity* IFC4X3_RC2_IfcRamp_type;
extern entity* IFC4X3_RC2_IfcRampFlight_type;
extern entity* IFC4X3_RC2_IfcRampFlightType_type;
extern entity* IFC4X3_RC2_IfcRampType_type;
extern entity* IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type;
extern entity* IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type;
extern entity* IFC4X3_RC2_IfcRectangleHollowProfileDef_type;
extern entity* IFC4X3_RC2_IfcRectangleProfileDef_type;
extern entity* IFC4X3_RC2_IfcRectangularPyramid_type;
extern entity* IFC4X3_RC2_IfcRectangularTrimmedSurface_type;
extern entity* IFC4X3_RC2_IfcRecurrencePattern_type;
extern entity* IFC4X3_RC2_IfcReference_type;
extern entity* IFC4X3_RC2_IfcReferent_type;
extern entity* IFC4X3_RC2_IfcRegularTimeSeries_type;
extern entity* IFC4X3_RC2_IfcReinforcedSoil_type;
extern entity* IFC4X3_RC2_IfcReinforcementBarProperties_type;
extern entity* IFC4X3_RC2_IfcReinforcementDefinitionProperties_type;
extern entity* IFC4X3_RC2_IfcReinforcingBar_type;
extern entity* IFC4X3_RC2_IfcReinforcingBarType_type;
extern entity* IFC4X3_RC2_IfcReinforcingElement_type;
extern entity* IFC4X3_RC2_IfcReinforcingElementType_type;
extern entity* IFC4X3_RC2_IfcReinforcingMesh_type;
extern entity* IFC4X3_RC2_IfcReinforcingMeshType_type;
extern entity* IFC4X3_RC2_IfcRelAggregates_type;
extern entity* IFC4X3_RC2_IfcRelAssigns_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToActor_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToControl_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToGroup_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToProcess_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToProduct_type;
extern entity* IFC4X3_RC2_IfcRelAssignsToResource_type;
extern entity* IFC4X3_RC2_IfcRelAssociates_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesApproval_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesClassification_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesConstraint_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesDocument_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesLibrary_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesMaterial_type;
extern entity* IFC4X3_RC2_IfcRelAssociatesProfileDef_type;
extern entity* IFC4X3_RC2_IfcRelConnects_type;
extern entity* IFC4X3_RC2_IfcRelConnectsElements_type;
extern entity* IFC4X3_RC2_IfcRelConnectsPathElements_type;
extern entity* IFC4X3_RC2_IfcRelConnectsPortToElement_type;
extern entity* IFC4X3_RC2_IfcRelConnectsPorts_type;
extern entity* IFC4X3_RC2_IfcRelConnectsStructuralActivity_type;
extern entity* IFC4X3_RC2_IfcRelConnectsStructuralMember_type;
extern entity* IFC4X3_RC2_IfcRelConnectsWithEccentricity_type;
extern entity* IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type;
extern entity* IFC4X3_RC2_IfcRelContainedInSpatialStructure_type;
extern entity* IFC4X3_RC2_IfcRelCoversBldgElements_type;
extern entity* IFC4X3_RC2_IfcRelCoversSpaces_type;
extern entity* IFC4X3_RC2_IfcRelDeclares_type;
extern entity* IFC4X3_RC2_IfcRelDecomposes_type;
extern entity* IFC4X3_RC2_IfcRelDefines_type;
extern entity* IFC4X3_RC2_IfcRelDefinesByObject_type;
extern entity* IFC4X3_RC2_IfcRelDefinesByProperties_type;
extern entity* IFC4X3_RC2_IfcRelDefinesByTemplate_type;
extern entity* IFC4X3_RC2_IfcRelDefinesByType_type;
extern entity* IFC4X3_RC2_IfcRelFillsElement_type;
extern entity* IFC4X3_RC2_IfcRelFlowControlElements_type;
extern entity* IFC4X3_RC2_IfcRelInterferesElements_type;
extern entity* IFC4X3_RC2_IfcRelNests_type;
extern entity* IFC4X3_RC2_IfcRelPositions_type;
extern entity* IFC4X3_RC2_IfcRelProjectsElement_type;
extern entity* IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type;
extern entity* IFC4X3_RC2_IfcRelSequence_type;
extern entity* IFC4X3_RC2_IfcRelServicesBuildings_type;
extern entity* IFC4X3_RC2_IfcRelSpaceBoundary_type;
extern entity* IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type;
extern entity* IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type;
extern entity* IFC4X3_RC2_IfcRelVoidsElement_type;
extern entity* IFC4X3_RC2_IfcRelationship_type;
extern entity* IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type;
extern entity* IFC4X3_RC2_IfcRepresentation_type;
extern entity* IFC4X3_RC2_IfcRepresentationContext_type;
extern entity* IFC4X3_RC2_IfcRepresentationItem_type;
extern entity* IFC4X3_RC2_IfcRepresentationMap_type;
extern entity* IFC4X3_RC2_IfcResource_type;
extern entity* IFC4X3_RC2_IfcResourceApprovalRelationship_type;
extern entity* IFC4X3_RC2_IfcResourceConstraintRelationship_type;
extern entity* IFC4X3_RC2_IfcResourceLevelRelationship_type;
extern entity* IFC4X3_RC2_IfcResourceTime_type;
extern entity* IFC4X3_RC2_IfcRevolvedAreaSolid_type;
extern entity* IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type;
extern entity* IFC4X3_RC2_IfcRightCircularCone_type;
extern entity* IFC4X3_RC2_IfcRightCircularCylinder_type;
extern entity* IFC4X3_RC2_IfcRoad_type;
extern entity* IFC4X3_RC2_IfcRoof_type;
extern entity* IFC4X3_RC2_IfcRoofType_type;
extern entity* IFC4X3_RC2_IfcRoot_type;
extern entity* IFC4X3_RC2_IfcRoundedRectangleProfileDef_type;
extern entity* IFC4X3_RC2_IfcSIUnit_type;
extern entity* IFC4X3_RC2_IfcSanitaryTerminal_type;
extern entity* IFC4X3_RC2_IfcSanitaryTerminalType_type;
extern entity* IFC4X3_RC2_IfcSchedulingTime_type;
extern entity* IFC4X3_RC2_IfcSeamCurve_type;
extern entity* IFC4X3_RC2_IfcSectionProperties_type;
extern entity* IFC4X3_RC2_IfcSectionReinforcementProperties_type;
extern entity* IFC4X3_RC2_IfcSectionedSolid_type;
extern entity* IFC4X3_RC2_IfcSectionedSolidHorizontal_type;
extern entity* IFC4X3_RC2_IfcSectionedSpine_type;
extern entity* IFC4X3_RC2_IfcSectionedSurface_type;
extern entity* IFC4X3_RC2_IfcSegment_type;
extern entity* IFC4X3_RC2_IfcSegmentedReferenceCurve_type;
extern entity* IFC4X3_RC2_IfcSensor_type;
extern entity* IFC4X3_RC2_IfcSensorType_type;
extern entity* IFC4X3_RC2_IfcSeriesParameterCurve_type;
extern entity* IFC4X3_RC2_IfcShadingDevice_type;
extern entity* IFC4X3_RC2_IfcShadingDeviceType_type;
extern entity* IFC4X3_RC2_IfcShapeAspect_type;
extern entity* IFC4X3_RC2_IfcShapeModel_type;
extern entity* IFC4X3_RC2_IfcShapeRepresentation_type;
extern entity* IFC4X3_RC2_IfcShellBasedSurfaceModel_type;
extern entity* IFC4X3_RC2_IfcSign_type;
extern entity* IFC4X3_RC2_IfcSignType_type;
extern entity* IFC4X3_RC2_IfcSignal_type;
extern entity* IFC4X3_RC2_IfcSignalType_type;
extern entity* IFC4X3_RC2_IfcSimpleProperty_type;
extern entity* IFC4X3_RC2_IfcSimplePropertyTemplate_type;
extern entity* IFC4X3_RC2_IfcSite_type;
extern entity* IFC4X3_RC2_IfcSlab_type;
extern entity* IFC4X3_RC2_IfcSlabElementedCase_type;
extern entity* IFC4X3_RC2_IfcSlabStandardCase_type;
extern entity* IFC4X3_RC2_IfcSlabType_type;
extern entity* IFC4X3_RC2_IfcSlippageConnectionCondition_type;
extern entity* IFC4X3_RC2_IfcSolarDevice_type;
extern entity* IFC4X3_RC2_IfcSolarDeviceType_type;
extern entity* IFC4X3_RC2_IfcSolidModel_type;
extern entity* IFC4X3_RC2_IfcSolidStratum_type;
extern entity* IFC4X3_RC2_IfcSpace_type;
extern entity* IFC4X3_RC2_IfcSpaceHeater_type;
extern entity* IFC4X3_RC2_IfcSpaceHeaterType_type;
extern entity* IFC4X3_RC2_IfcSpaceType_type;
extern entity* IFC4X3_RC2_IfcSpatialElement_type;
extern entity* IFC4X3_RC2_IfcSpatialElementType_type;
extern entity* IFC4X3_RC2_IfcSpatialStructureElement_type;
extern entity* IFC4X3_RC2_IfcSpatialStructureElementType_type;
extern entity* IFC4X3_RC2_IfcSpatialZone_type;
extern entity* IFC4X3_RC2_IfcSpatialZoneType_type;
extern entity* IFC4X3_RC2_IfcSphere_type;
extern entity* IFC4X3_RC2_IfcSphericalSurface_type;
extern entity* IFC4X3_RC2_IfcStackTerminal_type;
extern entity* IFC4X3_RC2_IfcStackTerminalType_type;
extern entity* IFC4X3_RC2_IfcStair_type;
extern entity* IFC4X3_RC2_IfcStairFlight_type;
extern entity* IFC4X3_RC2_IfcStairFlightType_type;
extern entity* IFC4X3_RC2_IfcStairType_type;
extern entity* IFC4X3_RC2_IfcStructuralAction_type;
extern entity* IFC4X3_RC2_IfcStructuralActivity_type;
extern entity* IFC4X3_RC2_IfcStructuralAnalysisModel_type;
extern entity* IFC4X3_RC2_IfcStructuralConnection_type;
extern entity* IFC4X3_RC2_IfcStructuralConnectionCondition_type;
extern entity* IFC4X3_RC2_IfcStructuralCurveAction_type;
extern entity* IFC4X3_RC2_IfcStructuralCurveConnection_type;
extern entity* IFC4X3_RC2_IfcStructuralCurveMember_type;
extern entity* IFC4X3_RC2_IfcStructuralCurveMemberVarying_type;
extern entity* IFC4X3_RC2_IfcStructuralCurveReaction_type;
extern entity* IFC4X3_RC2_IfcStructuralItem_type;
extern entity* IFC4X3_RC2_IfcStructuralLinearAction_type;
extern entity* IFC4X3_RC2_IfcStructuralLoad_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadCase_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadConfiguration_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadGroup_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadLinearForce_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadOrResult_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadPlanarForce_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadSingleForce_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadStatic_type;
extern entity* IFC4X3_RC2_IfcStructuralLoadTemperature_type;
extern entity* IFC4X3_RC2_IfcStructuralMember_type;
extern entity* IFC4X3_RC2_IfcStructuralPlanarAction_type;
extern entity* IFC4X3_RC2_IfcStructuralPointAction_type;
extern entity* IFC4X3_RC2_IfcStructuralPointConnection_type;
extern entity* IFC4X3_RC2_IfcStructuralPointReaction_type;
extern entity* IFC4X3_RC2_IfcStructuralReaction_type;
extern entity* IFC4X3_RC2_IfcStructuralResultGroup_type;
extern entity* IFC4X3_RC2_IfcStructuralSurfaceAction_type;
extern entity* IFC4X3_RC2_IfcStructuralSurfaceConnection_type;
extern entity* IFC4X3_RC2_IfcStructuralSurfaceMember_type;
extern entity* IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type;
extern entity* IFC4X3_RC2_IfcStructuralSurfaceReaction_type;
extern entity* IFC4X3_RC2_IfcStyleModel_type;
extern entity* IFC4X3_RC2_IfcStyledItem_type;
extern entity* IFC4X3_RC2_IfcStyledRepresentation_type;
extern entity* IFC4X3_RC2_IfcSubContractResource_type;
extern entity* IFC4X3_RC2_IfcSubContractResourceType_type;
extern entity* IFC4X3_RC2_IfcSubedge_type;
extern entity* IFC4X3_RC2_IfcSurface_type;
extern entity* IFC4X3_RC2_IfcSurfaceCurve_type;
extern entity* IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type;
extern entity* IFC4X3_RC2_IfcSurfaceFeature_type;
extern entity* IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type;
extern entity* IFC4X3_RC2_IfcSurfaceOfRevolution_type;
extern entity* IFC4X3_RC2_IfcSurfaceReinforcementArea_type;
extern entity* IFC4X3_RC2_IfcSurfaceStyle_type;
extern entity* IFC4X3_RC2_IfcSurfaceStyleLighting_type;
extern entity* IFC4X3_RC2_IfcSurfaceStyleRefraction_type;
extern entity* IFC4X3_RC2_IfcSurfaceStyleRendering_type;
extern entity* IFC4X3_RC2_IfcSurfaceStyleShading_type;
extern entity* IFC4X3_RC2_IfcSurfaceStyleWithTextures_type;
extern entity* IFC4X3_RC2_IfcSurfaceTexture_type;
extern entity* IFC4X3_RC2_IfcSweptAreaSolid_type;
extern entity* IFC4X3_RC2_IfcSweptDiskSolid_type;
extern entity* IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type;
extern entity* IFC4X3_RC2_IfcSweptSurface_type;
extern entity* IFC4X3_RC2_IfcSwitchingDevice_type;
extern entity* IFC4X3_RC2_IfcSwitchingDeviceType_type;
extern entity* IFC4X3_RC2_IfcSystem_type;
extern entity* IFC4X3_RC2_IfcSystemFurnitureElement_type;
extern entity* IFC4X3_RC2_IfcSystemFurnitureElementType_type;
extern entity* IFC4X3_RC2_IfcTShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcTable_type;
extern entity* IFC4X3_RC2_IfcTableColumn_type;
extern entity* IFC4X3_RC2_IfcTableRow_type;
extern entity* IFC4X3_RC2_IfcTank_type;
extern entity* IFC4X3_RC2_IfcTankType_type;
extern entity* IFC4X3_RC2_IfcTask_type;
extern entity* IFC4X3_RC2_IfcTaskTime_type;
extern entity* IFC4X3_RC2_IfcTaskTimeRecurring_type;
extern entity* IFC4X3_RC2_IfcTaskType_type;
extern entity* IFC4X3_RC2_IfcTelecomAddress_type;
extern entity* IFC4X3_RC2_IfcTendon_type;
extern entity* IFC4X3_RC2_IfcTendonAnchor_type;
extern entity* IFC4X3_RC2_IfcTendonAnchorType_type;
extern entity* IFC4X3_RC2_IfcTendonConduit_type;
extern entity* IFC4X3_RC2_IfcTendonConduitType_type;
extern entity* IFC4X3_RC2_IfcTendonType_type;
extern entity* IFC4X3_RC2_IfcTessellatedFaceSet_type;
extern entity* IFC4X3_RC2_IfcTessellatedItem_type;
extern entity* IFC4X3_RC2_IfcTextLiteral_type;
extern entity* IFC4X3_RC2_IfcTextLiteralWithExtent_type;
extern entity* IFC4X3_RC2_IfcTextStyle_type;
extern entity* IFC4X3_RC2_IfcTextStyleFontModel_type;
extern entity* IFC4X3_RC2_IfcTextStyleForDefinedFont_type;
extern entity* IFC4X3_RC2_IfcTextStyleTextModel_type;
extern entity* IFC4X3_RC2_IfcTextureCoordinate_type;
extern entity* IFC4X3_RC2_IfcTextureCoordinateGenerator_type;
extern entity* IFC4X3_RC2_IfcTextureMap_type;
extern entity* IFC4X3_RC2_IfcTextureVertex_type;
extern entity* IFC4X3_RC2_IfcTextureVertexList_type;
extern entity* IFC4X3_RC2_IfcTimePeriod_type;
extern entity* IFC4X3_RC2_IfcTimeSeries_type;
extern entity* IFC4X3_RC2_IfcTimeSeriesValue_type;
extern entity* IFC4X3_RC2_IfcTopologicalRepresentationItem_type;
extern entity* IFC4X3_RC2_IfcTopologyRepresentation_type;
extern entity* IFC4X3_RC2_IfcToroidalSurface_type;
extern entity* IFC4X3_RC2_IfcTrackElement_type;
extern entity* IFC4X3_RC2_IfcTrackElementType_type;
extern entity* IFC4X3_RC2_IfcTransformer_type;
extern entity* IFC4X3_RC2_IfcTransformerType_type;
extern entity* IFC4X3_RC2_IfcTransitionCurveSegment2D_type;
extern entity* IFC4X3_RC2_IfcTransportElement_type;
extern entity* IFC4X3_RC2_IfcTransportElementType_type;
extern entity* IFC4X3_RC2_IfcTrapeziumProfileDef_type;
extern entity* IFC4X3_RC2_IfcTriangulatedFaceSet_type;
extern entity* IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type;
extern entity* IFC4X3_RC2_IfcTrimmedCurve_type;
extern entity* IFC4X3_RC2_IfcTubeBundle_type;
extern entity* IFC4X3_RC2_IfcTubeBundleType_type;
extern entity* IFC4X3_RC2_IfcTypeObject_type;
extern entity* IFC4X3_RC2_IfcTypeProcess_type;
extern entity* IFC4X3_RC2_IfcTypeProduct_type;
extern entity* IFC4X3_RC2_IfcTypeResource_type;
extern entity* IFC4X3_RC2_IfcUShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcUnitAssignment_type;
extern entity* IFC4X3_RC2_IfcUnitaryControlElement_type;
extern entity* IFC4X3_RC2_IfcUnitaryControlElementType_type;
extern entity* IFC4X3_RC2_IfcUnitaryEquipment_type;
extern entity* IFC4X3_RC2_IfcUnitaryEquipmentType_type;
extern entity* IFC4X3_RC2_IfcValve_type;
extern entity* IFC4X3_RC2_IfcValveType_type;
extern entity* IFC4X3_RC2_IfcVector_type;
extern entity* IFC4X3_RC2_IfcVertex_type;
extern entity* IFC4X3_RC2_IfcVertexLoop_type;
extern entity* IFC4X3_RC2_IfcVertexPoint_type;
extern entity* IFC4X3_RC2_IfcVibrationDamper_type;
extern entity* IFC4X3_RC2_IfcVibrationDamperType_type;
extern entity* IFC4X3_RC2_IfcVibrationIsolator_type;
extern entity* IFC4X3_RC2_IfcVibrationIsolatorType_type;
extern entity* IFC4X3_RC2_IfcVirtualElement_type;
extern entity* IFC4X3_RC2_IfcVirtualGridIntersection_type;
extern entity* IFC4X3_RC2_IfcVoidStratum_type;
extern entity* IFC4X3_RC2_IfcVoidingFeature_type;
extern entity* IFC4X3_RC2_IfcWall_type;
extern entity* IFC4X3_RC2_IfcWallElementedCase_type;
extern entity* IFC4X3_RC2_IfcWallStandardCase_type;
extern entity* IFC4X3_RC2_IfcWallType_type;
extern entity* IFC4X3_RC2_IfcWasteTerminal_type;
extern entity* IFC4X3_RC2_IfcWasteTerminalType_type;
extern entity* IFC4X3_RC2_IfcWaterStratum_type;
extern entity* IFC4X3_RC2_IfcWindow_type;
extern entity* IFC4X3_RC2_IfcWindowLiningProperties_type;
extern entity* IFC4X3_RC2_IfcWindowPanelProperties_type;
extern entity* IFC4X3_RC2_IfcWindowStandardCase_type;
extern entity* IFC4X3_RC2_IfcWindowStyle_type;
extern entity* IFC4X3_RC2_IfcWindowType_type;
extern entity* IFC4X3_RC2_IfcWorkCalendar_type;
extern entity* IFC4X3_RC2_IfcWorkControl_type;
extern entity* IFC4X3_RC2_IfcWorkPlan_type;
extern entity* IFC4X3_RC2_IfcWorkSchedule_type;
extern entity* IFC4X3_RC2_IfcWorkTime_type;
extern entity* IFC4X3_RC2_IfcZShapeProfileDef_type;
extern entity* IFC4X3_RC2_IfcZone_type;
extern type_declaration* IFC4X3_RC2_IfcAbsorbedDoseMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcAccelerationMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcAngularVelocityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcArcIndex_type;
extern type_declaration* IFC4X3_RC2_IfcAreaDensityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcAreaMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcBinary_type;
extern type_declaration* IFC4X3_RC2_IfcBoolean_type;
extern type_declaration* IFC4X3_RC2_IfcBoxAlignment_type;
extern type_declaration* IFC4X3_RC2_IfcCardinalPointReference_type;
extern type_declaration* IFC4X3_RC2_IfcComplexNumber_type;
extern type_declaration* IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcContextDependentMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcCountMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcCurvatureMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcDate_type;
extern type_declaration* IFC4X3_RC2_IfcDateTime_type;
extern type_declaration* IFC4X3_RC2_IfcDayInMonthNumber_type;
extern type_declaration* IFC4X3_RC2_IfcDayInWeekNumber_type;
extern type_declaration* IFC4X3_RC2_IfcDescriptiveMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcDimensionCount_type;
extern type_declaration* IFC4X3_RC2_IfcDoseEquivalentMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcDuration_type;
extern type_declaration* IFC4X3_RC2_IfcDynamicViscosityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcElectricCapacitanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcElectricChargeMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcElectricConductanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcElectricCurrentMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcElectricResistanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcElectricVoltageMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcEnergyMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcFontStyle_type;
extern type_declaration* IFC4X3_RC2_IfcFontVariant_type;
extern type_declaration* IFC4X3_RC2_IfcFontWeight_type;
extern type_declaration* IFC4X3_RC2_IfcForceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcFrequencyMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcGloballyUniqueId_type;
extern type_declaration* IFC4X3_RC2_IfcHeatFluxDensityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcHeatingValueMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcIdentifier_type;
extern type_declaration* IFC4X3_RC2_IfcIlluminanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcInductanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcInteger_type;
extern type_declaration* IFC4X3_RC2_IfcIntegerCountRateMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcIonConcentrationMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcKinematicViscosityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLabel_type;
extern type_declaration* IFC4X3_RC2_IfcLanguageId_type;
extern type_declaration* IFC4X3_RC2_IfcLengthMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLineIndex_type;
extern type_declaration* IFC4X3_RC2_IfcLinearForceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLinearMomentMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLinearStiffnessMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLinearVelocityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLogical_type;
extern type_declaration* IFC4X3_RC2_IfcLuminousFluxMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcLuminousIntensityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMagneticFluxMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMassDensityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMassFlowRateMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMassMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMassPerLengthMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcModulusOfElasticityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMolecularWeightMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMomentOfInertiaMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMonetaryMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcMonthInYearNumber_type;
extern type_declaration* IFC4X3_RC2_IfcNonNegativeLengthMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcNormalisedRatioMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcNumericMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPHMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcParameterValue_type;
extern type_declaration* IFC4X3_RC2_IfcPlanarForceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPlaneAngleMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPositiveInteger_type;
extern type_declaration* IFC4X3_RC2_IfcPositiveLengthMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPositiveRatioMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPowerMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPresentableText_type;
extern type_declaration* IFC4X3_RC2_IfcPressureMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcPropertySetDefinitionSet_type;
extern type_declaration* IFC4X3_RC2_IfcRadioActivityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcRatioMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcReal_type;
extern type_declaration* IFC4X3_RC2_IfcRotationalFrequencyMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcRotationalMassMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcRotationalStiffnessMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSectionModulusMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcShearModulusMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSolidAngleMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSoundPowerLevelMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSoundPowerMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSoundPressureLevelMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSoundPressureMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcSpecularExponent_type;
extern type_declaration* IFC4X3_RC2_IfcSpecularRoughness_type;
extern type_declaration* IFC4X3_RC2_IfcTemperatureGradientMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcText_type;
extern type_declaration* IFC4X3_RC2_IfcTextAlignment_type;
extern type_declaration* IFC4X3_RC2_IfcTextDecoration_type;
extern type_declaration* IFC4X3_RC2_IfcTextFontName_type;
extern type_declaration* IFC4X3_RC2_IfcTextTransformation_type;
extern type_declaration* IFC4X3_RC2_IfcThermalAdmittanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcThermalConductivityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcThermalResistanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcThermalTransmittanceMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcTime_type;
extern type_declaration* IFC4X3_RC2_IfcTimeMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcTimeStamp_type;
extern type_declaration* IFC4X3_RC2_IfcTorqueMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcURIReference_type;
extern type_declaration* IFC4X3_RC2_IfcVaporPermeabilityMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcVolumeMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcWarpingConstantMeasure_type;
extern type_declaration* IFC4X3_RC2_IfcWarpingMomentMeasure_type;
extern enumeration_type* IFC4X3_RC2_IfcActionRequestTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcActionSourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcActionTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcActuatorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAddressTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAirTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAlarmTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAlignmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAnalysisModelTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAnnotationTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcArithmeticOperatorEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAssemblyPlaceEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBSplineCurveForm_type;
extern enumeration_type* IFC4X3_RC2_IfcBSplineSurfaceForm_type;
extern enumeration_type* IFC4X3_RC2_IfcBeamTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBearingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBenchmarkEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBoilerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBooleanOperator_type;
extern enumeration_type* IFC4X3_RC2_IfcBridgePartTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBridgeTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBuildingSystemTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBuiltSystemTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcBurnerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCableFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCableSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcChangeActionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcChillerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcChimneyTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCoilTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcColumnTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCompressorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCondenserTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcConnectionTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcConstraintEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcControllerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCooledBeamTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCoolingTowerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCostItemTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCostScheduleTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCourseTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCoveringTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCrewResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCurtainWallTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcCurveInterpolationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDamperTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDataOriginEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDerivedUnitEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDirectionSenseEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDistributionBoardTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDistributionPortTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDistributionSystemEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDocumentConfidentialityEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDocumentStatusEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDoorPanelOperationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDoorPanelPositionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDoorStyleConstructionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDoorStyleOperationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDoorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDoorTypeOperationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDuctFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDuctSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcDuctSilencerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEarthworksCutTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEarthworksFillTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricMotorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElementAssemblyTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcElementCompositionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEngineTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEvaporatorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEventTriggerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcEventTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFacilityUsageEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFanTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFastenerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFilterTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFlowDirectionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFlowMeterTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFootingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcFurnitureTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcGeographicElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcGeometricProjectionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcGlobalOrLocalEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcGridTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcHeatExchangerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcHumidifierTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcInterceptorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcInternalOrExternalEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcInventoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcJunctionBoxTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcKnotType_type;
extern enumeration_type* IFC4X3_RC2_IfcLaborResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLampTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLayerSetDirectionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLightDistributionCurveEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLightEmissionSourceEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLightFixtureTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLoadGroupTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcLogicalOperatorEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMarineFacilityTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMarinePartTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMemberTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMooringDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcMotorConnectionTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcNavigationElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcNullStyle_type;
extern enumeration_type* IFC4X3_RC2_IfcObjectTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcObjectiveEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcOccupantTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcOpeningElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcOutletTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPermitTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPileConstructionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPileTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPipeFittingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPipeSegmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPlateTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type;
extern enumeration_type* IFC4X3_RC2_IfcProcedureTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcProfileTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcProjectOrderTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcProjectionElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcPumpTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRailTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRailingTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRailwayPartTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRampFlightTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRampTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRecurrenceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReferentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReflectanceMethodEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReinforcingBarRoleEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReinforcingBarTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRoadPartTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRoleEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcRoofTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSIPrefix_type;
extern enumeration_type* IFC4X3_RC2_IfcSIUnitName_type;
extern enumeration_type* IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSectionTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSensorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSequenceEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcShadingDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSignTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSignalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSlabTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSolarDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSpaceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSpatialZoneTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStackTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStairFlightTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStairTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStateEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSubContractResourceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSurfaceSide_type;
extern enumeration_type* IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTankTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTaskDurationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTaskTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTendonAnchorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTendonConduitTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTendonTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTextPath_type;
extern enumeration_type* IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTrackElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTransformerTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTransitionCode_type;
extern enumeration_type* IFC4X3_RC2_IfcTransitionCurveType_type;
extern enumeration_type* IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcTrimmingPreference_type;
extern enumeration_type* IFC4X3_RC2_IfcTubeBundleTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcUnitEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcValveTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcVibrationDamperTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWallTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWasteTerminalTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWindowPanelOperationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWindowPanelPositionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWindowStyleConstructionEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWindowStyleOperationEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWindowTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWindowTypePartitioningEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWorkCalendarTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWorkPlanTypeEnum_type;
extern enumeration_type* IFC4X3_RC2_IfcWorkScheduleTypeEnum_type;
extern select_type* IFC4X3_RC2_IfcActorSelect_type;
extern select_type* IFC4X3_RC2_IfcAppliedValueSelect_type;
extern select_type* IFC4X3_RC2_IfcAxis2Placement_type;
extern select_type* IFC4X3_RC2_IfcBendingParameterSelect_type;
extern select_type* IFC4X3_RC2_IfcBooleanOperand_type;
extern select_type* IFC4X3_RC2_IfcClassificationReferenceSelect_type;
extern select_type* IFC4X3_RC2_IfcClassificationSelect_type;
extern select_type* IFC4X3_RC2_IfcColour_type;
extern select_type* IFC4X3_RC2_IfcColourOrFactor_type;
extern select_type* IFC4X3_RC2_IfcCoordinateReferenceSystemSelect_type;
extern select_type* IFC4X3_RC2_IfcCsgSelect_type;
extern select_type* IFC4X3_RC2_IfcCurveFontOrScaledCurveFontSelect_type;
extern select_type* IFC4X3_RC2_IfcCurveMeasureSelect_type;
extern select_type* IFC4X3_RC2_IfcCurveOnSurface_type;
extern select_type* IFC4X3_RC2_IfcCurveOrEdgeCurve_type;
extern select_type* IFC4X3_RC2_IfcCurveStyleFontSelect_type;
extern select_type* IFC4X3_RC2_IfcDefinitionSelect_type;
extern select_type* IFC4X3_RC2_IfcDerivedMeasureValue_type;
extern select_type* IFC4X3_RC2_IfcDocumentSelect_type;
extern select_type* IFC4X3_RC2_IfcFacilityPartTypeSelect_type;
extern select_type* IFC4X3_RC2_IfcFillStyleSelect_type;
extern select_type* IFC4X3_RC2_IfcGeometricSetSelect_type;
extern select_type* IFC4X3_RC2_IfcGridPlacementDirectionSelect_type;
extern select_type* IFC4X3_RC2_IfcHatchLineDistanceSelect_type;
extern select_type* IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type;
extern select_type* IFC4X3_RC2_IfcInterferenceSelect_type;
extern select_type* IFC4X3_RC2_IfcLayeredItem_type;
extern select_type* IFC4X3_RC2_IfcLibrarySelect_type;
extern select_type* IFC4X3_RC2_IfcLightDistributionDataSourceSelect_type;
extern select_type* IFC4X3_RC2_IfcLinearAxisSelect_type;
extern select_type* IFC4X3_RC2_IfcMaterialSelect_type;
extern select_type* IFC4X3_RC2_IfcMeasureValue_type;
extern select_type* IFC4X3_RC2_IfcMetricValueSelect_type;
extern select_type* IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type;
extern select_type* IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type;
extern select_type* IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type;
extern select_type* IFC4X3_RC2_IfcObjectReferenceSelect_type;
extern select_type* IFC4X3_RC2_IfcPointOrVertexPoint_type;
extern select_type* IFC4X3_RC2_IfcPresentationStyleSelect_type;
extern select_type* IFC4X3_RC2_IfcProcessSelect_type;
extern select_type* IFC4X3_RC2_IfcProductRepresentationSelect_type;
extern select_type* IFC4X3_RC2_IfcProductSelect_type;
extern select_type* IFC4X3_RC2_IfcPropertySetDefinitionSelect_type;
extern select_type* IFC4X3_RC2_IfcResourceObjectSelect_type;
extern select_type* IFC4X3_RC2_IfcResourceSelect_type;
extern select_type* IFC4X3_RC2_IfcRotationalStiffnessSelect_type;
extern select_type* IFC4X3_RC2_IfcSegmentIndexSelect_type;
extern select_type* IFC4X3_RC2_IfcShell_type;
extern select_type* IFC4X3_RC2_IfcSimpleValue_type;
extern select_type* IFC4X3_RC2_IfcSizeSelect_type;
extern select_type* IFC4X3_RC2_IfcSolidOrShell_type;
extern select_type* IFC4X3_RC2_IfcSpaceBoundarySelect_type;
extern select_type* IFC4X3_RC2_IfcSpatialReferenceSelect_type;
extern select_type* IFC4X3_RC2_IfcSpecularHighlightSelect_type;
extern select_type* IFC4X3_RC2_IfcStructuralActivityAssignmentSelect_type;
extern select_type* IFC4X3_RC2_IfcStyleAssignmentSelect_type;
extern select_type* IFC4X3_RC2_IfcSurfaceOrFaceSurface_type;
extern select_type* IFC4X3_RC2_IfcSurfaceStyleElementSelect_type;
extern select_type* IFC4X3_RC2_IfcTextFontSelect_type;
extern select_type* IFC4X3_RC2_IfcTimeOrRatioSelect_type;
extern select_type* IFC4X3_RC2_IfcTranslationalStiffnessSelect_type;
extern select_type* IFC4X3_RC2_IfcTransportElementTypeSelect_type;
extern select_type* IFC4X3_RC2_IfcTrimmingSelect_type;
extern select_type* IFC4X3_RC2_IfcUnit_type;
extern select_type* IFC4X3_RC2_IfcValue_type;
extern select_type* IFC4X3_RC2_IfcVectorOrDirection_type;
extern select_type* IFC4X3_RC2_IfcWarpingStiffnessSelect_type;


const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActionRequestTypeEnum::declaration() const { return *IFC4X3_RC2_IfcActionRequestTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActionRequestTypeEnum::Class() { return *IFC4X3_RC2_IfcActionRequestTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcActionRequestTypeEnum::Value Ifc4x3_rc2::IfcActionRequestTypeEnum::FromString(const std::string& s) {
    if (s == "EMAIL") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_EMAIL;
    if (s == "FAX") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_FAX;
    if (s == "PHONE") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_PHONE;
    if (s == "POST") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_POST;
    if (s == "VERBAL") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_VERBAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::IfcActionRequestType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActionSourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcActionSourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActionSourceTypeEnum::Class() { return *IFC4X3_RC2_IfcActionSourceTypeEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActionTypeEnum::declaration() const { return *IFC4X3_RC2_IfcActionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActionTypeEnum::Class() { return *IFC4X3_RC2_IfcActionTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcActionTypeEnum::IfcActionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcActionTypeEnum::Value Ifc4x3_rc2::IfcActionTypeEnum::FromString(const std::string& s) {
    if (s == "PERMANENT_G") return ::Ifc4x3_rc2::IfcActionTypeEnum::IfcActionType_PERMANENT_G;
    if (s == "VARIABLE_Q") return ::Ifc4x3_rc2::IfcActionTypeEnum::IfcActionType_VARIABLE_Q;
    if (s == "EXTRAORDINARY_A") return ::Ifc4x3_rc2::IfcActionTypeEnum::IfcActionType_EXTRAORDINARY_A;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcActionTypeEnum::IfcActionType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcActionTypeEnum::IfcActionType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActuatorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcActuatorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcActuatorTypeEnum::Class() { return *IFC4X3_RC2_IfcActuatorTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcActuatorTypeEnum::Value Ifc4x3_rc2::IfcActuatorTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRICACTUATOR") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_ELECTRICACTUATOR;
    if (s == "HANDOPERATEDACTUATOR") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_HANDOPERATEDACTUATOR;
    if (s == "HYDRAULICACTUATOR") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_HYDRAULICACTUATOR;
    if (s == "PNEUMATICACTUATOR") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_PNEUMATICACTUATOR;
    if (s == "THERMOSTATICACTUATOR") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_THERMOSTATICACTUATOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcActuatorTypeEnum::IfcActuatorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAddressTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAddressTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAddressTypeEnum::Class() { return *IFC4X3_RC2_IfcAddressTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAddressTypeEnum::Value Ifc4x3_rc2::IfcAddressTypeEnum::FromString(const std::string& s) {
    if (s == "OFFICE") return ::Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressType_OFFICE;
    if (s == "SITE") return ::Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressType_SITE;
    if (s == "HOME") return ::Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressType_HOME;
    if (s == "DISTRIBUTIONPOINT") return ::Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressType_DISTRIBUTIONPOINT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAddressTypeEnum::IfcAddressType_USERDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Class() { return *IFC4X3_RC2_IfcAirTerminalBoxTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAirTerminalBoxTypeEnum::Value Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::FromString(const std::string& s) {
    if (s == "CONSTANTFLOW") return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_CONSTANTFLOW;
    if (s == "VARIABLEFLOWPRESSUREDEPENDANT") return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREDEPENDANT;
    if (s == "VARIABLEFLOWPRESSUREINDEPENDANT") return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_VARIABLEFLOWPRESSUREINDEPENDANT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::IfcAirTerminalBoxType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAirTerminalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAirTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAirTerminalTypeEnum::Class() { return *IFC4X3_RC2_IfcAirTerminalTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAirTerminalTypeEnum::Value Ifc4x3_rc2::IfcAirTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "DIFFUSER") return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalType_DIFFUSER;
    if (s == "GRILLE") return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalType_GRILLE;
    if (s == "LOUVRE") return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalType_LOUVRE;
    if (s == "REGISTER") return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalType_REGISTER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::IfcAirTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Class() { return *IFC4X3_RC2_IfcAirToAirHeatRecoveryTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::FromString(const std::string& s) {
    if (s == "FIXEDPLATECOUNTERFLOWEXCHANGER") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_FIXEDPLATECOUNTERFLOWEXCHANGER;
    if (s == "FIXEDPLATECROSSFLOWEXCHANGER") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_FIXEDPLATECROSSFLOWEXCHANGER;
    if (s == "FIXEDPLATEPARALLELFLOWEXCHANGER") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_FIXEDPLATEPARALLELFLOWEXCHANGER;
    if (s == "ROTARYWHEEL") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_ROTARYWHEEL;
    if (s == "RUNAROUNDCOILLOOP") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_RUNAROUNDCOILLOOP;
    if (s == "HEATPIPE") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_HEATPIPE;
    if (s == "TWINTOWERENTHALPYRECOVERYLOOPS") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_TWINTOWERENTHALPYRECOVERYLOOPS;
    if (s == "THERMOSIPHONSEALEDTUBEHEATEXCHANGERS") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_THERMOSIPHONSEALEDTUBEHEATEXCHANGERS;
    if (s == "THERMOSIPHONCOILTYPEHEATEXCHANGERS") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_THERMOSIPHONCOILTYPEHEATEXCHANGERS;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::IfcAirToAirHeatRecoveryType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlarmTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAlarmTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlarmTypeEnum::Class() { return *IFC4X3_RC2_IfcAlarmTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAlarmTypeEnum::Value Ifc4x3_rc2::IfcAlarmTypeEnum::FromString(const std::string& s) {
    if (s == "BELL") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_BELL;
    if (s == "BREAKGLASSBUTTON") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_BREAKGLASSBUTTON;
    if (s == "LIGHT") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_LIGHT;
    if (s == "MANUALPULLBOX") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_MANUALPULLBOX;
    if (s == "SIREN") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_SIREN;
    if (s == "WHISTLE") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_WHISTLE;
    if (s == "RAILWAYCROCODILE") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_RAILWAYCROCODILE;
    if (s == "RAILWAYDETONATOR") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_RAILWAYDETONATOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAlarmTypeEnum::IfcAlarmType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcAlignmentCantSegmentTypeEnum_type; }

Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

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

const char* Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 7 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CONSTANTCANT", "LINEARTRANSITION", "BIQUADRATICPARABOLA", "BLOSSCURVE", "COSINECURVE", "SINECURVE", "VIENNESEBEND" };
    return names[v];
}

Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CONSTANTCANT") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_CONSTANTCANT;
    if (s == "LINEARTRANSITION") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_LINEARTRANSITION;
    if (s == "BIQUADRATICPARABOLA") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_BIQUADRATICPARABOLA;
    if (s == "BLOSSCURVE") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_BLOSSCURVE;
    if (s == "COSINECURVE") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_COSINECURVE;
    if (s == "SINECURVE") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_SINECURVE;
    if (s == "VIENNESEBEND") return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::IfcAlignmentCantSegmentType_VIENNESEBEND;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcAlignmentHorizontalSegmentTypeEnum_type; }

Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

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

const char* Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 9 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "LINE", "CIRCULARARC", "CLOTHOID", "CUBICSPIRAL", "BIQUADRATICPARABOLA", "BLOSSCURVE", "COSINECURVE", "SINECURVE", "VIENNESEBEND" };
    return names[v];
}

Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "LINE") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_LINE;
    if (s == "CIRCULARARC") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CIRCULARARC;
    if (s == "CLOTHOID") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CLOTHOID;
    if (s == "CUBICSPIRAL") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_CUBICSPIRAL;
    if (s == "BIQUADRATICPARABOLA") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_BIQUADRATICPARABOLA;
    if (s == "BLOSSCURVE") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_BLOSSCURVE;
    if (s == "COSINECURVE") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_COSINECURVE;
    if (s == "SINECURVE") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_SINECURVE;
    if (s == "VIENNESEBEND") return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::IfcAlignmentHorizontalSegmentType_VIENNESEBEND;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAlignmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentTypeEnum::Class() { return *IFC4X3_RC2_IfcAlignmentTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAlignmentTypeEnum::IfcAlignmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAlignmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAlignmentTypeEnum::IfcAlignmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAlignmentTypeEnum::IfcAlignmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcAlignmentVerticalSegmentTypeEnum_type; }

Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

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

const char* Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(Value v) {
    if ( v < 0 || v >= 4 ) throw IfcException("Unable to find keyword in schema");
    const char* names[] = { "CONSTANTGRADIENT", "CIRCULARARC", "PARABOLICARC", "CLOTHOID" };
    return names[v];
}

Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CONSTANTGRADIENT") return ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CONSTANTGRADIENT;
    if (s == "CIRCULARARC") return ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CIRCULARARC;
    if (s == "PARABOLICARC") return ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_PARABOLICARC;
    if (s == "CLOTHOID") return ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::IfcAlignmentVerticalSegmentType_CLOTHOID;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAnalysisModelTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAnalysisModelTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAnalysisModelTypeEnum::Class() { return *IFC4X3_RC2_IfcAnalysisModelTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAnalysisModelTypeEnum::Value Ifc4x3_rc2::IfcAnalysisModelTypeEnum::FromString(const std::string& s) {
    if (s == "IN_PLANE_LOADING_2D") return ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_IN_PLANE_LOADING_2D;
    if (s == "OUT_PLANE_LOADING_2D") return ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_OUT_PLANE_LOADING_2D;
    if (s == "LOADING_3D") return ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_LOADING_3D;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::IfcAnalysisModelType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::Class() { return *IFC4X3_RC2_IfcAnalysisTheoryTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAnalysisTheoryTypeEnum::Value Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::FromString(const std::string& s) {
    if (s == "FIRST_ORDER_THEORY") return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_FIRST_ORDER_THEORY;
    if (s == "SECOND_ORDER_THEORY") return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_SECOND_ORDER_THEORY;
    if (s == "THIRD_ORDER_THEORY") return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_THIRD_ORDER_THEORY;
    if (s == "FULL_NONLINEAR_THEORY") return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_FULL_NONLINEAR_THEORY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::IfcAnalysisTheoryType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAnnotationTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAnnotationTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAnnotationTypeEnum::Class() { return *IFC4X3_RC2_IfcAnnotationTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAnnotationTypeEnum::Value Ifc4x3_rc2::IfcAnnotationTypeEnum::FromString(const std::string& s) {
    if (s == "ASSUMEDPOINT") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_ASSUMEDPOINT;
    if (s == "ASBUILTAREA") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_ASBUILTAREA;
    if (s == "ASBUILTLINE") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_ASBUILTLINE;
    if (s == "NON_PHYSICAL_SIGNAL") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_NON_PHYSICAL_SIGNAL;
    if (s == "ASSUMEDLINE") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_ASSUMEDLINE;
    if (s == "WIDTHEVENT") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_WIDTHEVENT;
    if (s == "ASSUMEDAREA") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_ASSUMEDAREA;
    if (s == "SUPERELEVATIONEVENT") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_SUPERELEVATIONEVENT;
    if (s == "ASBUILTPOINT") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_ASBUILTPOINT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::IfcAnnotationType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcArithmeticOperatorEnum::declaration() const { return *IFC4X3_RC2_IfcArithmeticOperatorEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcArithmeticOperatorEnum::Class() { return *IFC4X3_RC2_IfcArithmeticOperatorEnum_type; }

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

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

Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperatorEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcArithmeticOperatorEnum::Value Ifc4x3_rc2::IfcArithmeticOperatorEnum::FromString(const std::string& s) {
    if (s == "ADD") return ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperator_ADD;
    if (s == "DIVIDE") return ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperator_DIVIDE;
    if (s == "MULTIPLY") return ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperator_MULTIPLY;
    if (s == "SUBTRACT") return ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::IfcArithmeticOperator_SUBTRACT;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAssemblyPlaceEnum::declaration() const { return *IFC4X3_RC2_IfcAssemblyPlaceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAssemblyPlaceEnum::Class() { return *IFC4X3_RC2_IfcAssemblyPlaceEnum_type; }

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

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

Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlaceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAssemblyPlaceEnum::Value Ifc4x3_rc2::IfcAssemblyPlaceEnum::FromString(const std::string& s) {
    if (s == "SITE") return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlace_SITE;
    if (s == "FACTORY") return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlace_FACTORY;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::IfcAssemblyPlace_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Class() { return *IFC4X3_RC2_IfcAudioVisualApplianceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAudioVisualApplianceTypeEnum::Value Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "AMPLIFIER") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_AMPLIFIER;
    if (s == "CAMERA") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_CAMERA;
    if (s == "DISPLAY") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_DISPLAY;
    if (s == "MICROPHONE") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_MICROPHONE;
    if (s == "PLAYER") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_PLAYER;
    if (s == "PROJECTOR") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_PROJECTOR;
    if (s == "RECEIVER") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_RECEIVER;
    if (s == "SPEAKER") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_SPEAKER;
    if (s == "SWITCHER") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_SWITCHER;
    if (s == "TELEPHONE") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_TELEPHONE;
    if (s == "TUNER") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_TUNER;
    if (s == "RAILWAY_COMMUNICATION_TERMINAL") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_RAILWAY_COMMUNICATION_TERMINAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::IfcAudioVisualApplianceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBSplineCurveForm::declaration() const { return *IFC4X3_RC2_IfcBSplineCurveForm_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBSplineCurveForm::Class() { return *IFC4X3_RC2_IfcBSplineCurveForm_type; }

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

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

Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBSplineCurveForm::Value Ifc4x3_rc2::IfcBSplineCurveForm::FromString(const std::string& s) {
    if (s == "POLYLINE_FORM") return ::Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm_POLYLINE_FORM;
    if (s == "CIRCULAR_ARC") return ::Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm_CIRCULAR_ARC;
    if (s == "ELLIPTIC_ARC") return ::Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm_ELLIPTIC_ARC;
    if (s == "PARABOLIC_ARC") return ::Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm_PARABOLIC_ARC;
    if (s == "HYPERBOLIC_ARC") return ::Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm_HYPERBOLIC_ARC;
    if (s == "UNSPECIFIED") return ::Ifc4x3_rc2::IfcBSplineCurveForm::IfcBSplineCurveForm_UNSPECIFIED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBSplineSurfaceForm::declaration() const { return *IFC4X3_RC2_IfcBSplineSurfaceForm_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBSplineSurfaceForm::Class() { return *IFC4X3_RC2_IfcBSplineSurfaceForm_type; }

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

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

Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBSplineSurfaceForm::Value Ifc4x3_rc2::IfcBSplineSurfaceForm::FromString(const std::string& s) {
    if (s == "PLANE_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_PLANE_SURF;
    if (s == "CYLINDRICAL_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_CYLINDRICAL_SURF;
    if (s == "CONICAL_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_CONICAL_SURF;
    if (s == "SPHERICAL_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_SPHERICAL_SURF;
    if (s == "TOROIDAL_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_TOROIDAL_SURF;
    if (s == "SURF_OF_REVOLUTION") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_SURF_OF_REVOLUTION;
    if (s == "RULED_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_RULED_SURF;
    if (s == "GENERALISED_CONE") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_GENERALISED_CONE;
    if (s == "QUADRIC_SURF") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_QUADRIC_SURF;
    if (s == "SURF_OF_LINEAR_EXTRUSION") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_SURF_OF_LINEAR_EXTRUSION;
    if (s == "UNSPECIFIED") return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::IfcBSplineSurfaceForm_UNSPECIFIED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBeamTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBeamTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBeamTypeEnum::Class() { return *IFC4X3_RC2_IfcBeamTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBeamTypeEnum::Value Ifc4x3_rc2::IfcBeamTypeEnum::FromString(const std::string& s) {
    if (s == "BEAM") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_BEAM;
    if (s == "JOIST") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_JOIST;
    if (s == "HOLLOWCORE") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_HOLLOWCORE;
    if (s == "LINTEL") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_LINTEL;
    if (s == "SPANDREL") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_SPANDREL;
    if (s == "T_BEAM") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_T_BEAM;
    if (s == "GIRDER_SEGMENT") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_GIRDER_SEGMENT;
    if (s == "DIAPHRAGM") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_DIAPHRAGM;
    if (s == "PIERCAP") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_PIERCAP;
    if (s == "HATSTONE") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_HATSTONE;
    if (s == "CORNICE") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_CORNICE;
    if (s == "EDGEBEAM") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_EDGEBEAM;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBeamTypeEnum::IfcBeamType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::declaration() const { return *IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::Class() { return *IFC4X3_RC2_IfcBearingTypeDisplacementEnum_type; }

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

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

Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacementEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBearingTypeDisplacementEnum::Value Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::FromString(const std::string& s) {
    if (s == "FIXED_MOVEMENT") return ::Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_FIXED_MOVEMENT;
    if (s == "GUIDED_LONGITUDINAL") return ::Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_GUIDED_LONGITUDINAL;
    if (s == "GUIDED_TRANSVERSAL") return ::Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_GUIDED_TRANSVERSAL;
    if (s == "FREE_MOVEMENT") return ::Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_FREE_MOVEMENT;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBearingTypeDisplacementEnum::IfcBearingTypeDisplacement_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBearingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBearingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBearingTypeEnum::Class() { return *IFC4X3_RC2_IfcBearingTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBearingTypeEnum::Value Ifc4x3_rc2::IfcBearingTypeEnum::FromString(const std::string& s) {
    if (s == "CYLINDRICAL") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_CYLINDRICAL;
    if (s == "SPHERICAL") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_SPHERICAL;
    if (s == "ELASTOMERIC") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_ELASTOMERIC;
    if (s == "POT") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_POT;
    if (s == "GUIDE") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_GUIDE;
    if (s == "ROCKER") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_ROCKER;
    if (s == "ROLLER") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_ROLLER;
    if (s == "DISK") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_DISK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBearingTypeEnum::IfcBearingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBenchmarkEnum::declaration() const { return *IFC4X3_RC2_IfcBenchmarkEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBenchmarkEnum::Class() { return *IFC4X3_RC2_IfcBenchmarkEnum_type; }

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

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

Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmarkEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBenchmarkEnum::Value Ifc4x3_rc2::IfcBenchmarkEnum::FromString(const std::string& s) {
    if (s == "GREATERTHAN") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_GREATERTHAN;
    if (s == "GREATERTHANOREQUALTO") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_GREATERTHANOREQUALTO;
    if (s == "LESSTHAN") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_LESSTHAN;
    if (s == "LESSTHANOREQUALTO") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_LESSTHANOREQUALTO;
    if (s == "EQUALTO") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_EQUALTO;
    if (s == "NOTEQUALTO") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_NOTEQUALTO;
    if (s == "INCLUDES") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_INCLUDES;
    if (s == "NOTINCLUDES") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_NOTINCLUDES;
    if (s == "INCLUDEDIN") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_INCLUDEDIN;
    if (s == "NOTINCLUDEDIN") return ::Ifc4x3_rc2::IfcBenchmarkEnum::IfcBenchmark_NOTINCLUDEDIN;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBoilerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBoilerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBoilerTypeEnum::Class() { return *IFC4X3_RC2_IfcBoilerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBoilerTypeEnum::Value Ifc4x3_rc2::IfcBoilerTypeEnum::FromString(const std::string& s) {
    if (s == "WATER") return ::Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerType_WATER;
    if (s == "STEAM") return ::Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerType_STEAM;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBoilerTypeEnum::IfcBoilerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBooleanOperator::declaration() const { return *IFC4X3_RC2_IfcBooleanOperator_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBooleanOperator::Class() { return *IFC4X3_RC2_IfcBooleanOperator_type; }

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

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

Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBooleanOperator::Value Ifc4x3_rc2::IfcBooleanOperator::FromString(const std::string& s) {
    if (s == "UNION") return ::Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator_UNION;
    if (s == "INTERSECTION") return ::Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator_INTERSECTION;
    if (s == "DIFFERENCE") return ::Ifc4x3_rc2::IfcBooleanOperator::IfcBooleanOperator_DIFFERENCE;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBridgePartTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBridgePartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBridgePartTypeEnum::Class() { return *IFC4X3_RC2_IfcBridgePartTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBridgePartTypeEnum::Value Ifc4x3_rc2::IfcBridgePartTypeEnum::FromString(const std::string& s) {
    if (s == "ABUTMENT") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_ABUTMENT;
    if (s == "DECK") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_DECK;
    if (s == "DECK_SEGMENT") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_DECK_SEGMENT;
    if (s == "FOUNDATION") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_FOUNDATION;
    if (s == "PIER") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_PIER;
    if (s == "PIER_SEGMENT") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_PIER_SEGMENT;
    if (s == "PYLON") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_PYLON;
    if (s == "SUBSTRUCTURE") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_SUBSTRUCTURE;
    if (s == "SUPERSTRUCTURE") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_SUPERSTRUCTURE;
    if (s == "SURFACESTRUCTURE") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_SURFACESTRUCTURE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBridgePartTypeEnum::IfcBridgePartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBridgeTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBridgeTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBridgeTypeEnum::Class() { return *IFC4X3_RC2_IfcBridgeTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBridgeTypeEnum::Value Ifc4x3_rc2::IfcBridgeTypeEnum::FromString(const std::string& s) {
    if (s == "ARCHED") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_ARCHED;
    if (s == "CABLE_STAYED") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_CABLE_STAYED;
    if (s == "CANTILEVER") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_CANTILEVER;
    if (s == "CULVERT") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_CULVERT;
    if (s == "FRAMEWORK") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_FRAMEWORK;
    if (s == "GIRDER") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_GIRDER;
    if (s == "SUSPENSION") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_SUSPENSION;
    if (s == "TRUSS") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_TRUSS;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBridgeTypeEnum::IfcBridgeType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Class() { return *IFC4X3_RC2_IfcBuildingElementPartTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingElementPartTypeEnum::Value Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::FromString(const std::string& s) {
    if (s == "INSULATION") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_INSULATION;
    if (s == "PRECASTPANEL") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_PRECASTPANEL;
    if (s == "APRON") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_APRON;
    if (s == "ARMOURUNIT") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_ARMOURUNIT;
    if (s == "SAFETYCAGE") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_SAFETYCAGE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::IfcBuildingElementPartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Class() { return *IFC4X3_RC2_IfcBuildingElementProxyTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingElementProxyTypeEnum::Value Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::FromString(const std::string& s) {
    if (s == "COMPLEX") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_COMPLEX;
    if (s == "ELEMENT") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_ELEMENT;
    if (s == "PARTIAL") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_PARTIAL;
    if (s == "PROVISIONFORVOID") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_PROVISIONFORVOID;
    if (s == "PROVISIONFORSPACE") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_PROVISIONFORSPACE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::IfcBuildingElementProxyType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuildingSystemTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBuildingSystemTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuildingSystemTypeEnum::Class() { return *IFC4X3_RC2_IfcBuildingSystemTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingSystemTypeEnum::Value Ifc4x3_rc2::IfcBuildingSystemTypeEnum::FromString(const std::string& s) {
    if (s == "FENESTRATION") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_FENESTRATION;
    if (s == "FOUNDATION") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_FOUNDATION;
    if (s == "LOADBEARING") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_LOADBEARING;
    if (s == "OUTERSHELL") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_OUTERSHELL;
    if (s == "SHADING") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_SHADING;
    if (s == "TRANSPORT") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_TRANSPORT;
    if (s == "REINFORCING") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_REINFORCING;
    if (s == "PRESTRESSING") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_PRESTRESSING;
    if (s == "EROSIONPREVENTION") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_EROSIONPREVENTION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::IfcBuildingSystemType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuiltSystemTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBuiltSystemTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBuiltSystemTypeEnum::Class() { return *IFC4X3_RC2_IfcBuiltSystemTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuiltSystemTypeEnum::Value Ifc4x3_rc2::IfcBuiltSystemTypeEnum::FromString(const std::string& s) {
    if (s == "REINFORCING") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_REINFORCING;
    if (s == "MOORING") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_MOORING;
    if (s == "OUTERSHELL") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_OUTERSHELL;
    if (s == "TRACKCIRCUIT") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_TRACKCIRCUIT;
    if (s == "EROSIONPREVENTION") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_EROSIONPREVENTION;
    if (s == "FOUNDATION") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_FOUNDATION;
    if (s == "LOADBEARING") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_LOADBEARING;
    if (s == "SHADING") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_SHADING;
    if (s == "FENESTRATION") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_FENESTRATION;
    if (s == "MOORINGSYSTEM") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_MOORINGSYSTEM;
    if (s == "TRANSPORT") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_TRANSPORT;
    if (s == "PRESTRESSING") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_PRESTRESSING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::IfcBuiltSystemType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBurnerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcBurnerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcBurnerTypeEnum::Class() { return *IFC4X3_RC2_IfcBurnerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcBurnerTypeEnum::IfcBurnerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBurnerTypeEnum::Value Ifc4x3_rc2::IfcBurnerTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcBurnerTypeEnum::IfcBurnerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcBurnerTypeEnum::IfcBurnerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Class() { return *IFC4X3_RC2_IfcCableCarrierFittingTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableCarrierFittingTypeEnum::Value Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::FromString(const std::string& s) {
    if (s == "BEND") return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_BEND;
    if (s == "CROSS") return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_CROSS;
    if (s == "REDUCER") return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_REDUCER;
    if (s == "TEE") return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_TEE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::IfcCableCarrierFittingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcCableCarrierSegmentTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableCarrierSegmentTypeEnum::Value Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CABLELADDERSEGMENT") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLELADDERSEGMENT;
    if (s == "CABLETRAYSEGMENT") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLETRAYSEGMENT;
    if (s == "CABLETRUNKINGSEGMENT") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLETRUNKINGSEGMENT;
    if (s == "CONDUITSEGMENT") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CONDUITSEGMENT;
    if (s == "CABLEBRACKET") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CABLEBRACKET;
    if (s == "CATENARYWIRE") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_CATENARYWIRE;
    if (s == "DROPPER") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_DROPPER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::IfcCableCarrierSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableFittingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCableFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableFittingTypeEnum::Class() { return *IFC4X3_RC2_IfcCableFittingTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableFittingTypeEnum::Value Ifc4x3_rc2::IfcCableFittingTypeEnum::FromString(const std::string& s) {
    if (s == "CONNECTOR") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_CONNECTOR;
    if (s == "ENTRY") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_ENTRY;
    if (s == "EXIT") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_EXIT;
    if (s == "JUNCTION") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_JUNCTION;
    if (s == "TRANSITION") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_TRANSITION;
    if (s == "FANOUT") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_FANOUT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::IfcCableFittingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCableSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCableSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcCableSegmentTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableSegmentTypeEnum::Value Ifc4x3_rc2::IfcCableSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "BUSBARSEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_BUSBARSEGMENT;
    if (s == "CABLESEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_CABLESEGMENT;
    if (s == "CONDUCTORSEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_CONDUCTORSEGMENT;
    if (s == "CORESEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_CORESEGMENT;
    if (s == "CONTACTWIRESEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_CONTACTWIRESEGMENT;
    if (s == "FIBERSEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_FIBERSEGMENT;
    if (s == "FIBERTUBE") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_FIBERTUBE;
    if (s == "OPTICALCABLESEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_OPTICALCABLESEGMENT;
    if (s == "STITCHWIRE") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_STITCHWIRE;
    if (s == "WIREPAIRSEGMENT") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_WIREPAIRSEGMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::IfcCableSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Class() { return *IFC4X3_RC2_IfcCaissonFoundationTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCaissonFoundationTypeEnum::Value Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::FromString(const std::string& s) {
    if (s == "WELL") return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_WELL;
    if (s == "CAISSON") return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_CAISSON;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::IfcCaissonFoundationType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcChangeActionEnum::declaration() const { return *IFC4X3_RC2_IfcChangeActionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcChangeActionEnum::Class() { return *IFC4X3_RC2_IfcChangeActionEnum_type; }

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

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

Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeActionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcChangeActionEnum::Value Ifc4x3_rc2::IfcChangeActionEnum::FromString(const std::string& s) {
    if (s == "NOCHANGE") return ::Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeAction_NOCHANGE;
    if (s == "MODIFIED") return ::Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeAction_MODIFIED;
    if (s == "ADDED") return ::Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeAction_ADDED;
    if (s == "DELETED") return ::Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeAction_DELETED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcChangeActionEnum::IfcChangeAction_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcChillerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcChillerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcChillerTypeEnum::Class() { return *IFC4X3_RC2_IfcChillerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcChillerTypeEnum::Value Ifc4x3_rc2::IfcChillerTypeEnum::FromString(const std::string& s) {
    if (s == "AIRCOOLED") return ::Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerType_AIRCOOLED;
    if (s == "WATERCOOLED") return ::Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerType_WATERCOOLED;
    if (s == "HEATRECOVERY") return ::Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerType_HEATRECOVERY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcChillerTypeEnum::IfcChillerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcChimneyTypeEnum::declaration() const { return *IFC4X3_RC2_IfcChimneyTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcChimneyTypeEnum::Class() { return *IFC4X3_RC2_IfcChimneyTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcChimneyTypeEnum::IfcChimneyTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcChimneyTypeEnum::Value Ifc4x3_rc2::IfcChimneyTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcChimneyTypeEnum::IfcChimneyType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcChimneyTypeEnum::IfcChimneyType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCoilTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCoilTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCoilTypeEnum::Class() { return *IFC4X3_RC2_IfcCoilTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCoilTypeEnum::Value Ifc4x3_rc2::IfcCoilTypeEnum::FromString(const std::string& s) {
    if (s == "DXCOOLINGCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_DXCOOLINGCOIL;
    if (s == "ELECTRICHEATINGCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_ELECTRICHEATINGCOIL;
    if (s == "GASHEATINGCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_GASHEATINGCOIL;
    if (s == "HYDRONICCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_HYDRONICCOIL;
    if (s == "STEAMHEATINGCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_STEAMHEATINGCOIL;
    if (s == "WATERCOOLINGCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_WATERCOOLINGCOIL;
    if (s == "WATERHEATINGCOIL") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_WATERHEATINGCOIL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCoilTypeEnum::IfcCoilType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcColumnTypeEnum::declaration() const { return *IFC4X3_RC2_IfcColumnTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcColumnTypeEnum::Class() { return *IFC4X3_RC2_IfcColumnTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcColumnTypeEnum::Value Ifc4x3_rc2::IfcColumnTypeEnum::FromString(const std::string& s) {
    if (s == "COLUMN") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_COLUMN;
    if (s == "PILASTER") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_PILASTER;
    if (s == "PIERSTEM") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_PIERSTEM;
    if (s == "PIERSTEM_SEGMENT") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_PIERSTEM_SEGMENT;
    if (s == "STANDCOLUMN") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_STANDCOLUMN;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcColumnTypeEnum::IfcColumnType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Class() { return *IFC4X3_RC2_IfcCommunicationsApplianceTypeEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::declaration() const { return *IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Class() { return *IFC4X3_RC2_IfcComplexPropertyTemplateTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcComplexPropertyTemplateTypeEnum::Value Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::FromString(const std::string& s) {
    if (s == "P_COMPLEX") return ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateType_P_COMPLEX;
    if (s == "Q_COMPLEX") return ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::IfcComplexPropertyTemplateType_Q_COMPLEX;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCompressorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCompressorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCompressorTypeEnum::Class() { return *IFC4X3_RC2_IfcCompressorTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCompressorTypeEnum::Value Ifc4x3_rc2::IfcCompressorTypeEnum::FromString(const std::string& s) {
    if (s == "DYNAMIC") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_DYNAMIC;
    if (s == "RECIPROCATING") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_RECIPROCATING;
    if (s == "ROTARY") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_ROTARY;
    if (s == "SCROLL") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_SCROLL;
    if (s == "TROCHOIDAL") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_TROCHOIDAL;
    if (s == "SINGLESTAGE") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_SINGLESTAGE;
    if (s == "BOOSTER") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_BOOSTER;
    if (s == "OPENTYPE") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_OPENTYPE;
    if (s == "HERMETIC") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_HERMETIC;
    if (s == "SEMIHERMETIC") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_SEMIHERMETIC;
    if (s == "WELDEDSHELLHERMETIC") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_WELDEDSHELLHERMETIC;
    if (s == "ROLLINGPISTON") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_ROLLINGPISTON;
    if (s == "ROTARYVANE") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_ROTARYVANE;
    if (s == "SINGLESCREW") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_SINGLESCREW;
    if (s == "TWINSCREW") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_TWINSCREW;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCompressorTypeEnum::IfcCompressorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCondenserTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCondenserTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCondenserTypeEnum::Class() { return *IFC4X3_RC2_IfcCondenserTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCondenserTypeEnum::Value Ifc4x3_rc2::IfcCondenserTypeEnum::FromString(const std::string& s) {
    if (s == "AIRCOOLED") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_AIRCOOLED;
    if (s == "EVAPORATIVECOOLED") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_EVAPORATIVECOOLED;
    if (s == "WATERCOOLED") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLED;
    if (s == "WATERCOOLEDBRAZEDPLATE") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDBRAZEDPLATE;
    if (s == "WATERCOOLEDSHELLCOIL") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDSHELLCOIL;
    if (s == "WATERCOOLEDSHELLTUBE") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDSHELLTUBE;
    if (s == "WATERCOOLEDTUBEINTUBE") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_WATERCOOLEDTUBEINTUBE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCondenserTypeEnum::IfcCondenserType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConnectionTypeEnum::declaration() const { return *IFC4X3_RC2_IfcConnectionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConnectionTypeEnum::Class() { return *IFC4X3_RC2_IfcConnectionTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConnectionTypeEnum::Value Ifc4x3_rc2::IfcConnectionTypeEnum::FromString(const std::string& s) {
    if (s == "ATPATH") return ::Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionType_ATPATH;
    if (s == "ATSTART") return ::Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionType_ATSTART;
    if (s == "ATEND") return ::Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionType_ATEND;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcConnectionTypeEnum::IfcConnectionType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstraintEnum::declaration() const { return *IFC4X3_RC2_IfcConstraintEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstraintEnum::Class() { return *IFC4X3_RC2_IfcConstraintEnum_type; }

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

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

Ifc4x3_rc2::IfcConstraintEnum::IfcConstraintEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstraintEnum::Value Ifc4x3_rc2::IfcConstraintEnum::FromString(const std::string& s) {
    if (s == "HARD") return ::Ifc4x3_rc2::IfcConstraintEnum::IfcConstraint_HARD;
    if (s == "SOFT") return ::Ifc4x3_rc2::IfcConstraintEnum::IfcConstraint_SOFT;
    if (s == "ADVISORY") return ::Ifc4x3_rc2::IfcConstraintEnum::IfcConstraint_ADVISORY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcConstraintEnum::IfcConstraint_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcConstraintEnum::IfcConstraint_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Class() { return *IFC4X3_RC2_IfcConstructionEquipmentResourceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionEquipmentResourceTypeEnum::Value Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::FromString(const std::string& s) {
    if (s == "DEMOLISHING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_DEMOLISHING;
    if (s == "EARTHMOVING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_EARTHMOVING;
    if (s == "ERECTING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_ERECTING;
    if (s == "HEATING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_HEATING;
    if (s == "LIGHTING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_LIGHTING;
    if (s == "PAVING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_PAVING;
    if (s == "PUMPING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_PUMPING;
    if (s == "TRANSPORTING") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_TRANSPORTING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::IfcConstructionEquipmentResourceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Class() { return *IFC4X3_RC2_IfcConstructionMaterialResourceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionMaterialResourceTypeEnum::Value Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::FromString(const std::string& s) {
    if (s == "AGGREGATES") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_AGGREGATES;
    if (s == "CONCRETE") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_CONCRETE;
    if (s == "DRYWALL") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_DRYWALL;
    if (s == "FUEL") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_FUEL;
    if (s == "GYPSUM") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_GYPSUM;
    if (s == "MASONRY") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_MASONRY;
    if (s == "METAL") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_METAL;
    if (s == "PLASTIC") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_PLASTIC;
    if (s == "WOOD") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_WOOD;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_NOTDEFINED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::IfcConstructionMaterialResourceType_USERDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Class() { return *IFC4X3_RC2_IfcConstructionProductResourceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionProductResourceTypeEnum::Value Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::FromString(const std::string& s) {
    if (s == "ASSEMBLY") return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_ASSEMBLY;
    if (s == "FORMWORK") return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_FORMWORK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::IfcConstructionProductResourceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcControllerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcControllerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcControllerTypeEnum::Class() { return *IFC4X3_RC2_IfcControllerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcControllerTypeEnum::Value Ifc4x3_rc2::IfcControllerTypeEnum::FromString(const std::string& s) {
    if (s == "FLOATING") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_FLOATING;
    if (s == "PROGRAMMABLE") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_PROGRAMMABLE;
    if (s == "PROPORTIONAL") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_PROPORTIONAL;
    if (s == "MULTIPOSITION") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_MULTIPOSITION;
    if (s == "TWOPOSITION") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_TWOPOSITION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcControllerTypeEnum::IfcControllerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcConveyorSegmentTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConveyorSegmentTypeEnum::Value Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CHUTECONVEYOR") return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_CHUTECONVEYOR;
    if (s == "BELTCONVEYOR") return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_BELTCONVEYOR;
    if (s == "SCREWCONVEYOR") return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_SCREWCONVEYOR;
    if (s == "BUCKETCONVEYOR") return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_BUCKETCONVEYOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::IfcConveyorSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCooledBeamTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCooledBeamTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCooledBeamTypeEnum::Class() { return *IFC4X3_RC2_IfcCooledBeamTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCooledBeamTypeEnum::Value Ifc4x3_rc2::IfcCooledBeamTypeEnum::FromString(const std::string& s) {
    if (s == "ACTIVE") return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamType_ACTIVE;
    if (s == "PASSIVE") return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamType_PASSIVE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::IfcCooledBeamType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCoolingTowerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCoolingTowerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Class() { return *IFC4X3_RC2_IfcCoolingTowerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCoolingTowerTypeEnum::Value Ifc4x3_rc2::IfcCoolingTowerTypeEnum::FromString(const std::string& s) {
    if (s == "NATURALDRAFT") return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_NATURALDRAFT;
    if (s == "MECHANICALINDUCEDDRAFT") return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_MECHANICALINDUCEDDRAFT;
    if (s == "MECHANICALFORCEDDRAFT") return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_MECHANICALFORCEDDRAFT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::IfcCoolingTowerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCostItemTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCostItemTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCostItemTypeEnum::Class() { return *IFC4X3_RC2_IfcCostItemTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCostItemTypeEnum::IfcCostItemTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCostItemTypeEnum::Value Ifc4x3_rc2::IfcCostItemTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCostItemTypeEnum::IfcCostItemType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCostItemTypeEnum::IfcCostItemType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCostScheduleTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCostScheduleTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCostScheduleTypeEnum::Class() { return *IFC4X3_RC2_IfcCostScheduleTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCostScheduleTypeEnum::Value Ifc4x3_rc2::IfcCostScheduleTypeEnum::FromString(const std::string& s) {
    if (s == "BUDGET") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_BUDGET;
    if (s == "COSTPLAN") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_COSTPLAN;
    if (s == "ESTIMATE") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_ESTIMATE;
    if (s == "TENDER") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_TENDER;
    if (s == "PRICEDBILLOFQUANTITIES") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_PRICEDBILLOFQUANTITIES;
    if (s == "UNPRICEDBILLOFQUANTITIES") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_UNPRICEDBILLOFQUANTITIES;
    if (s == "SCHEDULEOFRATES") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_SCHEDULEOFRATES;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::IfcCostScheduleType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCourseTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCourseTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCourseTypeEnum::Class() { return *IFC4X3_RC2_IfcCourseTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCourseTypeEnum::Value Ifc4x3_rc2::IfcCourseTypeEnum::FromString(const std::string& s) {
    if (s == "ARMOUR") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_ARMOUR;
    if (s == "FILTER") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_FILTER;
    if (s == "BALLASTBED") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_BALLASTBED;
    if (s == "CORE") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_CORE;
    if (s == "PAVEMENT") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_PAVEMENT;
    if (s == "PROTECTION") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_PROTECTION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCourseTypeEnum::IfcCourseType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCoveringTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCoveringTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCoveringTypeEnum::Class() { return *IFC4X3_RC2_IfcCoveringTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCoveringTypeEnum::Value Ifc4x3_rc2::IfcCoveringTypeEnum::FromString(const std::string& s) {
    if (s == "CEILING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_CEILING;
    if (s == "FLOORING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_FLOORING;
    if (s == "CLADDING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_CLADDING;
    if (s == "ROOFING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_ROOFING;
    if (s == "MOLDING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_MOLDING;
    if (s == "SKIRTINGBOARD") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_SKIRTINGBOARD;
    if (s == "INSULATION") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_INSULATION;
    if (s == "MEMBRANE") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_MEMBRANE;
    if (s == "SLEEVING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_SLEEVING;
    if (s == "WRAPPING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_WRAPPING;
    if (s == "COPING") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_COPING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCoveringTypeEnum::IfcCoveringType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCrewResourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCrewResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCrewResourceTypeEnum::Class() { return *IFC4X3_RC2_IfcCrewResourceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCrewResourceTypeEnum::Value Ifc4x3_rc2::IfcCrewResourceTypeEnum::FromString(const std::string& s) {
    if (s == "OFFICE") return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceType_OFFICE;
    if (s == "SITE") return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceType_SITE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::IfcCrewResourceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCurtainWallTypeEnum::declaration() const { return *IFC4X3_RC2_IfcCurtainWallTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCurtainWallTypeEnum::Class() { return *IFC4X3_RC2_IfcCurtainWallTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcCurtainWallTypeEnum::IfcCurtainWallTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCurtainWallTypeEnum::Value Ifc4x3_rc2::IfcCurtainWallTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::IfcCurtainWallType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::IfcCurtainWallType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCurveInterpolationEnum::declaration() const { return *IFC4X3_RC2_IfcCurveInterpolationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcCurveInterpolationEnum::Class() { return *IFC4X3_RC2_IfcCurveInterpolationEnum_type; }

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

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

Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCurveInterpolationEnum::Value Ifc4x3_rc2::IfcCurveInterpolationEnum::FromString(const std::string& s) {
    if (s == "LINEAR") return ::Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolation_LINEAR;
    if (s == "LOG_LINEAR") return ::Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolation_LOG_LINEAR;
    if (s == "LOG_LOG") return ::Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolation_LOG_LOG;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcCurveInterpolationEnum::IfcCurveInterpolation_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDamperTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDamperTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDamperTypeEnum::Class() { return *IFC4X3_RC2_IfcDamperTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDamperTypeEnum::Value Ifc4x3_rc2::IfcDamperTypeEnum::FromString(const std::string& s) {
    if (s == "BACKDRAFTDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_BACKDRAFTDAMPER;
    if (s == "BALANCINGDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_BALANCINGDAMPER;
    if (s == "BLASTDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_BLASTDAMPER;
    if (s == "CONTROLDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_CONTROLDAMPER;
    if (s == "FIREDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_FIREDAMPER;
    if (s == "FIRESMOKEDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_FIRESMOKEDAMPER;
    if (s == "FUMEHOODEXHAUST") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_FUMEHOODEXHAUST;
    if (s == "GRAVITYDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_GRAVITYDAMPER;
    if (s == "GRAVITYRELIEFDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_GRAVITYRELIEFDAMPER;
    if (s == "RELIEFDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_RELIEFDAMPER;
    if (s == "SMOKEDAMPER") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_SMOKEDAMPER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDamperTypeEnum::IfcDamperType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDataOriginEnum::declaration() const { return *IFC4X3_RC2_IfcDataOriginEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDataOriginEnum::Class() { return *IFC4X3_RC2_IfcDataOriginEnum_type; }

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

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

Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOriginEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDataOriginEnum::Value Ifc4x3_rc2::IfcDataOriginEnum::FromString(const std::string& s) {
    if (s == "MEASURED") return ::Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOrigin_MEASURED;
    if (s == "PREDICTED") return ::Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOrigin_PREDICTED;
    if (s == "SIMULATED") return ::Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOrigin_SIMULATED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOrigin_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDataOriginEnum::IfcDataOrigin_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDerivedUnitEnum::declaration() const { return *IFC4X3_RC2_IfcDerivedUnitEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDerivedUnitEnum::Class() { return *IFC4X3_RC2_IfcDerivedUnitEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDirectionSenseEnum::declaration() const { return *IFC4X3_RC2_IfcDirectionSenseEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDirectionSenseEnum::Class() { return *IFC4X3_RC2_IfcDirectionSenseEnum_type; }

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

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

Ifc4x3_rc2::IfcDirectionSenseEnum::IfcDirectionSenseEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDirectionSenseEnum::Value Ifc4x3_rc2::IfcDirectionSenseEnum::FromString(const std::string& s) {
    if (s == "POSITIVE") return ::Ifc4x3_rc2::IfcDirectionSenseEnum::IfcDirectionSense_POSITIVE;
    if (s == "NEGATIVE") return ::Ifc4x3_rc2::IfcDirectionSenseEnum::IfcDirectionSense_NEGATIVE;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Class() { return *IFC4X3_RC2_IfcDiscreteAccessoryTypeEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionBoardTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDistributionBoardTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Class() { return *IFC4X3_RC2_IfcDistributionBoardTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDistributionBoardTypeEnum::Value Ifc4x3_rc2::IfcDistributionBoardTypeEnum::FromString(const std::string& s) {
    if (s == "SWITCHBOARD") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_SWITCHBOARD;
    if (s == "CONSUMERUNIT") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_CONSUMERUNIT;
    if (s == "MOTORCONTROLCENTRE") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_MOTORCONTROLCENTRE;
    if (s == "DISTRIBUTIONFRAME") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_DISTRIBUTIONFRAME;
    if (s == "DISTRIBUTIONBOARD") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_DISTRIBUTIONBOARD;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::IfcDistributionBoardType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Class() { return *IFC4X3_RC2_IfcDistributionChamberElementTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDistributionChamberElementTypeEnum::Value Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::FromString(const std::string& s) {
    if (s == "FORMEDDUCT") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_FORMEDDUCT;
    if (s == "INSPECTIONCHAMBER") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_INSPECTIONCHAMBER;
    if (s == "INSPECTIONPIT") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_INSPECTIONPIT;
    if (s == "MANHOLE") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_MANHOLE;
    if (s == "METERCHAMBER") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_METERCHAMBER;
    if (s == "SUMP") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_SUMP;
    if (s == "TRENCH") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_TRENCH;
    if (s == "VALVECHAMBER") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_VALVECHAMBER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::IfcDistributionChamberElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionPortTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDistributionPortTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionPortTypeEnum::Class() { return *IFC4X3_RC2_IfcDistributionPortTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDistributionPortTypeEnum::Value Ifc4x3_rc2::IfcDistributionPortTypeEnum::FromString(const std::string& s) {
    if (s == "CABLE") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_CABLE;
    if (s == "CABLECARRIER") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_CABLECARRIER;
    if (s == "DUCT") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_DUCT;
    if (s == "PIPE") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_PIPE;
    if (s == "WIRELESS") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_WIRELESS;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::IfcDistributionPortType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionSystemEnum::declaration() const { return *IFC4X3_RC2_IfcDistributionSystemEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDistributionSystemEnum::Class() { return *IFC4X3_RC2_IfcDistributionSystemEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDocumentConfidentialityEnum::declaration() const { return *IFC4X3_RC2_IfcDocumentConfidentialityEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDocumentConfidentialityEnum::Class() { return *IFC4X3_RC2_IfcDocumentConfidentialityEnum_type; }

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

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

Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentialityEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDocumentConfidentialityEnum::Value Ifc4x3_rc2::IfcDocumentConfidentialityEnum::FromString(const std::string& s) {
    if (s == "PUBLIC") return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_PUBLIC;
    if (s == "RESTRICTED") return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_RESTRICTED;
    if (s == "CONFIDENTIAL") return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_CONFIDENTIAL;
    if (s == "PERSONAL") return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_PERSONAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::IfcDocumentConfidentiality_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDocumentStatusEnum::declaration() const { return *IFC4X3_RC2_IfcDocumentStatusEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDocumentStatusEnum::Class() { return *IFC4X3_RC2_IfcDocumentStatusEnum_type; }

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

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

Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatusEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDocumentStatusEnum::Value Ifc4x3_rc2::IfcDocumentStatusEnum::FromString(const std::string& s) {
    if (s == "DRAFT") return ::Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatus_DRAFT;
    if (s == "FINALDRAFT") return ::Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatus_FINALDRAFT;
    if (s == "FINAL") return ::Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatus_FINAL;
    if (s == "REVISION") return ::Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatus_REVISION;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDocumentStatusEnum::IfcDocumentStatus_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorPanelOperationEnum::declaration() const { return *IFC4X3_RC2_IfcDoorPanelOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorPanelOperationEnum::Class() { return *IFC4X3_RC2_IfcDoorPanelOperationEnum_type; }

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

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

Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDoorPanelOperationEnum::Value Ifc4x3_rc2::IfcDoorPanelOperationEnum::FromString(const std::string& s) {
    if (s == "SWINGING") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_SWINGING;
    if (s == "DOUBLE_ACTING") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_DOUBLE_ACTING;
    if (s == "SLIDING") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_SLIDING;
    if (s == "FOLDING") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_FOLDING;
    if (s == "REVOLVING") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_REVOLVING;
    if (s == "ROLLINGUP") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_ROLLINGUP;
    if (s == "FIXEDPANEL") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_FIXEDPANEL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::IfcDoorPanelOperation_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorPanelPositionEnum::declaration() const { return *IFC4X3_RC2_IfcDoorPanelPositionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorPanelPositionEnum::Class() { return *IFC4X3_RC2_IfcDoorPanelPositionEnum_type; }

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

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

Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPositionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDoorPanelPositionEnum::Value Ifc4x3_rc2::IfcDoorPanelPositionEnum::FromString(const std::string& s) {
    if (s == "LEFT") return ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_LEFT;
    if (s == "MIDDLE") return ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_MIDDLE;
    if (s == "RIGHT") return ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_RIGHT;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::IfcDoorPanelPosition_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorStyleConstructionEnum::declaration() const { return *IFC4X3_RC2_IfcDoorStyleConstructionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorStyleConstructionEnum::Class() { return *IFC4X3_RC2_IfcDoorStyleConstructionEnum_type; }

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

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

Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstructionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDoorStyleConstructionEnum::Value Ifc4x3_rc2::IfcDoorStyleConstructionEnum::FromString(const std::string& s) {
    if (s == "ALUMINIUM") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_ALUMINIUM;
    if (s == "HIGH_GRADE_STEEL") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_HIGH_GRADE_STEEL;
    if (s == "STEEL") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_STEEL;
    if (s == "WOOD") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_WOOD;
    if (s == "ALUMINIUM_WOOD") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_ALUMINIUM_WOOD;
    if (s == "ALUMINIUM_PLASTIC") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_ALUMINIUM_PLASTIC;
    if (s == "PLASTIC") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_PLASTIC;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::IfcDoorStyleConstruction_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorStyleOperationEnum::declaration() const { return *IFC4X3_RC2_IfcDoorStyleOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorStyleOperationEnum::Class() { return *IFC4X3_RC2_IfcDoorStyleOperationEnum_type; }

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

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

Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDoorStyleOperationEnum::Value Ifc4x3_rc2::IfcDoorStyleOperationEnum::FromString(const std::string& s) {
    if (s == "SINGLE_SWING_LEFT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SINGLE_SWING_LEFT;
    if (s == "SINGLE_SWING_RIGHT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SINGLE_SWING_RIGHT;
    if (s == "DOUBLE_DOOR_SINGLE_SWING") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING;
    if (s == "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT;
    if (s == "DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT;
    if (s == "DOUBLE_SWING_LEFT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_SWING_LEFT;
    if (s == "DOUBLE_SWING_RIGHT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_SWING_RIGHT;
    if (s == "DOUBLE_DOOR_DOUBLE_SWING") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_DOUBLE_SWING;
    if (s == "SLIDING_TO_LEFT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SLIDING_TO_LEFT;
    if (s == "SLIDING_TO_RIGHT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_SLIDING_TO_RIGHT;
    if (s == "DOUBLE_DOOR_SLIDING") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_SLIDING;
    if (s == "FOLDING_TO_LEFT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_FOLDING_TO_LEFT;
    if (s == "FOLDING_TO_RIGHT") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_FOLDING_TO_RIGHT;
    if (s == "DOUBLE_DOOR_FOLDING") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_DOUBLE_DOOR_FOLDING;
    if (s == "REVOLVING") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_REVOLVING;
    if (s == "ROLLINGUP") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_ROLLINGUP;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::IfcDoorStyleOperation_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDoorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorTypeEnum::Class() { return *IFC4X3_RC2_IfcDoorTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDoorTypeEnum::Value Ifc4x3_rc2::IfcDoorTypeEnum::FromString(const std::string& s) {
    if (s == "DOOR") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_DOOR;
    if (s == "GATE") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_GATE;
    if (s == "TRAPDOOR") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_TRAPDOOR;
    if (s == "BOOM_BARRIER") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_BOOM_BARRIER;
    if (s == "TURNSTILE") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_TURNSTILE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDoorTypeEnum::IfcDoorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorTypeOperationEnum::declaration() const { return *IFC4X3_RC2_IfcDoorTypeOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDoorTypeOperationEnum::Class() { return *IFC4X3_RC2_IfcDoorTypeOperationEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDuctFittingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDuctFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDuctFittingTypeEnum::Class() { return *IFC4X3_RC2_IfcDuctFittingTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDuctFittingTypeEnum::Value Ifc4x3_rc2::IfcDuctFittingTypeEnum::FromString(const std::string& s) {
    if (s == "BEND") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_BEND;
    if (s == "CONNECTOR") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_CONNECTOR;
    if (s == "ENTRY") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_ENTRY;
    if (s == "EXIT") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_EXIT;
    if (s == "JUNCTION") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_JUNCTION;
    if (s == "OBSTRUCTION") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_OBSTRUCTION;
    if (s == "TRANSITION") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_TRANSITION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::IfcDuctFittingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDuctSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDuctSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcDuctSegmentTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDuctSegmentTypeEnum::Value Ifc4x3_rc2::IfcDuctSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "RIGIDSEGMENT") return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_RIGIDSEGMENT;
    if (s == "FLEXIBLESEGMENT") return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_FLEXIBLESEGMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::IfcDuctSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDuctSilencerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcDuctSilencerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Class() { return *IFC4X3_RC2_IfcDuctSilencerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDuctSilencerTypeEnum::Value Ifc4x3_rc2::IfcDuctSilencerTypeEnum::FromString(const std::string& s) {
    if (s == "FLATOVAL") return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_FLATOVAL;
    if (s == "RECTANGULAR") return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_RECTANGULAR;
    if (s == "ROUND") return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_ROUND;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::IfcDuctSilencerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEarthworksCutTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEarthworksCutTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Class() { return *IFC4X3_RC2_IfcEarthworksCutTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEarthworksCutTypeEnum::Value Ifc4x3_rc2::IfcEarthworksCutTypeEnum::FromString(const std::string& s) {
    if (s == "TRENCH") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_TRENCH;
    if (s == "DREDGING") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_DREDGING;
    if (s == "EXCAVATION") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_EXCAVATION;
    if (s == "OVEREXCAVATION") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_OVEREXCAVATION;
    if (s == "TOPSOILREMOVAL") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_TOPSOILREMOVAL;
    if (s == "STEPEXCAVATION") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_STEPEXCAVATION;
    if (s == "PAVEMENTMILLING") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_PAVEMENTMILLING;
    if (s == "CUT") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_CUT;
    if (s == "BASE_EXCAVATION") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_BASE_EXCAVATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::IfcEarthworksCutType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEarthworksFillTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEarthworksFillTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEarthworksFillTypeEnum::Class() { return *IFC4X3_RC2_IfcEarthworksFillTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEarthworksFillTypeEnum::Value Ifc4x3_rc2::IfcEarthworksFillTypeEnum::FromString(const std::string& s) {
    if (s == "BACKFILL") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_BACKFILL;
    if (s == "COUNTERWEIGHT") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_COUNTERWEIGHT;
    if (s == "SUBGRADE") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_SUBGRADE;
    if (s == "EMBANKMENT") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_EMBANKMENT;
    if (s == "TRANSITIONSECTION") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_TRANSITIONSECTION;
    if (s == "SUBGRADEBED") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_SUBGRADEBED;
    if (s == "SLOPEFILL") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_SLOPEFILL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::IfcEarthworksFillType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricApplianceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricApplianceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricApplianceTypeEnum::Value Ifc4x3_rc2::IfcElectricApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "DISHWASHER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_DISHWASHER;
    if (s == "ELECTRICCOOKER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_ELECTRICCOOKER;
    if (s == "FREESTANDINGELECTRICHEATER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGELECTRICHEATER;
    if (s == "FREESTANDINGFAN") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGFAN;
    if (s == "FREESTANDINGWATERHEATER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGWATERHEATER;
    if (s == "FREESTANDINGWATERCOOLER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREESTANDINGWATERCOOLER;
    if (s == "FREEZER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FREEZER;
    if (s == "FRIDGE_FREEZER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_FRIDGE_FREEZER;
    if (s == "HANDDRYER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_HANDDRYER;
    if (s == "KITCHENMACHINE") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_KITCHENMACHINE;
    if (s == "MICROWAVE") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_MICROWAVE;
    if (s == "PHOTOCOPIER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_PHOTOCOPIER;
    if (s == "REFRIGERATOR") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_REFRIGERATOR;
    if (s == "TUMBLEDRYER") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_TUMBLEDRYER;
    if (s == "VENDINGMACHINE") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_VENDINGMACHINE;
    if (s == "WASHINGMACHINE") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_WASHINGMACHINE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::IfcElectricApplianceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricDistributionBoardTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricDistributionBoardTypeEnum::Value Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::FromString(const std::string& s) {
    if (s == "CONSUMERUNIT") return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_CONSUMERUNIT;
    if (s == "DISTRIBUTIONBOARD") return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_DISTRIBUTIONBOARD;
    if (s == "MOTORCONTROLCENTRE") return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_MOTORCONTROLCENTRE;
    if (s == "SWITCHBOARD") return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_SWITCHBOARD;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::IfcElectricDistributionBoardType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricFlowStorageDeviceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "BATTERY") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_BATTERY;
    if (s == "CAPACITORBANK") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_CAPACITORBANK;
    if (s == "HARMONICFILTER") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_HARMONICFILTER;
    if (s == "INDUCTORBANK") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_INDUCTORBANK;
    if (s == "UPS") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_UPS;
    if (s == "CAPACITOR") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_CAPACITOR;
    if (s == "COMPENSATOR") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_COMPENSATOR;
    if (s == "INDUCTOR") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_INDUCTOR;
    if (s == "RECHARGER") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_RECHARGER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::IfcElectricFlowStorageDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricFlowTreatmentDeviceTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRONICFILTER") return ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceType_ELECTRONICFILTER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::IfcElectricFlowTreatmentDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricGeneratorTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricGeneratorTypeEnum::Value Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::FromString(const std::string& s) {
    if (s == "CHP") return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_CHP;
    if (s == "ENGINEGENERATOR") return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_ENGINEGENERATOR;
    if (s == "STANDALONE") return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_STANDALONE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::IfcElectricGeneratorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricMotorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricMotorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricMotorTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricMotorTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricMotorTypeEnum::Value Ifc4x3_rc2::IfcElectricMotorTypeEnum::FromString(const std::string& s) {
    if (s == "DC") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_DC;
    if (s == "INDUCTION") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_INDUCTION;
    if (s == "POLYPHASE") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_POLYPHASE;
    if (s == "RELUCTANCESYNCHRONOUS") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_RELUCTANCESYNCHRONOUS;
    if (s == "SYNCHRONOUS") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_SYNCHRONOUS;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::IfcElectricMotorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Class() { return *IFC4X3_RC2_IfcElectricTimeControlTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricTimeControlTypeEnum::Value Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::FromString(const std::string& s) {
    if (s == "TIMECLOCK") return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_TIMECLOCK;
    if (s == "TIMEDELAY") return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_TIMEDELAY;
    if (s == "RELAY") return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_RELAY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::IfcElectricTimeControlType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElementAssemblyTypeEnum::declaration() const { return *IFC4X3_RC2_IfcElementAssemblyTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Class() { return *IFC4X3_RC2_IfcElementAssemblyTypeEnum_type; }

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

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElementCompositionEnum::declaration() const { return *IFC4X3_RC2_IfcElementCompositionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcElementCompositionEnum::Class() { return *IFC4X3_RC2_IfcElementCompositionEnum_type; }

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

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

Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementCompositionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElementCompositionEnum::Value Ifc4x3_rc2::IfcElementCompositionEnum::FromString(const std::string& s) {
    if (s == "COMPLEX") return ::Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementComposition_COMPLEX;
    if (s == "ELEMENT") return ::Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementComposition_ELEMENT;
    if (s == "PARTIAL") return ::Ifc4x3_rc2::IfcElementCompositionEnum::IfcElementComposition_PARTIAL;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEngineTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEngineTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEngineTypeEnum::Class() { return *IFC4X3_RC2_IfcEngineTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEngineTypeEnum::Value Ifc4x3_rc2::IfcEngineTypeEnum::FromString(const std::string& s) {
    if (s == "EXTERNALCOMBUSTION") return ::Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineType_EXTERNALCOMBUSTION;
    if (s == "INTERNALCOMBUSTION") return ::Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineType_INTERNALCOMBUSTION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEngineTypeEnum::IfcEngineType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Class() { return *IFC4X3_RC2_IfcEvaporativeCoolerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEvaporativeCoolerTypeEnum::Value Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::FromString(const std::string& s) {
    if (s == "DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER;
    if (s == "DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER;
    if (s == "DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER;
    if (s == "DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER;
    if (s == "DIRECTEVAPORATIVEAIRWASHER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_DIRECTEVAPORATIVEAIRWASHER;
    if (s == "INDIRECTEVAPORATIVEPACKAGEAIRCOOLER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEPACKAGEAIRCOOLER;
    if (s == "INDIRECTEVAPORATIVEWETCOIL") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTEVAPORATIVEWETCOIL;
    if (s == "INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER;
    if (s == "INDIRECTDIRECTCOMBINATION") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_INDIRECTDIRECTCOMBINATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::IfcEvaporativeCoolerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEvaporatorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEvaporatorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEvaporatorTypeEnum::Class() { return *IFC4X3_RC2_IfcEvaporatorTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEvaporatorTypeEnum::Value Ifc4x3_rc2::IfcEvaporatorTypeEnum::FromString(const std::string& s) {
    if (s == "DIRECTEXPANSION") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSION;
    if (s == "DIRECTEXPANSIONSHELLANDTUBE") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSIONSHELLANDTUBE;
    if (s == "DIRECTEXPANSIONTUBEINTUBE") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSIONTUBEINTUBE;
    if (s == "DIRECTEXPANSIONBRAZEDPLATE") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_DIRECTEXPANSIONBRAZEDPLATE;
    if (s == "FLOODEDSHELLANDTUBE") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_FLOODEDSHELLANDTUBE;
    if (s == "SHELLANDCOIL") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_SHELLANDCOIL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::IfcEvaporatorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEventTriggerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEventTriggerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEventTriggerTypeEnum::Class() { return *IFC4X3_RC2_IfcEventTriggerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEventTriggerTypeEnum::Value Ifc4x3_rc2::IfcEventTriggerTypeEnum::FromString(const std::string& s) {
    if (s == "EVENTRULE") return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTRULE;
    if (s == "EVENTMESSAGE") return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTMESSAGE;
    if (s == "EVENTTIME") return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTTIME;
    if (s == "EVENTCOMPLEX") return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerType_EVENTCOMPLEX;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::IfcEventTriggerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEventTypeEnum::declaration() const { return *IFC4X3_RC2_IfcEventTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcEventTypeEnum::Class() { return *IFC4X3_RC2_IfcEventTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcEventTypeEnum::IfcEventTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEventTypeEnum::Value Ifc4x3_rc2::IfcEventTypeEnum::FromString(const std::string& s) {
    if (s == "STARTEVENT") return ::Ifc4x3_rc2::IfcEventTypeEnum::IfcEventType_STARTEVENT;
    if (s == "ENDEVENT") return ::Ifc4x3_rc2::IfcEventTypeEnum::IfcEventType_ENDEVENT;
    if (s == "INTERMEDIATEEVENT") return ::Ifc4x3_rc2::IfcEventTypeEnum::IfcEventType_INTERMEDIATEEVENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcEventTypeEnum::IfcEventType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcEventTypeEnum::IfcEventType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Class() { return *IFC4X3_RC2_IfcExternalSpatialElementTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcExternalSpatialElementTypeEnum::Value Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::FromString(const std::string& s) {
    if (s == "EXTERNAL") return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL;
    if (s == "EXTERNAL_EARTH") return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL_EARTH;
    if (s == "EXTERNAL_WATER") return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL_WATER;
    if (s == "EXTERNAL_FIRE") return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_EXTERNAL_FIRE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::IfcExternalSpatialElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::Class() { return *IFC4X3_RC2_IfcFacilityPartCommonTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFacilityPartCommonTypeEnum::Value Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::FromString(const std::string& s) {
    if (s == "SEGMENT") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_SEGMENT;
    if (s == "ABOVEGROUND") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_ABOVEGROUND;
    if (s == "JUNCTION") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_JUNCTION;
    if (s == "LEVELCROSSING") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_LEVELCROSSING;
    if (s == "BELOWGROUND") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_BELOWGROUND;
    if (s == "SUBSTRUCTURE") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_SUBSTRUCTURE;
    if (s == "TERMINAL") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_TERMINAL;
    if (s == "SUPERSTRUCTURE") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_SUPERSTRUCTURE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFacilityPartCommonTypeEnum::IfcFacilityPartCommonType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFacilityUsageEnum::declaration() const { return *IFC4X3_RC2_IfcFacilityUsageEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFacilityUsageEnum::Class() { return *IFC4X3_RC2_IfcFacilityUsageEnum_type; }

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

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

Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsageEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFacilityUsageEnum::Value Ifc4x3_rc2::IfcFacilityUsageEnum::FromString(const std::string& s) {
    if (s == "LATERAL") return ::Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsage_LATERAL;
    if (s == "REGION") return ::Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsage_REGION;
    if (s == "VERTICAL") return ::Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsage_VERTICAL;
    if (s == "LONGITUDINAL") return ::Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsage_LONGITUDINAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsage_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFacilityUsageEnum::IfcFacilityUsage_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFanTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFanTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFanTypeEnum::Class() { return *IFC4X3_RC2_IfcFanTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFanTypeEnum::IfcFanTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFanTypeEnum::Value Ifc4x3_rc2::IfcFanTypeEnum::FromString(const std::string& s) {
    if (s == "CENTRIFUGALFORWARDCURVED") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_CENTRIFUGALFORWARDCURVED;
    if (s == "CENTRIFUGALRADIAL") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_CENTRIFUGALRADIAL;
    if (s == "CENTRIFUGALBACKWARDINCLINEDCURVED") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_CENTRIFUGALBACKWARDINCLINEDCURVED;
    if (s == "CENTRIFUGALAIRFOIL") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_CENTRIFUGALAIRFOIL;
    if (s == "TUBEAXIAL") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_TUBEAXIAL;
    if (s == "VANEAXIAL") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_VANEAXIAL;
    if (s == "PROPELLORAXIAL") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_PROPELLORAXIAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFanTypeEnum::IfcFanType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFastenerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFastenerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFastenerTypeEnum::Class() { return *IFC4X3_RC2_IfcFastenerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFastenerTypeEnum::Value Ifc4x3_rc2::IfcFastenerTypeEnum::FromString(const std::string& s) {
    if (s == "GLUE") return ::Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerType_GLUE;
    if (s == "MORTAR") return ::Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerType_MORTAR;
    if (s == "WELD") return ::Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerType_WELD;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFastenerTypeEnum::IfcFastenerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFilterTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFilterTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFilterTypeEnum::Class() { return *IFC4X3_RC2_IfcFilterTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFilterTypeEnum::Value Ifc4x3_rc2::IfcFilterTypeEnum::FromString(const std::string& s) {
    if (s == "AIRPARTICLEFILTER") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_AIRPARTICLEFILTER;
    if (s == "COMPRESSEDAIRFILTER") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_COMPRESSEDAIRFILTER;
    if (s == "ODORFILTER") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_ODORFILTER;
    if (s == "OILFILTER") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_OILFILTER;
    if (s == "STRAINER") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_STRAINER;
    if (s == "WATERFILTER") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_WATERFILTER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFilterTypeEnum::IfcFilterType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Class() { return *IFC4X3_RC2_IfcFireSuppressionTerminalTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFireSuppressionTerminalTypeEnum::Value Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "BREECHINGINLET") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_BREECHINGINLET;
    if (s == "FIREHYDRANT") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_FIREHYDRANT;
    if (s == "HOSEREEL") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_HOSEREEL;
    if (s == "SPRINKLER") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_SPRINKLER;
    if (s == "SPRINKLERDEFLECTOR") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_SPRINKLERDEFLECTOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::IfcFireSuppressionTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFlowDirectionEnum::declaration() const { return *IFC4X3_RC2_IfcFlowDirectionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFlowDirectionEnum::Class() { return *IFC4X3_RC2_IfcFlowDirectionEnum_type; }

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

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

Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirectionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFlowDirectionEnum::Value Ifc4x3_rc2::IfcFlowDirectionEnum::FromString(const std::string& s) {
    if (s == "SOURCE") return ::Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirection_SOURCE;
    if (s == "SINK") return ::Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirection_SINK;
    if (s == "SOURCEANDSINK") return ::Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirection_SOURCEANDSINK;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFlowDirectionEnum::IfcFlowDirection_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Class() { return *IFC4X3_RC2_IfcFlowInstrumentTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFlowInstrumentTypeEnum::Value Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::FromString(const std::string& s) {
    if (s == "PRESSUREGAUGE") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_PRESSUREGAUGE;
    if (s == "THERMOMETER") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_THERMOMETER;
    if (s == "AMMETER") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_AMMETER;
    if (s == "FREQUENCYMETER") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_FREQUENCYMETER;
    if (s == "POWERFACTORMETER") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_POWERFACTORMETER;
    if (s == "PHASEANGLEMETER") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_PHASEANGLEMETER;
    if (s == "VOLTMETER_PEAK") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_VOLTMETER_PEAK;
    if (s == "VOLTMETER_RMS") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_VOLTMETER_RMS;
    if (s == "COMBINED") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_COMBINED;
    if (s == "VOLTMETER") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_VOLTMETER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::IfcFlowInstrumentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFlowMeterTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFlowMeterTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFlowMeterTypeEnum::Class() { return *IFC4X3_RC2_IfcFlowMeterTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFlowMeterTypeEnum::Value Ifc4x3_rc2::IfcFlowMeterTypeEnum::FromString(const std::string& s) {
    if (s == "ENERGYMETER") return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterType_ENERGYMETER;
    if (s == "GASMETER") return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterType_GASMETER;
    if (s == "OILMETER") return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterType_OILMETER;
    if (s == "WATERMETER") return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterType_WATERMETER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::IfcFlowMeterType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFootingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFootingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFootingTypeEnum::Class() { return *IFC4X3_RC2_IfcFootingTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFootingTypeEnum::Value Ifc4x3_rc2::IfcFootingTypeEnum::FromString(const std::string& s) {
    if (s == "CAISSON_FOUNDATION") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_CAISSON_FOUNDATION;
    if (s == "FOOTING_BEAM") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_FOOTING_BEAM;
    if (s == "PAD_FOOTING") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_PAD_FOOTING;
    if (s == "PILE_CAP") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_PILE_CAP;
    if (s == "STRIP_FOOTING") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_STRIP_FOOTING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFootingTypeEnum::IfcFootingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFurnitureTypeEnum::declaration() const { return *IFC4X3_RC2_IfcFurnitureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcFurnitureTypeEnum::Class() { return *IFC4X3_RC2_IfcFurnitureTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFurnitureTypeEnum::Value Ifc4x3_rc2::IfcFurnitureTypeEnum::FromString(const std::string& s) {
    if (s == "CHAIR") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_CHAIR;
    if (s == "TABLE") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_TABLE;
    if (s == "DESK") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_DESK;
    if (s == "BED") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_BED;
    if (s == "FILECABINET") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_FILECABINET;
    if (s == "SHELF") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_SHELF;
    if (s == "SOFA") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_SOFA;
    if (s == "TECHNICALCABINET") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_TECHNICALCABINET;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::IfcFurnitureType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGeographicElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcGeographicElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGeographicElementTypeEnum::Class() { return *IFC4X3_RC2_IfcGeographicElementTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGeographicElementTypeEnum::Value Ifc4x3_rc2::IfcGeographicElementTypeEnum::FromString(const std::string& s) {
    if (s == "TERRAIN") return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementType_TERRAIN;
    if (s == "SOIL_BORING_POINT") return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementType_SOIL_BORING_POINT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::IfcGeographicElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGeometricProjectionEnum::declaration() const { return *IFC4X3_RC2_IfcGeometricProjectionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGeometricProjectionEnum::Class() { return *IFC4X3_RC2_IfcGeometricProjectionEnum_type; }

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

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

Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjectionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGeometricProjectionEnum::Value Ifc4x3_rc2::IfcGeometricProjectionEnum::FromString(const std::string& s) {
    if (s == "GRAPH_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_GRAPH_VIEW;
    if (s == "SKETCH_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_SKETCH_VIEW;
    if (s == "MODEL_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_MODEL_VIEW;
    if (s == "PLAN_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_PLAN_VIEW;
    if (s == "REFLECTED_PLAN_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_REFLECTED_PLAN_VIEW;
    if (s == "SECTION_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_SECTION_VIEW;
    if (s == "ELEVATION_VIEW") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_ELEVATION_VIEW;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::IfcGeometricProjection_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGlobalOrLocalEnum::declaration() const { return *IFC4X3_RC2_IfcGlobalOrLocalEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGlobalOrLocalEnum::Class() { return *IFC4X3_RC2_IfcGlobalOrLocalEnum_type; }

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

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

Ifc4x3_rc2::IfcGlobalOrLocalEnum::IfcGlobalOrLocalEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGlobalOrLocalEnum::Value Ifc4x3_rc2::IfcGlobalOrLocalEnum::FromString(const std::string& s) {
    if (s == "GLOBAL_COORDS") return ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::IfcGlobalOrLocal_GLOBAL_COORDS;
    if (s == "LOCAL_COORDS") return ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::IfcGlobalOrLocal_LOCAL_COORDS;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGridTypeEnum::declaration() const { return *IFC4X3_RC2_IfcGridTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcGridTypeEnum::Class() { return *IFC4X3_RC2_IfcGridTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcGridTypeEnum::IfcGridTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGridTypeEnum::Value Ifc4x3_rc2::IfcGridTypeEnum::FromString(const std::string& s) {
    if (s == "RECTANGULAR") return ::Ifc4x3_rc2::IfcGridTypeEnum::IfcGridType_RECTANGULAR;
    if (s == "RADIAL") return ::Ifc4x3_rc2::IfcGridTypeEnum::IfcGridType_RADIAL;
    if (s == "TRIANGULAR") return ::Ifc4x3_rc2::IfcGridTypeEnum::IfcGridType_TRIANGULAR;
    if (s == "IRREGULAR") return ::Ifc4x3_rc2::IfcGridTypeEnum::IfcGridType_IRREGULAR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcGridTypeEnum::IfcGridType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcGridTypeEnum::IfcGridType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcHeatExchangerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcHeatExchangerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Class() { return *IFC4X3_RC2_IfcHeatExchangerTypeEnum_type; }

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

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

Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcHeatExchangerTypeEnum::Value Ifc4x3_rc2::IfcHeatExchangerTypeEnum::FromString(const std::string& s) {
    if (s == "PLATE") return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_PLATE;
    if (s == "SHELLANDTUBE") return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_SHELLANDTUBE;
    if (s == "TURNOUTHEATING") return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_TURNOUTHEATING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::IfcHeatExchangerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcHumidifierTypeEnum::declaration() const { return *IFC4X3_RC2_IfcHumidifierTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcHumidifierTypeEnum::Class() { return *IFC4X3_RC2_IfcHumidifierTypeEnum_type; }

Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcHumidifierTypeEnum::Value Ifc4x3_rc2::IfcHumidifierTypeEnum::FromString(const std::string& s) {
    if (s == "STEAMINJECTION") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_STEAMINJECTION;
    if (s == "ADIABATICAIRWASHER") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICAIRWASHER;
    if (s == "ADIABATICPAN") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICPAN;
    if (s == "ADIABATICWETTEDELEMENT") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICWETTEDELEMENT;
    if (s == "ADIABATICATOMIZING") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICATOMIZING;
    if (s == "ADIABATICULTRASONIC") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICULTRASONIC;
    if (s == "ADIABATICRIGIDMEDIA") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICRIGIDMEDIA;
    if (s == "ADIABATICCOMPRESSEDAIRNOZZLE") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ADIABATICCOMPRESSEDAIRNOZZLE;
    if (s == "ASSISTEDELECTRIC") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDELECTRIC;
    if (s == "ASSISTEDNATURALGAS") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDNATURALGAS;
    if (s == "ASSISTEDPROPANE") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDPROPANE;
    if (s == "ASSISTEDBUTANE") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDBUTANE;
    if (s == "ASSISTEDSTEAM") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_ASSISTEDSTEAM;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::IfcHumidifierType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcImpactProtectionDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcImpactProtectionDeviceTypeEnum::Value Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CRASHCUSHION") return ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_CRASHCUSHION;
    if (s == "DAMPINGSYSTEM") return ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_DAMPINGSYSTEM;
    if (s == "FENDER") return ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_FENDER;
    if (s == "BUMPER") return ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_BUMPER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeEnum::IfcImpactProtectionDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcInterceptorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcInterceptorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcInterceptorTypeEnum::Class() { return *IFC4X3_RC2_IfcInterceptorTypeEnum_type; }

Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcInterceptorTypeEnum::Value Ifc4x3_rc2::IfcInterceptorTypeEnum::FromString(const std::string& s) {
    if (s == "CYCLONIC") return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorType_CYCLONIC;
    if (s == "GREASE") return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorType_GREASE;
    if (s == "OIL") return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorType_OIL;
    if (s == "PETROL") return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorType_PETROL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::IfcInterceptorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcInternalOrExternalEnum::declaration() const { return *IFC4X3_RC2_IfcInternalOrExternalEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcInternalOrExternalEnum::Class() { return *IFC4X3_RC2_IfcInternalOrExternalEnum_type; }

Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternalEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcInternalOrExternalEnum::Value Ifc4x3_rc2::IfcInternalOrExternalEnum::FromString(const std::string& s) {
    if (s == "INTERNAL") return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternal_INTERNAL;
    if (s == "EXTERNAL") return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL;
    if (s == "EXTERNAL_EARTH") return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL_EARTH;
    if (s == "EXTERNAL_WATER") return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL_WATER;
    if (s == "EXTERNAL_FIRE") return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternal_EXTERNAL_FIRE;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::IfcInternalOrExternal_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcInventoryTypeEnum::declaration() const { return *IFC4X3_RC2_IfcInventoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcInventoryTypeEnum::Class() { return *IFC4X3_RC2_IfcInventoryTypeEnum_type; }

Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcInventoryTypeEnum::Value Ifc4x3_rc2::IfcInventoryTypeEnum::FromString(const std::string& s) {
    if (s == "ASSETINVENTORY") return ::Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryType_ASSETINVENTORY;
    if (s == "SPACEINVENTORY") return ::Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryType_SPACEINVENTORY;
    if (s == "FURNITUREINVENTORY") return ::Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryType_FURNITUREINVENTORY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcInventoryTypeEnum::IfcInventoryType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcJunctionBoxTypeEnum::declaration() const { return *IFC4X3_RC2_IfcJunctionBoxTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Class() { return *IFC4X3_RC2_IfcJunctionBoxTypeEnum_type; }

Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcJunctionBoxTypeEnum::Value Ifc4x3_rc2::IfcJunctionBoxTypeEnum::FromString(const std::string& s) {
    if (s == "DATA") return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_DATA;
    if (s == "POWER") return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_POWER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::IfcJunctionBoxType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcKnotType::declaration() const { return *IFC4X3_RC2_IfcKnotType_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcKnotType::Class() { return *IFC4X3_RC2_IfcKnotType_type; }

Ifc4x3_rc2::IfcKnotType::IfcKnotType(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcKnotType::IfcKnotType(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcKnotType::Value Ifc4x3_rc2::IfcKnotType::FromString(const std::string& s) {
    if (s == "UNIFORM_KNOTS") return ::Ifc4x3_rc2::IfcKnotType::IfcKnotType_UNIFORM_KNOTS;
    if (s == "QUASI_UNIFORM_KNOTS") return ::Ifc4x3_rc2::IfcKnotType::IfcKnotType_QUASI_UNIFORM_KNOTS;
    if (s == "PIECEWISE_BEZIER_KNOTS") return ::Ifc4x3_rc2::IfcKnotType::IfcKnotType_PIECEWISE_BEZIER_KNOTS;
    if (s == "UNSPECIFIED") return ::Ifc4x3_rc2::IfcKnotType::IfcKnotType_UNSPECIFIED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLaborResourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcLaborResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLaborResourceTypeEnum::Class() { return *IFC4X3_RC2_IfcLaborResourceTypeEnum_type; }

Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLaborResourceTypeEnum::Value Ifc4x3_rc2::IfcLaborResourceTypeEnum::FromString(const std::string& s) {
    if (s == "ADMINISTRATION") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_ADMINISTRATION;
    if (s == "CARPENTRY") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_CARPENTRY;
    if (s == "CLEANING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_CLEANING;
    if (s == "CONCRETE") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_CONCRETE;
    if (s == "DRYWALL") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_DRYWALL;
    if (s == "ELECTRIC") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_ELECTRIC;
    if (s == "FINISHING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_FINISHING;
    if (s == "FLOORING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_FLOORING;
    if (s == "GENERAL") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_GENERAL;
    if (s == "HVAC") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_HVAC;
    if (s == "LANDSCAPING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_LANDSCAPING;
    if (s == "MASONRY") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_MASONRY;
    if (s == "PAINTING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_PAINTING;
    if (s == "PAVING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_PAVING;
    if (s == "PLUMBING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_PLUMBING;
    if (s == "ROOFING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_ROOFING;
    if (s == "SITEGRADING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_SITEGRADING;
    if (s == "STEELWORK") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_STEELWORK;
    if (s == "SURVEYING") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_SURVEYING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::IfcLaborResourceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLampTypeEnum::declaration() const { return *IFC4X3_RC2_IfcLampTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLampTypeEnum::Class() { return *IFC4X3_RC2_IfcLampTypeEnum_type; }

Ifc4x3_rc2::IfcLampTypeEnum::IfcLampTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLampTypeEnum::IfcLampTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLampTypeEnum::Value Ifc4x3_rc2::IfcLampTypeEnum::FromString(const std::string& s) {
    if (s == "COMPACTFLUORESCENT") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_COMPACTFLUORESCENT;
    if (s == "FLUORESCENT") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_FLUORESCENT;
    if (s == "HALOGEN") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_HALOGEN;
    if (s == "HIGHPRESSUREMERCURY") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_HIGHPRESSUREMERCURY;
    if (s == "HIGHPRESSURESODIUM") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_HIGHPRESSURESODIUM;
    if (s == "LED") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_LED;
    if (s == "METALHALIDE") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_METALHALIDE;
    if (s == "OLED") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_OLED;
    if (s == "TUNGSTENFILAMENT") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_TUNGSTENFILAMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLampTypeEnum::IfcLampType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLayerSetDirectionEnum::declaration() const { return *IFC4X3_RC2_IfcLayerSetDirectionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLayerSetDirectionEnum::Class() { return *IFC4X3_RC2_IfcLayerSetDirectionEnum_type; }

Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirectionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLayerSetDirectionEnum::Value Ifc4x3_rc2::IfcLayerSetDirectionEnum::FromString(const std::string& s) {
    if (s == "AXIS1") return ::Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirection_AXIS1;
    if (s == "AXIS2") return ::Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirection_AXIS2;
    if (s == "AXIS3") return ::Ifc4x3_rc2::IfcLayerSetDirectionEnum::IfcLayerSetDirection_AXIS3;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLightDistributionCurveEnum::declaration() const { return *IFC4X3_RC2_IfcLightDistributionCurveEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLightDistributionCurveEnum::Class() { return *IFC4X3_RC2_IfcLightDistributionCurveEnum_type; }

Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurveEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLightDistributionCurveEnum::Value Ifc4x3_rc2::IfcLightDistributionCurveEnum::FromString(const std::string& s) {
    if (s == "TYPE_A") return ::Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_TYPE_A;
    if (s == "TYPE_B") return ::Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_TYPE_B;
    if (s == "TYPE_C") return ::Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_TYPE_C;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLightDistributionCurveEnum::IfcLightDistributionCurve_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLightEmissionSourceEnum::declaration() const { return *IFC4X3_RC2_IfcLightEmissionSourceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLightEmissionSourceEnum::Class() { return *IFC4X3_RC2_IfcLightEmissionSourceEnum_type; }

Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSourceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLightEmissionSourceEnum::Value Ifc4x3_rc2::IfcLightEmissionSourceEnum::FromString(const std::string& s) {
    if (s == "COMPACTFLUORESCENT") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_COMPACTFLUORESCENT;
    if (s == "FLUORESCENT") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_FLUORESCENT;
    if (s == "HIGHPRESSUREMERCURY") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_HIGHPRESSUREMERCURY;
    if (s == "HIGHPRESSURESODIUM") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_HIGHPRESSURESODIUM;
    if (s == "LIGHTEMITTINGDIODE") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_LIGHTEMITTINGDIODE;
    if (s == "LOWPRESSURESODIUM") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_LOWPRESSURESODIUM;
    if (s == "LOWVOLTAGEHALOGEN") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_LOWVOLTAGEHALOGEN;
    if (s == "MAINVOLTAGEHALOGEN") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_MAINVOLTAGEHALOGEN;
    if (s == "METALHALIDE") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_METALHALIDE;
    if (s == "TUNGSTENFILAMENT") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_TUNGSTENFILAMENT;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::IfcLightEmissionSource_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLightFixtureTypeEnum::declaration() const { return *IFC4X3_RC2_IfcLightFixtureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLightFixtureTypeEnum::Class() { return *IFC4X3_RC2_IfcLightFixtureTypeEnum_type; }

Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLightFixtureTypeEnum::Value Ifc4x3_rc2::IfcLightFixtureTypeEnum::FromString(const std::string& s) {
    if (s == "POINTSOURCE") return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureType_POINTSOURCE;
    if (s == "DIRECTIONSOURCE") return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureType_DIRECTIONSOURCE;
    if (s == "SECURITYLIGHTING") return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureType_SECURITYLIGHTING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::IfcLightFixtureType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Class() { return *IFC4X3_RC2_IfcLiquidTerminalTypeEnum_type; }

Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLiquidTerminalTypeEnum::Value Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "LOADINGARM") return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_LOADINGARM;
    if (s == "HOSEREEL") return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_HOSEREEL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::IfcLiquidTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLoadGroupTypeEnum::declaration() const { return *IFC4X3_RC2_IfcLoadGroupTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLoadGroupTypeEnum::Class() { return *IFC4X3_RC2_IfcLoadGroupTypeEnum_type; }

Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLoadGroupTypeEnum::Value Ifc4x3_rc2::IfcLoadGroupTypeEnum::FromString(const std::string& s) {
    if (s == "LOAD_GROUP") return ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupType_LOAD_GROUP;
    if (s == "LOAD_CASE") return ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupType_LOAD_CASE;
    if (s == "LOAD_COMBINATION") return ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupType_LOAD_COMBINATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::IfcLoadGroupType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLogicalOperatorEnum::declaration() const { return *IFC4X3_RC2_IfcLogicalOperatorEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcLogicalOperatorEnum::Class() { return *IFC4X3_RC2_IfcLogicalOperatorEnum_type; }

Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperatorEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLogicalOperatorEnum::Value Ifc4x3_rc2::IfcLogicalOperatorEnum::FromString(const std::string& s) {
    if (s == "LOGICALAND") return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALAND;
    if (s == "LOGICALOR") return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALOR;
    if (s == "LOGICALXOR") return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALXOR;
    if (s == "LOGICALNOTAND") return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALNOTAND;
    if (s == "LOGICALNOTOR") return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::IfcLogicalOperator_LOGICALNOTOR;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMarineFacilityTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMarineFacilityTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMarineFacilityTypeEnum::Class() { return *IFC4X3_RC2_IfcMarineFacilityTypeEnum_type; }

Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMarineFacilityTypeEnum::Value Ifc4x3_rc2::IfcMarineFacilityTypeEnum::FromString(const std::string& s) {
    if (s == "CANAL") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_CANAL;
    if (s == "WATERWAYSHIPLIFT") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_WATERWAYSHIPLIFT;
    if (s == "EMBANKMENT") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_EMBANKMENT;
    if (s == "LAUNCHRECOVERY") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_LAUNCHRECOVERY;
    if (s == "MARINEDEFENCE") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_MARINEDEFENCE;
    if (s == "HYDROLIFT") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_HYDROLIFT;
    if (s == "SHIPYARD") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SHIPYARD;
    if (s == "SHIPLIFT") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SHIPLIFT;
    if (s == "PORT") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_PORT;
    if (s == "QUAY") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_QUAY;
    if (s == "FLOATINGDOCK") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_FLOATINGDOCK;
    if (s == "NAVIGATIONALCHANNEL") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_NAVIGATIONALCHANNEL;
    if (s == "BREAKWATER") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_BREAKWATER;
    if (s == "DRYDOCK") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_DRYDOCK;
    if (s == "JETTY") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_JETTY;
    if (s == "SHIPLOCK") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SHIPLOCK;
    if (s == "BARRIERBEACH") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_BARRIERBEACH;
    if (s == "SLIPWAY") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_SLIPWAY;
    if (s == "WATERWAY") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_WATERWAY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::IfcMarineFacilityType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMarinePartTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMarinePartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMarinePartTypeEnum::Class() { return *IFC4X3_RC2_IfcMarinePartTypeEnum_type; }

Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMarinePartTypeEnum::Value Ifc4x3_rc2::IfcMarinePartTypeEnum::FromString(const std::string& s) {
    if (s == "CREST") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_CREST;
    if (s == "MANUFACTURING") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_MANUFACTURING;
    if (s == "LOWWATERLINE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_LOWWATERLINE;
    if (s == "CORE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_CORE;
    if (s == "WATERFIELD") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_WATERFIELD;
    if (s == "CILL_LEVEL") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_CILL_LEVEL;
    if (s == "BERTHINGSTRUCTURE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_BERTHINGSTRUCTURE;
    if (s == "COPELEVEL") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_COPELEVEL;
    if (s == "CHAMBER") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_CHAMBER;
    if (s == "STORAGE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_STORAGE;
    if (s == "APPROACHCHANNEL") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_APPROACHCHANNEL;
    if (s == "VEHICLESERVICING") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_VEHICLESERVICING;
    if (s == "SHIPTRANSFER") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_SHIPTRANSFER;
    if (s == "GATEHEAD") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_GATEHEAD;
    if (s == "GUDINGSTRUCTURE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_GUDINGSTRUCTURE;
    if (s == "BELOWWATERLINE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_BELOWWATERLINE;
    if (s == "WEATHERSIDE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_WEATHERSIDE;
    if (s == "LANDFIELD") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_LANDFIELD;
    if (s == "PROTECTION") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_PROTECTION;
    if (s == "LEEWARDSIDE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_LEEWARDSIDE;
    if (s == "ABOVEWATERLINE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_ABOVEWATERLINE;
    if (s == "ANCHORAGE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_ANCHORAGE;
    if (s == "NAVIGATIONALAREA") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_NAVIGATIONALAREA;
    if (s == "HIGHWATERLINE") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_HIGHWATERLINE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMarinePartTypeEnum::IfcMarinePartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Class() { return *IFC4X3_RC2_IfcMechanicalFastenerTypeEnum_type; }

Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORBOLT") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_ANCHORBOLT;
    if (s == "BOLT") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_BOLT;
    if (s == "DOWEL") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_DOWEL;
    if (s == "NAIL") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NAIL;
    if (s == "NAILPLATE") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NAILPLATE;
    if (s == "RIVET") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RIVET;
    if (s == "SCREW") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_SCREW;
    if (s == "SHEARCONNECTOR") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_SHEARCONNECTOR;
    if (s == "STAPLE") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_STAPLE;
    if (s == "STUDSHEARCONNECTOR") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_STUDSHEARCONNECTOR;
    if (s == "COUPLER") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_COUPLER;
    if (s == "RAILJOINT") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RAILJOINT;
    if (s == "RAILFASTENING") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_RAILFASTENING;
    if (s == "CHAIN") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_CHAIN;
    if (s == "ROPE") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_ROPE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::IfcMechanicalFastenerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcMedicalDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMedicalDeviceTypeEnum::Value Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "AIRSTATION") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_AIRSTATION;
    if (s == "FEEDAIRUNIT") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_FEEDAIRUNIT;
    if (s == "OXYGENGENERATOR") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_OXYGENGENERATOR;
    if (s == "OXYGENPLANT") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_OXYGENPLANT;
    if (s == "VACUUMSTATION") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_VACUUMSTATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::IfcMedicalDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMemberTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMemberTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMemberTypeEnum::Class() { return *IFC4X3_RC2_IfcMemberTypeEnum_type; }

Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMemberTypeEnum::Value Ifc4x3_rc2::IfcMemberTypeEnum::FromString(const std::string& s) {
    if (s == "BRACE") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_BRACE;
    if (s == "CHORD") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_CHORD;
    if (s == "COLLAR") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_COLLAR;
    if (s == "MEMBER") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_MEMBER;
    if (s == "MULLION") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_MULLION;
    if (s == "PLATE") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_PLATE;
    if (s == "POST") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_POST;
    if (s == "PURLIN") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_PURLIN;
    if (s == "RAFTER") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_RAFTER;
    if (s == "STRINGER") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_STRINGER;
    if (s == "STRUT") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_STRUT;
    if (s == "STUD") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_STUD;
    if (s == "STIFFENING_RIB") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_STIFFENING_RIB;
    if (s == "ARCH_SEGMENT") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_ARCH_SEGMENT;
    if (s == "SUSPENSION_CABLE") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_SUSPENSION_CABLE;
    if (s == "SUSPENDER") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_SUSPENDER;
    if (s == "STAY_CABLE") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_STAY_CABLE;
    if (s == "STRUCTURALCABLE") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_STRUCTURALCABLE;
    if (s == "TIEBAR") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_TIEBAR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMemberTypeEnum::IfcMemberType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Class() { return *IFC4X3_RC2_IfcMobileTelecommunicationsApplianceTypeEnum_type; }

Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(const std::string& s) {
    if (s == "E_UTRAN_NODE_B") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_E_UTRAN_NODE_B;
    if (s == "REMOTE_RADIO_UNIT") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_REMOTE_RADIO_UNIT;
    if (s == "ACCESSPOINT") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_ACCESSPOINT;
    if (s == "BASETRANSCEIVERSTATION") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_BASETRANSCEIVERSTATION;
    if (s == "REMOTEUNIT") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_REMOTEUNIT;
    if (s == "BASEBANDUNIT") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_BASEBANDUNIT;
    if (s == "MASTERUNIT") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_MASTERUNIT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::IfcMobileTelecommunicationsApplianceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMooringDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMooringDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcMooringDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMooringDeviceTypeEnum::Value Ifc4x3_rc2::IfcMooringDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "LINETENSIONER") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_LINETENSIONER;
    if (s == "MAGNETICDEVICE") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_MAGNETICDEVICE;
    if (s == "MOORINGHOOKS") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_MOORINGHOOKS;
    if (s == "VACUUMDEVICE") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_VACUUMDEVICE;
    if (s == "BOLLARD") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_BOLLARD;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::IfcMooringDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMotorConnectionTypeEnum::declaration() const { return *IFC4X3_RC2_IfcMotorConnectionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Class() { return *IFC4X3_RC2_IfcMotorConnectionTypeEnum_type; }

Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMotorConnectionTypeEnum::Value Ifc4x3_rc2::IfcMotorConnectionTypeEnum::FromString(const std::string& s) {
    if (s == "BELTDRIVE") return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_BELTDRIVE;
    if (s == "COUPLING") return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_COUPLING;
    if (s == "DIRECTDRIVE") return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_DIRECTDRIVE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::IfcMotorConnectionType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcNavigationElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcNavigationElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcNavigationElementTypeEnum::Class() { return *IFC4X3_RC2_IfcNavigationElementTypeEnum_type; }

Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcNavigationElementTypeEnum::Value Ifc4x3_rc2::IfcNavigationElementTypeEnum::FromString(const std::string& s) {
    if (s == "BEACON") return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementType_BEACON;
    if (s == "BUOY") return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementType_BUOY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::IfcNavigationElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcNullStyle::declaration() const { return *IFC4X3_RC2_IfcNullStyle_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcNullStyle::Class() { return *IFC4X3_RC2_IfcNullStyle_type; }

Ifc4x3_rc2::IfcNullStyle::IfcNullStyle(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcNullStyle::IfcNullStyle(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcNullStyle::Value Ifc4x3_rc2::IfcNullStyle::FromString(const std::string& s) {
    if (s == "NULL") return ::Ifc4x3_rc2::IfcNullStyle::IfcNullStyle_NULL;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcObjectTypeEnum::declaration() const { return *IFC4X3_RC2_IfcObjectTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcObjectTypeEnum::Class() { return *IFC4X3_RC2_IfcObjectTypeEnum_type; }

Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcObjectTypeEnum::Value Ifc4x3_rc2::IfcObjectTypeEnum::FromString(const std::string& s) {
    if (s == "PRODUCT") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_PRODUCT;
    if (s == "PROCESS") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_PROCESS;
    if (s == "CONTROL") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_CONTROL;
    if (s == "RESOURCE") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_RESOURCE;
    if (s == "ACTOR") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_ACTOR;
    if (s == "GROUP") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_GROUP;
    if (s == "PROJECT") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_PROJECT;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcObjectTypeEnum::IfcObjectType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcObjectiveEnum::declaration() const { return *IFC4X3_RC2_IfcObjectiveEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcObjectiveEnum::Class() { return *IFC4X3_RC2_IfcObjectiveEnum_type; }

Ifc4x3_rc2::IfcObjectiveEnum::IfcObjectiveEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcObjectiveEnum::IfcObjectiveEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcObjectiveEnum::Value Ifc4x3_rc2::IfcObjectiveEnum::FromString(const std::string& s) {
    if (s == "CODECOMPLIANCE") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_CODECOMPLIANCE;
    if (s == "CODEWAIVER") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_CODEWAIVER;
    if (s == "DESIGNINTENT") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_DESIGNINTENT;
    if (s == "EXTERNAL") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_EXTERNAL;
    if (s == "HEALTHANDSAFETY") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_HEALTHANDSAFETY;
    if (s == "MERGECONFLICT") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_MERGECONFLICT;
    if (s == "MODELVIEW") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_MODELVIEW;
    if (s == "PARAMETER") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_PARAMETER;
    if (s == "REQUIREMENT") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_REQUIREMENT;
    if (s == "SPECIFICATION") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_SPECIFICATION;
    if (s == "TRIGGERCONDITION") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_TRIGGERCONDITION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcObjectiveEnum::IfcObjective_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcOccupantTypeEnum::declaration() const { return *IFC4X3_RC2_IfcOccupantTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcOccupantTypeEnum::Class() { return *IFC4X3_RC2_IfcOccupantTypeEnum_type; }

Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcOccupantTypeEnum::Value Ifc4x3_rc2::IfcOccupantTypeEnum::FromString(const std::string& s) {
    if (s == "ASSIGNEE") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_ASSIGNEE;
    if (s == "ASSIGNOR") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_ASSIGNOR;
    if (s == "LESSEE") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_LESSEE;
    if (s == "LESSOR") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_LESSOR;
    if (s == "LETTINGAGENT") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_LETTINGAGENT;
    if (s == "OWNER") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_OWNER;
    if (s == "TENANT") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_TENANT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcOccupantTypeEnum::IfcOccupantType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcOpeningElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcOpeningElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcOpeningElementTypeEnum::Class() { return *IFC4X3_RC2_IfcOpeningElementTypeEnum_type; }

Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcOpeningElementTypeEnum::Value Ifc4x3_rc2::IfcOpeningElementTypeEnum::FromString(const std::string& s) {
    if (s == "OPENING") return ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementType_OPENING;
    if (s == "RECESS") return ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementType_RECESS;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::IfcOpeningElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcOutletTypeEnum::declaration() const { return *IFC4X3_RC2_IfcOutletTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcOutletTypeEnum::Class() { return *IFC4X3_RC2_IfcOutletTypeEnum_type; }

Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcOutletTypeEnum::Value Ifc4x3_rc2::IfcOutletTypeEnum::FromString(const std::string& s) {
    if (s == "AUDIOVISUALOUTLET") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_AUDIOVISUALOUTLET;
    if (s == "COMMUNICATIONSOUTLET") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_COMMUNICATIONSOUTLET;
    if (s == "POWEROUTLET") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_POWEROUTLET;
    if (s == "DATAOUTLET") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_DATAOUTLET;
    if (s == "TELEPHONEOUTLET") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_TELEPHONEOUTLET;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcOutletTypeEnum::IfcOutletType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::Class() { return *IFC4X3_RC2_IfcPerformanceHistoryTypeEnum_type; }

Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPerformanceHistoryTypeEnum::Value Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::IfcPerformanceHistoryType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::declaration() const { return *IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::Class() { return *IFC4X3_RC2_IfcPermeableCoveringOperationEnum_type; }

Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPermeableCoveringOperationEnum::Value Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::FromString(const std::string& s) {
    if (s == "GRILL") return ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_GRILL;
    if (s == "LOUVER") return ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_LOUVER;
    if (s == "SCREEN") return ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_SCREEN;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::IfcPermeableCoveringOperation_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPermitTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPermitTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPermitTypeEnum::Class() { return *IFC4X3_RC2_IfcPermitTypeEnum_type; }

Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPermitTypeEnum::Value Ifc4x3_rc2::IfcPermitTypeEnum::FromString(const std::string& s) {
    if (s == "ACCESS") return ::Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitType_ACCESS;
    if (s == "BUILDING") return ::Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitType_BUILDING;
    if (s == "WORK") return ::Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitType_WORK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPermitTypeEnum::IfcPermitType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::declaration() const { return *IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::Class() { return *IFC4X3_RC2_IfcPhysicalOrVirtualEnum_type; }

Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtualEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPhysicalOrVirtualEnum::Value Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::FromString(const std::string& s) {
    if (s == "PHYSICAL") return ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtual_PHYSICAL;
    if (s == "VIRTUAL") return ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtual_VIRTUAL;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::IfcPhysicalOrVirtual_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPileConstructionEnum::declaration() const { return *IFC4X3_RC2_IfcPileConstructionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPileConstructionEnum::Class() { return *IFC4X3_RC2_IfcPileConstructionEnum_type; }

Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstructionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstructionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPileConstructionEnum::Value Ifc4x3_rc2::IfcPileConstructionEnum::FromString(const std::string& s) {
    if (s == "CAST_IN_PLACE") return ::Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstruction_CAST_IN_PLACE;
    if (s == "COMPOSITE") return ::Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstruction_COMPOSITE;
    if (s == "PRECAST_CONCRETE") return ::Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstruction_PRECAST_CONCRETE;
    if (s == "PREFAB_STEEL") return ::Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstruction_PREFAB_STEEL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstruction_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPileConstructionEnum::IfcPileConstruction_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPileTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPileTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPileTypeEnum::Class() { return *IFC4X3_RC2_IfcPileTypeEnum_type; }

Ifc4x3_rc2::IfcPileTypeEnum::IfcPileTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPileTypeEnum::IfcPileTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPileTypeEnum::Value Ifc4x3_rc2::IfcPileTypeEnum::FromString(const std::string& s) {
    if (s == "BORED") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_BORED;
    if (s == "DRIVEN") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_DRIVEN;
    if (s == "JETGROUTING") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_JETGROUTING;
    if (s == "COHESION") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_COHESION;
    if (s == "FRICTION") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_FRICTION;
    if (s == "SUPPORT") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_SUPPORT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPileTypeEnum::IfcPileType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPipeFittingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPipeFittingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPipeFittingTypeEnum::Class() { return *IFC4X3_RC2_IfcPipeFittingTypeEnum_type; }

Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPipeFittingTypeEnum::Value Ifc4x3_rc2::IfcPipeFittingTypeEnum::FromString(const std::string& s) {
    if (s == "BEND") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_BEND;
    if (s == "CONNECTOR") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_CONNECTOR;
    if (s == "ENTRY") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_ENTRY;
    if (s == "EXIT") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_EXIT;
    if (s == "JUNCTION") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_JUNCTION;
    if (s == "OBSTRUCTION") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_OBSTRUCTION;
    if (s == "TRANSITION") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_TRANSITION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::IfcPipeFittingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPipeSegmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPipeSegmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Class() { return *IFC4X3_RC2_IfcPipeSegmentTypeEnum_type; }

Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPipeSegmentTypeEnum::Value Ifc4x3_rc2::IfcPipeSegmentTypeEnum::FromString(const std::string& s) {
    if (s == "CULVERT") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_CULVERT;
    if (s == "FLEXIBLESEGMENT") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_FLEXIBLESEGMENT;
    if (s == "RIGIDSEGMENT") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_RIGIDSEGMENT;
    if (s == "GUTTER") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_GUTTER;
    if (s == "SPOOL") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_SPOOL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::IfcPipeSegmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPlateTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPlateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPlateTypeEnum::Class() { return *IFC4X3_RC2_IfcPlateTypeEnum_type; }

Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPlateTypeEnum::Value Ifc4x3_rc2::IfcPlateTypeEnum::FromString(const std::string& s) {
    if (s == "CURTAIN_PANEL") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_CURTAIN_PANEL;
    if (s == "SHEET") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_SHEET;
    if (s == "FLANGE_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_FLANGE_PLATE;
    if (s == "WEB_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_WEB_PLATE;
    if (s == "STIFFENER_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_STIFFENER_PLATE;
    if (s == "GUSSET_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_GUSSET_PLATE;
    if (s == "COVER_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_COVER_PLATE;
    if (s == "SPLICE_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_SPLICE_PLATE;
    if (s == "BASE_PLATE") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_BASE_PLATE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPlateTypeEnum::IfcPlateType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::declaration() const { return *IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::Class() { return *IFC4X3_RC2_IfcPreferredSurfaceCurveRepresentation_type; }

Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPreferredSurfaceCurveRepresentation::Value Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::FromString(const std::string& s) {
    if (s == "CURVE3D") return ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation_CURVE3D;
    if (s == "PCURVE_S1") return ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation_PCURVE_S1;
    if (s == "PCURVE_S2") return ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::IfcPreferredSurfaceCurveRepresentation_PCURVE_S2;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProcedureTypeEnum::declaration() const { return *IFC4X3_RC2_IfcProcedureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProcedureTypeEnum::Class() { return *IFC4X3_RC2_IfcProcedureTypeEnum_type; }

Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProcedureTypeEnum::Value Ifc4x3_rc2::IfcProcedureTypeEnum::FromString(const std::string& s) {
    if (s == "ADVICE_CAUTION") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_ADVICE_CAUTION;
    if (s == "ADVICE_NOTE") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_ADVICE_NOTE;
    if (s == "ADVICE_WARNING") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_ADVICE_WARNING;
    if (s == "CALIBRATION") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_CALIBRATION;
    if (s == "DIAGNOSTIC") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_DIAGNOSTIC;
    if (s == "SHUTDOWN") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_SHUTDOWN;
    if (s == "STARTUP") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_STARTUP;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcProcedureTypeEnum::IfcProcedureType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProfileTypeEnum::declaration() const { return *IFC4X3_RC2_IfcProfileTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProfileTypeEnum::Class() { return *IFC4X3_RC2_IfcProfileTypeEnum_type; }

Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProfileTypeEnum::Value Ifc4x3_rc2::IfcProfileTypeEnum::FromString(const std::string& s) {
    if (s == "CURVE") return ::Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileType_CURVE;
    if (s == "AREA") return ::Ifc4x3_rc2::IfcProfileTypeEnum::IfcProfileType_AREA;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProjectOrderTypeEnum::declaration() const { return *IFC4X3_RC2_IfcProjectOrderTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProjectOrderTypeEnum::Class() { return *IFC4X3_RC2_IfcProjectOrderTypeEnum_type; }

Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProjectOrderTypeEnum::Value Ifc4x3_rc2::IfcProjectOrderTypeEnum::FromString(const std::string& s) {
    if (s == "CHANGEORDER") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_CHANGEORDER;
    if (s == "MAINTENANCEWORKORDER") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_MAINTENANCEWORKORDER;
    if (s == "MOVEORDER") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_MOVEORDER;
    if (s == "PURCHASEORDER") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_PURCHASEORDER;
    if (s == "WORKORDER") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_WORKORDER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::IfcProjectOrderType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::declaration() const { return *IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Class() { return *IFC4X3_RC2_IfcProjectedOrTrueLengthEnum_type; }

Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLengthEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProjectedOrTrueLengthEnum::Value Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::FromString(const std::string& s) {
    if (s == "PROJECTED_LENGTH") return ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLength_PROJECTED_LENGTH;
    if (s == "TRUE_LENGTH") return ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::IfcProjectedOrTrueLength_TRUE_LENGTH;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProjectionElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcProjectionElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProjectionElementTypeEnum::Class() { return *IFC4X3_RC2_IfcProjectionElementTypeEnum_type; }

Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProjectionElementTypeEnum::Value Ifc4x3_rc2::IfcProjectionElementTypeEnum::FromString(const std::string& s) {
    if (s == "BLISTER") return ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementType_BLISTER;
    if (s == "DEVIATOR") return ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementType_DEVIATOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::IfcProjectionElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::Class() { return *IFC4X3_RC2_IfcPropertySetTemplateTypeEnum_type; }

Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPropertySetTemplateTypeEnum::Value Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::FromString(const std::string& s) {
    if (s == "PSET_TYPEDRIVENONLY") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_TYPEDRIVENONLY;
    if (s == "PSET_TYPEDRIVENOVERRIDE") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_TYPEDRIVENOVERRIDE;
    if (s == "PSET_OCCURRENCEDRIVEN") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_OCCURRENCEDRIVEN;
    if (s == "PSET_PERFORMANCEDRIVEN") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_PSET_PERFORMANCEDRIVEN;
    if (s == "QTO_TYPEDRIVENONLY") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_QTO_TYPEDRIVENONLY;
    if (s == "QTO_TYPEDRIVENOVERRIDE") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_QTO_TYPEDRIVENOVERRIDE;
    if (s == "QTO_OCCURRENCEDRIVEN") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_QTO_OCCURRENCEDRIVEN;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::IfcPropertySetTemplateType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::declaration() const { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Class() { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitTypeEnum_type; }

Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(const std::string& s) {
    if (s == "ELECTRONIC") return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_ELECTRONIC;
    if (s == "ELECTROMAGNETIC") return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_ELECTROMAGNETIC;
    if (s == "RESIDUALCURRENT") return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_RESIDUALCURRENT;
    if (s == "THERMAL") return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_THERMAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::IfcProtectiveDeviceTrippingUnitType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcProtectiveDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProtectiveDeviceTypeEnum::Value Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CIRCUITBREAKER") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_CIRCUITBREAKER;
    if (s == "EARTHLEAKAGECIRCUITBREAKER") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_EARTHLEAKAGECIRCUITBREAKER;
    if (s == "EARTHINGSWITCH") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_EARTHINGSWITCH;
    if (s == "FUSEDISCONNECTOR") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_FUSEDISCONNECTOR;
    if (s == "RESIDUALCURRENTCIRCUITBREAKER") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_RESIDUALCURRENTCIRCUITBREAKER;
    if (s == "RESIDUALCURRENTSWITCH") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_RESIDUALCURRENTSWITCH;
    if (s == "VARISTOR") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_VARISTOR;
    if (s == "ANTI_ARCING_DEVICE") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_ANTI_ARCING_DEVICE;
    if (s == "SPARKGAP") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_SPARKGAP;
    if (s == "VOLTAGELIMITER") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_VOLTAGELIMITER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::IfcProtectiveDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPumpTypeEnum::declaration() const { return *IFC4X3_RC2_IfcPumpTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcPumpTypeEnum::Class() { return *IFC4X3_RC2_IfcPumpTypeEnum_type; }

Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPumpTypeEnum::Value Ifc4x3_rc2::IfcPumpTypeEnum::FromString(const std::string& s) {
    if (s == "CIRCULATOR") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_CIRCULATOR;
    if (s == "ENDSUCTION") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_ENDSUCTION;
    if (s == "SPLITCASE") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_SPLITCASE;
    if (s == "SUBMERSIBLEPUMP") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_SUBMERSIBLEPUMP;
    if (s == "SUMPPUMP") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_SUMPPUMP;
    if (s == "VERTICALINLINE") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_VERTICALINLINE;
    if (s == "VERTICALTURBINE") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_VERTICALTURBINE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcPumpTypeEnum::IfcPumpType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRailTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRailTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRailTypeEnum::Class() { return *IFC4X3_RC2_IfcRailTypeEnum_type; }

Ifc4x3_rc2::IfcRailTypeEnum::IfcRailTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRailTypeEnum::IfcRailTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRailTypeEnum::Value Ifc4x3_rc2::IfcRailTypeEnum::FromString(const std::string& s) {
    if (s == "RACKRAIL") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_RACKRAIL;
    if (s == "BLADE") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_BLADE;
    if (s == "GUARDRAIL") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_GUARDRAIL;
    if (s == "STOCKRAIL") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_STOCKRAIL;
    if (s == "CHECKRAIL") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_CHECKRAIL;
    if (s == "RAIL") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_RAIL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRailTypeEnum::IfcRailType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRailingTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRailingTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRailingTypeEnum::Class() { return *IFC4X3_RC2_IfcRailingTypeEnum_type; }

Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRailingTypeEnum::Value Ifc4x3_rc2::IfcRailingTypeEnum::FromString(const std::string& s) {
    if (s == "HANDRAIL") return ::Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingType_HANDRAIL;
    if (s == "GUARDRAIL") return ::Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingType_GUARDRAIL;
    if (s == "BALUSTRADE") return ::Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingType_BALUSTRADE;
    if (s == "FENCE") return ::Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingType_FENCE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRailingTypeEnum::IfcRailingType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRailwayPartTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRailwayPartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRailwayPartTypeEnum::Class() { return *IFC4X3_RC2_IfcRailwayPartTypeEnum_type; }

Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRailwayPartTypeEnum::Value Ifc4x3_rc2::IfcRailwayPartTypeEnum::FromString(const std::string& s) {
    if (s == "TRACKSTRUCTURE") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_TRACKSTRUCTURE;
    if (s == "TRACKSTRUCTUREPART") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_TRACKSTRUCTUREPART;
    if (s == "LINESIDESTRUCTUREPART") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_LINESIDESTRUCTUREPART;
    if (s == "DILATATIONSUPERSTRUCTURE") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_DILATATIONSUPERSTRUCTURE;
    if (s == "PLAINTRACKSUPESTRUCTURE") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_PLAINTRACKSUPESTRUCTURE;
    if (s == "LINESIDESTRUCTURE") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_LINESIDESTRUCTURE;
    if (s == "SUPERSTRUCTURE") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_SUPERSTRUCTURE;
    if (s == "TURNOUTSUPERSTRUCTURE") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_TURNOUTSUPERSTRUCTURE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRailwayPartTypeEnum::IfcRailwayPartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRampFlightTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRampFlightTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRampFlightTypeEnum::Class() { return *IFC4X3_RC2_IfcRampFlightTypeEnum_type; }

Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRampFlightTypeEnum::Value Ifc4x3_rc2::IfcRampFlightTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT") return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightType_STRAIGHT;
    if (s == "SPIRAL") return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightType_SPIRAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::IfcRampFlightType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRampTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRampTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRampTypeEnum::Class() { return *IFC4X3_RC2_IfcRampTypeEnum_type; }

Ifc4x3_rc2::IfcRampTypeEnum::IfcRampTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRampTypeEnum::IfcRampTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRampTypeEnum::Value Ifc4x3_rc2::IfcRampTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT_RUN_RAMP") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_STRAIGHT_RUN_RAMP;
    if (s == "TWO_STRAIGHT_RUN_RAMP") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_TWO_STRAIGHT_RUN_RAMP;
    if (s == "QUARTER_TURN_RAMP") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_QUARTER_TURN_RAMP;
    if (s == "TWO_QUARTER_TURN_RAMP") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_TWO_QUARTER_TURN_RAMP;
    if (s == "HALF_TURN_RAMP") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_HALF_TURN_RAMP;
    if (s == "SPIRAL_RAMP") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_SPIRAL_RAMP;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRampTypeEnum::IfcRampType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRecurrenceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRecurrenceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRecurrenceTypeEnum::Class() { return *IFC4X3_RC2_IfcRecurrenceTypeEnum_type; }

Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRecurrenceTypeEnum::Value Ifc4x3_rc2::IfcRecurrenceTypeEnum::FromString(const std::string& s) {
    if (s == "DAILY") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_DAILY;
    if (s == "WEEKLY") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_WEEKLY;
    if (s == "MONTHLY_BY_DAY_OF_MONTH") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_MONTHLY_BY_DAY_OF_MONTH;
    if (s == "MONTHLY_BY_POSITION") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_MONTHLY_BY_POSITION;
    if (s == "BY_DAY_COUNT") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_BY_DAY_COUNT;
    if (s == "BY_WEEKDAY_COUNT") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_BY_WEEKDAY_COUNT;
    if (s == "YEARLY_BY_DAY_OF_MONTH") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_YEARLY_BY_DAY_OF_MONTH;
    if (s == "YEARLY_BY_POSITION") return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::IfcRecurrenceType_YEARLY_BY_POSITION;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReferentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcReferentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReferentTypeEnum::Class() { return *IFC4X3_RC2_IfcReferentTypeEnum_type; }

Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReferentTypeEnum::Value Ifc4x3_rc2::IfcReferentTypeEnum::FromString(const std::string& s) {
    if (s == "KILOPOINT") return ::Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentType_KILOPOINT;
    if (s == "MILEPOINT") return ::Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentType_MILEPOINT;
    if (s == "STATION") return ::Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentType_STATION;
    if (s == "REFERENCEMARKER") return ::Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentType_REFERENCEMARKER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcReferentTypeEnum::IfcReferentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReflectanceMethodEnum::declaration() const { return *IFC4X3_RC2_IfcReflectanceMethodEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReflectanceMethodEnum::Class() { return *IFC4X3_RC2_IfcReflectanceMethodEnum_type; }

Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethodEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReflectanceMethodEnum::Value Ifc4x3_rc2::IfcReflectanceMethodEnum::FromString(const std::string& s) {
    if (s == "BLINN") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_BLINN;
    if (s == "FLAT") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_FLAT;
    if (s == "GLASS") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_GLASS;
    if (s == "MATT") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_MATT;
    if (s == "METAL") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_METAL;
    if (s == "MIRROR") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_MIRROR;
    if (s == "PHONG") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_PHONG;
    if (s == "PLASTIC") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_PLASTIC;
    if (s == "STRAUSS") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_STRAUSS;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::IfcReflectanceMethod_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::declaration() const { return *IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::Class() { return *IFC4X3_RC2_IfcReinforcedSoilTypeEnum_type; }

Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcedSoilTypeEnum::Value Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::FromString(const std::string& s) {
    if (s == "SURCHARGEPRELOADED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_SURCHARGEPRELOADED;
    if (s == "VERTICALLYDRAINED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_VERTICALLYDRAINED;
    if (s == "DYNAMICALLYCOMPACTED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_DYNAMICALLYCOMPACTED;
    if (s == "REPLACED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_REPLACED;
    if (s == "ROLLERCOMPACTED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_ROLLERCOMPACTED;
    if (s == "GROUTED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_GROUTED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::IfcReinforcedSoilType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingBarRoleEnum::declaration() const { return *IFC4X3_RC2_IfcReinforcingBarRoleEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingBarRoleEnum::Class() { return *IFC4X3_RC2_IfcReinforcingBarRoleEnum_type; }

Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRoleEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc2::IfcReinforcingBarRoleEnum::FromString(const std::string& s) {
    if (s == "MAIN") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_MAIN;
    if (s == "SHEAR") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_SHEAR;
    if (s == "LIGATURE") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_LIGATURE;
    if (s == "STUD") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_STUD;
    if (s == "PUNCHING") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_PUNCHING;
    if (s == "EDGE") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_EDGE;
    if (s == "RING") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_RING;
    if (s == "ANCHORING") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_ANCHORING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::IfcReinforcingBarRole_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::declaration() const { return *IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Class() { return *IFC4X3_RC2_IfcReinforcingBarSurfaceEnum_type; }

Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurfaceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcingBarSurfaceEnum::Value Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(const std::string& s) {
    if (s == "PLAIN") return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurface_PLAIN;
    if (s == "TEXTURED") return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::IfcReinforcingBarSurface_TEXTURED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingBarTypeEnum::declaration() const { return *IFC4X3_RC2_IfcReinforcingBarTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Class() { return *IFC4X3_RC2_IfcReinforcingBarTypeEnum_type; }

Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc2::IfcReinforcingBarTypeEnum::FromString(const std::string& s) {
    if (s == "ANCHORING") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_ANCHORING;
    if (s == "EDGE") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_EDGE;
    if (s == "LIGATURE") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_LIGATURE;
    if (s == "MAIN") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_MAIN;
    if (s == "PUNCHING") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_PUNCHING;
    if (s == "RING") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_RING;
    if (s == "SHEAR") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_SHEAR;
    if (s == "STUD") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_STUD;
    if (s == "SPACEBAR") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_SPACEBAR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::IfcReinforcingBarType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::declaration() const { return *IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Class() { return *IFC4X3_RC2_IfcReinforcingMeshTypeEnum_type; }

Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::FromString(const std::string& s) {
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::IfcReinforcingMeshType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRoadPartTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRoadPartTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRoadPartTypeEnum::Class() { return *IFC4X3_RC2_IfcRoadPartTypeEnum_type; }

Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRoadPartTypeEnum::Value Ifc4x3_rc2::IfcRoadPartTypeEnum::FromString(const std::string& s) {
    if (s == "ROADSIDEPART") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_ROADSIDEPART;
    if (s == "BUS_STOP") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_BUS_STOP;
    if (s == "HARDSHOULDER") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_HARDSHOULDER;
    if (s == "INTERSECTION") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_INTERSECTION;
    if (s == "PASSINGBAY") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_PASSINGBAY;
    if (s == "ROADWAYPLATEAU") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_ROADWAYPLATEAU;
    if (s == "ROADSIDE") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_ROADSIDE;
    if (s == "REFUGEISLAND") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_REFUGEISLAND;
    if (s == "TOLLPLAZA") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_TOLLPLAZA;
    if (s == "CENTRALRESERVE") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_CENTRALRESERVE;
    if (s == "SIDEWALK") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_SIDEWALK;
    if (s == "PARKINGBAY") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_PARKINGBAY;
    if (s == "RAILWAYCROSSING") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_RAILWAYCROSSING;
    if (s == "PEDESTRIAN_CROSSING") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_PEDESTRIAN_CROSSING;
    if (s == "SOFTSHOULDER") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_SOFTSHOULDER;
    if (s == "BICYCLECROSSING") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_BICYCLECROSSING;
    if (s == "CENTRALISLAND") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_CENTRALISLAND;
    if (s == "SHOULDER") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_SHOULDER;
    if (s == "TRAFFICLANE") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_TRAFFICLANE;
    if (s == "ROADSEGMENT") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_ROADSEGMENT;
    if (s == "ROUNDABOUT") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_ROUNDABOUT;
    if (s == "LAYBY") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_LAYBY;
    if (s == "CARRIAGEWAY") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_CARRIAGEWAY;
    if (s == "TRAFFICISLAND") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_TRAFFICISLAND;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRoadPartTypeEnum::IfcRoadPartType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRoleEnum::declaration() const { return *IFC4X3_RC2_IfcRoleEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRoleEnum::Class() { return *IFC4X3_RC2_IfcRoleEnum_type; }

Ifc4x3_rc2::IfcRoleEnum::IfcRoleEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRoleEnum::IfcRoleEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRoleEnum::Value Ifc4x3_rc2::IfcRoleEnum::FromString(const std::string& s) {
    if (s == "SUPPLIER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_SUPPLIER;
    if (s == "MANUFACTURER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_MANUFACTURER;
    if (s == "CONTRACTOR") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_CONTRACTOR;
    if (s == "SUBCONTRACTOR") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_SUBCONTRACTOR;
    if (s == "ARCHITECT") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_ARCHITECT;
    if (s == "STRUCTURALENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_STRUCTURALENGINEER;
    if (s == "COSTENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_COSTENGINEER;
    if (s == "CLIENT") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_CLIENT;
    if (s == "BUILDINGOWNER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_BUILDINGOWNER;
    if (s == "BUILDINGOPERATOR") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_BUILDINGOPERATOR;
    if (s == "MECHANICALENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_MECHANICALENGINEER;
    if (s == "ELECTRICALENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_ELECTRICALENGINEER;
    if (s == "PROJECTMANAGER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_PROJECTMANAGER;
    if (s == "FACILITIESMANAGER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_FACILITIESMANAGER;
    if (s == "CIVILENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_CIVILENGINEER;
    if (s == "COMMISSIONINGENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_COMMISSIONINGENGINEER;
    if (s == "ENGINEER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_ENGINEER;
    if (s == "OWNER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_OWNER;
    if (s == "CONSULTANT") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_CONSULTANT;
    if (s == "CONSTRUCTIONMANAGER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_CONSTRUCTIONMANAGER;
    if (s == "FIELDCONSTRUCTIONMANAGER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_FIELDCONSTRUCTIONMANAGER;
    if (s == "RESELLER") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_RESELLER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRoleEnum::IfcRole_USERDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRoofTypeEnum::declaration() const { return *IFC4X3_RC2_IfcRoofTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcRoofTypeEnum::Class() { return *IFC4X3_RC2_IfcRoofTypeEnum_type; }

Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRoofTypeEnum::Value Ifc4x3_rc2::IfcRoofTypeEnum::FromString(const std::string& s) {
    if (s == "FLAT_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_FLAT_ROOF;
    if (s == "SHED_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_SHED_ROOF;
    if (s == "GABLE_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_GABLE_ROOF;
    if (s == "HIP_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_HIP_ROOF;
    if (s == "HIPPED_GABLE_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_HIPPED_GABLE_ROOF;
    if (s == "GAMBREL_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_GAMBREL_ROOF;
    if (s == "MANSARD_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_MANSARD_ROOF;
    if (s == "BARREL_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_BARREL_ROOF;
    if (s == "RAINBOW_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_RAINBOW_ROOF;
    if (s == "BUTTERFLY_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_BUTTERFLY_ROOF;
    if (s == "PAVILION_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_PAVILION_ROOF;
    if (s == "DOME_ROOF") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_DOME_ROOF;
    if (s == "FREEFORM") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_FREEFORM;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcRoofTypeEnum::IfcRoofType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSIPrefix::declaration() const { return *IFC4X3_RC2_IfcSIPrefix_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSIPrefix::Class() { return *IFC4X3_RC2_IfcSIPrefix_type; }

Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSIPrefix::Value Ifc4x3_rc2::IfcSIPrefix::FromString(const std::string& s) {
    if (s == "EXA") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_EXA;
    if (s == "PETA") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_PETA;
    if (s == "TERA") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_TERA;
    if (s == "GIGA") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_GIGA;
    if (s == "MEGA") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_MEGA;
    if (s == "KILO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_KILO;
    if (s == "HECTO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_HECTO;
    if (s == "DECA") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_DECA;
    if (s == "DECI") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_DECI;
    if (s == "CENTI") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_CENTI;
    if (s == "MILLI") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_MILLI;
    if (s == "MICRO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_MICRO;
    if (s == "NANO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_NANO;
    if (s == "PICO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_PICO;
    if (s == "FEMTO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_FEMTO;
    if (s == "ATTO") return ::Ifc4x3_rc2::IfcSIPrefix::IfcSIPrefix_ATTO;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSIUnitName::declaration() const { return *IFC4X3_RC2_IfcSIUnitName_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSIUnitName::Class() { return *IFC4X3_RC2_IfcSIUnitName_type; }

Ifc4x3_rc2::IfcSIUnitName::IfcSIUnitName(IfcEntityInstanceData* e) {
    data_ = e;
}

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Class() { return *IFC4X3_RC2_IfcSanitaryTerminalTypeEnum_type; }

Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSanitaryTerminalTypeEnum::Value Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "BATH") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_BATH;
    if (s == "BIDET") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_BIDET;
    if (s == "CISTERN") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_CISTERN;
    if (s == "SHOWER") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_SHOWER;
    if (s == "SINK") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_SINK;
    if (s == "SANITARYFOUNTAIN") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_SANITARYFOUNTAIN;
    if (s == "TOILETPAN") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_TOILETPAN;
    if (s == "URINAL") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_URINAL;
    if (s == "WASHHANDBASIN") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_WASHHANDBASIN;
    if (s == "WCSEAT") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_WCSEAT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::IfcSanitaryTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSectionTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSectionTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSectionTypeEnum::Class() { return *IFC4X3_RC2_IfcSectionTypeEnum_type; }

Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSectionTypeEnum::Value Ifc4x3_rc2::IfcSectionTypeEnum::FromString(const std::string& s) {
    if (s == "UNIFORM") return ::Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionType_UNIFORM;
    if (s == "TAPERED") return ::Ifc4x3_rc2::IfcSectionTypeEnum::IfcSectionType_TAPERED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSensorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSensorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSensorTypeEnum::Class() { return *IFC4X3_RC2_IfcSensorTypeEnum_type; }

Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSensorTypeEnum::Value Ifc4x3_rc2::IfcSensorTypeEnum::FromString(const std::string& s) {
    if (s == "COSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_COSENSOR;
    if (s == "CO2SENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_CO2SENSOR;
    if (s == "CONDUCTANCESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_CONDUCTANCESENSOR;
    if (s == "CONTACTSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_CONTACTSENSOR;
    if (s == "FIRESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_FIRESENSOR;
    if (s == "FLOWSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_FLOWSENSOR;
    if (s == "FROSTSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_FROSTSENSOR;
    if (s == "GASSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_GASSENSOR;
    if (s == "HEATSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_HEATSENSOR;
    if (s == "HUMIDITYSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_HUMIDITYSENSOR;
    if (s == "IDENTIFIERSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_IDENTIFIERSENSOR;
    if (s == "IONCONCENTRATIONSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_IONCONCENTRATIONSENSOR;
    if (s == "LEVELSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_LEVELSENSOR;
    if (s == "LIGHTSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_LIGHTSENSOR;
    if (s == "MOISTURESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_MOISTURESENSOR;
    if (s == "MOVEMENTSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_MOVEMENTSENSOR;
    if (s == "PHSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_PHSENSOR;
    if (s == "PRESSURESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_PRESSURESENSOR;
    if (s == "RADIATIONSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_RADIATIONSENSOR;
    if (s == "RADIOACTIVITYSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_RADIOACTIVITYSENSOR;
    if (s == "SMOKESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_SMOKESENSOR;
    if (s == "SOUNDSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_SOUNDSENSOR;
    if (s == "TEMPERATURESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_TEMPERATURESENSOR;
    if (s == "WINDSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_WINDSENSOR;
    if (s == "EARTHQUAKESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_EARTHQUAKESENSOR;
    if (s == "FOREIGNOBJECTDETECTIONSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_FOREIGNOBJECTDETECTIONSENSOR;
    if (s == "OBSTACLESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_OBSTACLESENSOR;
    if (s == "RAINSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_RAINSENSOR;
    if (s == "SNOWDEPTHSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_SNOWDEPTHSENSOR;
    if (s == "TRAINSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_TRAINSENSOR;
    if (s == "TURNOUTCLOSURESENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_TURNOUTCLOSURESENSOR;
    if (s == "WHEELSENSOR") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_WHEELSENSOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSensorTypeEnum::IfcSensorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSequenceEnum::declaration() const { return *IFC4X3_RC2_IfcSequenceEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSequenceEnum::Class() { return *IFC4X3_RC2_IfcSequenceEnum_type; }

Ifc4x3_rc2::IfcSequenceEnum::IfcSequenceEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSequenceEnum::IfcSequenceEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSequenceEnum::Value Ifc4x3_rc2::IfcSequenceEnum::FromString(const std::string& s) {
    if (s == "START_START") return ::Ifc4x3_rc2::IfcSequenceEnum::IfcSequence_START_START;
    if (s == "START_FINISH") return ::Ifc4x3_rc2::IfcSequenceEnum::IfcSequence_START_FINISH;
    if (s == "FINISH_START") return ::Ifc4x3_rc2::IfcSequenceEnum::IfcSequence_FINISH_START;
    if (s == "FINISH_FINISH") return ::Ifc4x3_rc2::IfcSequenceEnum::IfcSequence_FINISH_FINISH;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSequenceEnum::IfcSequence_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSequenceEnum::IfcSequence_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcShadingDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcShadingDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcShadingDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcShadingDeviceTypeEnum::Value Ifc4x3_rc2::IfcShadingDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "JALOUSIE") return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_JALOUSIE;
    if (s == "SHUTTER") return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_SHUTTER;
    if (s == "AWNING") return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_AWNING;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::IfcShadingDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSignTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSignTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSignTypeEnum::Class() { return *IFC4X3_RC2_IfcSignTypeEnum_type; }

Ifc4x3_rc2::IfcSignTypeEnum::IfcSignTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSignTypeEnum::IfcSignTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSignTypeEnum::Value Ifc4x3_rc2::IfcSignTypeEnum::FromString(const std::string& s) {
    if (s == "MARKER") return ::Ifc4x3_rc2::IfcSignTypeEnum::IfcSignType_MARKER;
    if (s == "PICTORAL") return ::Ifc4x3_rc2::IfcSignTypeEnum::IfcSignType_PICTORAL;
    if (s == "MIRROR") return ::Ifc4x3_rc2::IfcSignTypeEnum::IfcSignType_MIRROR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSignTypeEnum::IfcSignType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSignTypeEnum::IfcSignType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSignalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSignalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSignalTypeEnum::Class() { return *IFC4X3_RC2_IfcSignalTypeEnum_type; }

Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSignalTypeEnum::Value Ifc4x3_rc2::IfcSignalTypeEnum::FromString(const std::string& s) {
    if (s == "VISUAL") return ::Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalType_VISUAL;
    if (s == "AUDIO") return ::Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalType_AUDIO;
    if (s == "MIXED") return ::Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalType_MIXED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSignalTypeEnum::IfcSignalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::Class() { return *IFC4X3_RC2_IfcSimplePropertyTemplateTypeEnum_type; }

Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSimplePropertyTemplateTypeEnum::Value Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::FromString(const std::string& s) {
    if (s == "P_SINGLEVALUE") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_SINGLEVALUE;
    if (s == "P_ENUMERATEDVALUE") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_ENUMERATEDVALUE;
    if (s == "P_BOUNDEDVALUE") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_BOUNDEDVALUE;
    if (s == "P_LISTVALUE") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_LISTVALUE;
    if (s == "P_TABLEVALUE") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_TABLEVALUE;
    if (s == "P_REFERENCEVALUE") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_P_REFERENCEVALUE;
    if (s == "Q_LENGTH") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_LENGTH;
    if (s == "Q_AREA") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_AREA;
    if (s == "Q_VOLUME") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_VOLUME;
    if (s == "Q_COUNT") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_COUNT;
    if (s == "Q_WEIGHT") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_WEIGHT;
    if (s == "Q_TIME") return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::IfcSimplePropertyTemplateType_Q_TIME;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSlabTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSlabTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSlabTypeEnum::Class() { return *IFC4X3_RC2_IfcSlabTypeEnum_type; }

Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSlabTypeEnum::Value Ifc4x3_rc2::IfcSlabTypeEnum::FromString(const std::string& s) {
    if (s == "FLOOR") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_FLOOR;
    if (s == "ROOF") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_ROOF;
    if (s == "LANDING") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_LANDING;
    if (s == "BASESLAB") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_BASESLAB;
    if (s == "APPROACH_SLAB") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_APPROACH_SLAB;
    if (s == "PAVING") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_PAVING;
    if (s == "WEARING") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_WEARING;
    if (s == "SIDEWALK") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_SIDEWALK;
    if (s == "TRACKSLAB") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_TRACKSLAB;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSlabTypeEnum::IfcSlabType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSolarDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSolarDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcSolarDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSolarDeviceTypeEnum::Value Ifc4x3_rc2::IfcSolarDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "SOLARCOLLECTOR") return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_SOLARCOLLECTOR;
    if (s == "SOLARPANEL") return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_SOLARPANEL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::IfcSolarDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Class() { return *IFC4X3_RC2_IfcSpaceHeaterTypeEnum_type; }

Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpaceHeaterTypeEnum::Value Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::FromString(const std::string& s) {
    if (s == "CONVECTOR") return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_CONVECTOR;
    if (s == "RADIATOR") return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_RADIATOR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::IfcSpaceHeaterType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSpaceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSpaceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSpaceTypeEnum::Class() { return *IFC4X3_RC2_IfcSpaceTypeEnum_type; }

Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpaceTypeEnum::Value Ifc4x3_rc2::IfcSpaceTypeEnum::FromString(const std::string& s) {
    if (s == "SPACE") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_SPACE;
    if (s == "PARKING") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_PARKING;
    if (s == "GFA") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_GFA;
    if (s == "INTERNAL") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_INTERNAL;
    if (s == "EXTERNAL") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_EXTERNAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSpaceTypeEnum::IfcSpaceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSpatialZoneTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSpatialZoneTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Class() { return *IFC4X3_RC2_IfcSpatialZoneTypeEnum_type; }

Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc2::IfcSpatialZoneTypeEnum::FromString(const std::string& s) {
    if (s == "CONSTRUCTION") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_CONSTRUCTION;
    if (s == "FIRESAFETY") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_FIRESAFETY;
    if (s == "LIGHTING") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_LIGHTING;
    if (s == "OCCUPANCY") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_OCCUPANCY;
    if (s == "SECURITY") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_SECURITY;
    if (s == "THERMAL") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_THERMAL;
    if (s == "TRANSPORT") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_TRANSPORT;
    if (s == "VENTILATION") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_VENTILATION;
    if (s == "RESERVATION") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_RESERVATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::IfcSpatialZoneType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStackTerminalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStackTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStackTerminalTypeEnum::Class() { return *IFC4X3_RC2_IfcStackTerminalTypeEnum_type; }

Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStackTerminalTypeEnum::Value Ifc4x3_rc2::IfcStackTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "BIRDCAGE") return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalType_BIRDCAGE;
    if (s == "COWL") return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalType_COWL;
    if (s == "RAINWATERHOPPER") return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalType_RAINWATERHOPPER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::IfcStackTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStairFlightTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStairFlightTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStairFlightTypeEnum::Class() { return *IFC4X3_RC2_IfcStairFlightTypeEnum_type; }

Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStairFlightTypeEnum::Value Ifc4x3_rc2::IfcStairFlightTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_STRAIGHT;
    if (s == "WINDER") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_WINDER;
    if (s == "SPIRAL") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_SPIRAL;
    if (s == "CURVED") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_CURVED;
    if (s == "FREEFORM") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_FREEFORM;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::IfcStairFlightType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStairTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStairTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStairTypeEnum::Class() { return *IFC4X3_RC2_IfcStairTypeEnum_type; }

Ifc4x3_rc2::IfcStairTypeEnum::IfcStairTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStairTypeEnum::IfcStairTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStairTypeEnum::Value Ifc4x3_rc2::IfcStairTypeEnum::FromString(const std::string& s) {
    if (s == "STRAIGHT_RUN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_STRAIGHT_RUN_STAIR;
    if (s == "TWO_STRAIGHT_RUN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_TWO_STRAIGHT_RUN_STAIR;
    if (s == "QUARTER_WINDING_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_QUARTER_WINDING_STAIR;
    if (s == "QUARTER_TURN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_QUARTER_TURN_STAIR;
    if (s == "HALF_WINDING_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_HALF_WINDING_STAIR;
    if (s == "HALF_TURN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_HALF_TURN_STAIR;
    if (s == "TWO_QUARTER_WINDING_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_TWO_QUARTER_WINDING_STAIR;
    if (s == "TWO_QUARTER_TURN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_TWO_QUARTER_TURN_STAIR;
    if (s == "THREE_QUARTER_WINDING_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_THREE_QUARTER_WINDING_STAIR;
    if (s == "THREE_QUARTER_TURN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_THREE_QUARTER_TURN_STAIR;
    if (s == "SPIRAL_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_SPIRAL_STAIR;
    if (s == "DOUBLE_RETURN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_DOUBLE_RETURN_STAIR;
    if (s == "CURVED_RUN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_CURVED_RUN_STAIR;
    if (s == "TWO_CURVED_RUN_STAIR") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_TWO_CURVED_RUN_STAIR;
    if (s == "LADDER") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_LADDER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStairTypeEnum::IfcStairType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStateEnum::declaration() const { return *IFC4X3_RC2_IfcStateEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStateEnum::Class() { return *IFC4X3_RC2_IfcStateEnum_type; }

Ifc4x3_rc2::IfcStateEnum::IfcStateEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStateEnum::IfcStateEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStateEnum::Value Ifc4x3_rc2::IfcStateEnum::FromString(const std::string& s) {
    if (s == "READWRITE") return ::Ifc4x3_rc2::IfcStateEnum::IfcState_READWRITE;
    if (s == "READONLY") return ::Ifc4x3_rc2::IfcStateEnum::IfcState_READONLY;
    if (s == "LOCKED") return ::Ifc4x3_rc2::IfcStateEnum::IfcState_LOCKED;
    if (s == "READWRITELOCKED") return ::Ifc4x3_rc2::IfcStateEnum::IfcState_READWRITELOCKED;
    if (s == "READONLYLOCKED") return ::Ifc4x3_rc2::IfcStateEnum::IfcState_READONLYLOCKED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Class() { return *IFC4X3_RC2_IfcStructuralCurveActivityTypeEnum_type; }

Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::FromString(const std::string& s) {
    if (s == "CONST") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_CONST;
    if (s == "LINEAR") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_LINEAR;
    if (s == "POLYGONAL") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_POLYGONAL;
    if (s == "EQUIDISTANT") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_EQUIDISTANT;
    if (s == "SINUS") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_SINUS;
    if (s == "PARABOLA") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_PARABOLA;
    if (s == "DISCRETE") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_DISCRETE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::IfcStructuralCurveActivityType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::Class() { return *IFC4X3_RC2_IfcStructuralCurveMemberTypeEnum_type; }

Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralCurveMemberTypeEnum::Value Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::FromString(const std::string& s) {
    if (s == "RIGID_JOINED_MEMBER") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_RIGID_JOINED_MEMBER;
    if (s == "PIN_JOINED_MEMBER") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_PIN_JOINED_MEMBER;
    if (s == "CABLE") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_CABLE;
    if (s == "TENSION_MEMBER") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_TENSION_MEMBER;
    if (s == "COMPRESSION_MEMBER") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_COMPRESSION_MEMBER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::IfcStructuralCurveMemberType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceActivityTypeEnum_type; }

Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::FromString(const std::string& s) {
    if (s == "CONST") return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_CONST;
    if (s == "BILINEAR") return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_BILINEAR;
    if (s == "DISCRETE") return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_DISCRETE;
    if (s == "ISOCONTOUR") return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_ISOCONTOUR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::IfcStructuralSurfaceActivityType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceMemberTypeEnum_type; }

Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::FromString(const std::string& s) {
    if (s == "BENDING_ELEMENT") return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_BENDING_ELEMENT;
    if (s == "MEMBRANE_ELEMENT") return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_MEMBRANE_ELEMENT;
    if (s == "SHELL") return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_SHELL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::IfcStructuralSurfaceMemberType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSubContractResourceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSubContractResourceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Class() { return *IFC4X3_RC2_IfcSubContractResourceTypeEnum_type; }

Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSubContractResourceTypeEnum::Value Ifc4x3_rc2::IfcSubContractResourceTypeEnum::FromString(const std::string& s) {
    if (s == "PURCHASE") return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_PURCHASE;
    if (s == "WORK") return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_WORK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::IfcSubContractResourceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::Class() { return *IFC4X3_RC2_IfcSurfaceFeatureTypeEnum_type; }

Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSurfaceFeatureTypeEnum::Value Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::FromString(const std::string& s) {
    if (s == "MARK") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_MARK;
    if (s == "TAG") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TAG;
    if (s == "TREATMENT") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TREATMENT;
    if (s == "DEFECT") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_DEFECT;
    if (s == "HATCHMARKING") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_HATCHMARKING;
    if (s == "LINEMARKING") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_LINEMARKING;
    if (s == "PAVEMENTSURFACEMARKING") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_PAVEMENTSURFACEMARKING;
    if (s == "SYMBOLMARKING") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_SYMBOLMARKING;
    if (s == "NONSKIDSURFACING") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_NONSKIDSURFACING;
    if (s == "RUMBLESTRIP") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_RUMBLESTRIP;
    if (s == "TRANSVERSERUMBLESTRIP") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_TRANSVERSERUMBLESTRIP;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::IfcSurfaceFeatureType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSurfaceSide::declaration() const { return *IFC4X3_RC2_IfcSurfaceSide_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSurfaceSide::Class() { return *IFC4X3_RC2_IfcSurfaceSide_type; }

Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSurfaceSide::Value Ifc4x3_rc2::IfcSurfaceSide::FromString(const std::string& s) {
    if (s == "POSITIVE") return ::Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide_POSITIVE;
    if (s == "NEGATIVE") return ::Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide_NEGATIVE;
    if (s == "BOTH") return ::Ifc4x3_rc2::IfcSurfaceSide::IfcSurfaceSide_BOTH;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Class() { return *IFC4X3_RC2_IfcSwitchingDeviceTypeEnum_type; }

Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSwitchingDeviceTypeEnum::Value Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::FromString(const std::string& s) {
    if (s == "CONTACTOR") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_CONTACTOR;
    if (s == "DIMMERSWITCH") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_DIMMERSWITCH;
    if (s == "EMERGENCYSTOP") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_EMERGENCYSTOP;
    if (s == "KEYPAD") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_KEYPAD;
    if (s == "MOMENTARYSWITCH") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_MOMENTARYSWITCH;
    if (s == "SELECTORSWITCH") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_SELECTORSWITCH;
    if (s == "STARTER") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_STARTER;
    if (s == "SWITCHDISCONNECTOR") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_SWITCHDISCONNECTOR;
    if (s == "TOGGLESWITCH") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_TOGGLESWITCH;
    if (s == "RELAY") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_RELAY;
    if (s == "START_AND_STOP_EQUIPMENT") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_START_AND_STOP_EQUIPMENT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::IfcSwitchingDeviceType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Class() { return *IFC4X3_RC2_IfcSystemFurnitureElementTypeEnum_type; }

Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSystemFurnitureElementTypeEnum::Value Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::FromString(const std::string& s) {
    if (s == "PANEL") return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_PANEL;
    if (s == "WORKSURFACE") return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_WORKSURFACE;
    if (s == "SUBRACK") return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_SUBRACK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::IfcSystemFurnitureElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTankTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTankTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTankTypeEnum::Class() { return *IFC4X3_RC2_IfcTankTypeEnum_type; }

Ifc4x3_rc2::IfcTankTypeEnum::IfcTankTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTankTypeEnum::IfcTankTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTankTypeEnum::Value Ifc4x3_rc2::IfcTankTypeEnum::FromString(const std::string& s) {
    if (s == "BASIN") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_BASIN;
    if (s == "BREAKPRESSURE") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_BREAKPRESSURE;
    if (s == "EXPANSION") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_EXPANSION;
    if (s == "FEEDANDEXPANSION") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_FEEDANDEXPANSION;
    if (s == "PRESSUREVESSEL") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_PRESSUREVESSEL;
    if (s == "STORAGE") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_STORAGE;
    if (s == "VESSEL") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_VESSEL;
    if (s == "OILRETENTIONTRAY") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_OILRETENTIONTRAY;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTankTypeEnum::IfcTankType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTaskDurationEnum::declaration() const { return *IFC4X3_RC2_IfcTaskDurationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTaskDurationEnum::Class() { return *IFC4X3_RC2_IfcTaskDurationEnum_type; }

Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDurationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDurationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTaskDurationEnum::Value Ifc4x3_rc2::IfcTaskDurationEnum::FromString(const std::string& s) {
    if (s == "ELAPSEDTIME") return ::Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDuration_ELAPSEDTIME;
    if (s == "WORKTIME") return ::Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDuration_WORKTIME;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTaskDurationEnum::IfcTaskDuration_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTaskTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTaskTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTaskTypeEnum::Class() { return *IFC4X3_RC2_IfcTaskTypeEnum_type; }

Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTaskTypeEnum::Value Ifc4x3_rc2::IfcTaskTypeEnum::FromString(const std::string& s) {
    if (s == "ATTENDANCE") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_ATTENDANCE;
    if (s == "CONSTRUCTION") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_CONSTRUCTION;
    if (s == "DEMOLITION") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_DEMOLITION;
    if (s == "DISMANTLE") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_DISMANTLE;
    if (s == "DISPOSAL") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_DISPOSAL;
    if (s == "INSTALLATION") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_INSTALLATION;
    if (s == "LOGISTIC") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_LOGISTIC;
    if (s == "MAINTENANCE") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_MAINTENANCE;
    if (s == "MOVE") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_MOVE;
    if (s == "OPERATION") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_OPERATION;
    if (s == "REMOVAL") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_REMOVAL;
    if (s == "RENOVATION") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_RENOVATION;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTaskTypeEnum::IfcTaskType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTendonAnchorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTendonAnchorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Class() { return *IFC4X3_RC2_IfcTendonAnchorTypeEnum_type; }

Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTendonAnchorTypeEnum::Value Ifc4x3_rc2::IfcTendonAnchorTypeEnum::FromString(const std::string& s) {
    if (s == "COUPLER") return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_COUPLER;
    if (s == "FIXED_END") return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_FIXED_END;
    if (s == "TENSIONING_END") return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_TENSIONING_END;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::IfcTendonAnchorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTendonConduitTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTendonConduitTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTendonConduitTypeEnum::Class() { return *IFC4X3_RC2_IfcTendonConduitTypeEnum_type; }

Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTendonConduitTypeEnum::Value Ifc4x3_rc2::IfcTendonConduitTypeEnum::FromString(const std::string& s) {
    if (s == "DUCT") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_DUCT;
    if (s == "COUPLER") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_COUPLER;
    if (s == "GROUTING_DUCT") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_GROUTING_DUCT;
    if (s == "TRUMPET") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_TRUMPET;
    if (s == "DIABOLO") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_DIABOLO;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::IfcTendonConduitType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTendonTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTendonTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTendonTypeEnum::Class() { return *IFC4X3_RC2_IfcTendonTypeEnum_type; }

Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTendonTypeEnum::Value Ifc4x3_rc2::IfcTendonTypeEnum::FromString(const std::string& s) {
    if (s == "BAR") return ::Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonType_BAR;
    if (s == "COATED") return ::Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonType_COATED;
    if (s == "STRAND") return ::Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonType_STRAND;
    if (s == "WIRE") return ::Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonType_WIRE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTendonTypeEnum::IfcTendonType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTextPath::declaration() const { return *IFC4X3_RC2_IfcTextPath_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTextPath::Class() { return *IFC4X3_RC2_IfcTextPath_type; }

Ifc4x3_rc2::IfcTextPath::IfcTextPath(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTextPath::IfcTextPath(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTextPath::Value Ifc4x3_rc2::IfcTextPath::FromString(const std::string& s) {
    if (s == "LEFT") return ::Ifc4x3_rc2::IfcTextPath::IfcTextPath_LEFT;
    if (s == "RIGHT") return ::Ifc4x3_rc2::IfcTextPath::IfcTextPath_RIGHT;
    if (s == "UP") return ::Ifc4x3_rc2::IfcTextPath::IfcTextPath_UP;
    if (s == "DOWN") return ::Ifc4x3_rc2::IfcTextPath::IfcTextPath_DOWN;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::Class() { return *IFC4X3_RC2_IfcTimeSeriesDataTypeEnum_type; }

Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTimeSeriesDataTypeEnum::Value Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::FromString(const std::string& s) {
    if (s == "CONTINUOUS") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_CONTINUOUS;
    if (s == "DISCRETE") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_DISCRETE;
    if (s == "DISCRETEBINARY") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_DISCRETEBINARY;
    if (s == "PIECEWISEBINARY") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_PIECEWISEBINARY;
    if (s == "PIECEWISECONSTANT") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_PIECEWISECONSTANT;
    if (s == "PIECEWISECONTINUOUS") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_PIECEWISECONTINUOUS;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::IfcTimeSeriesDataType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTrackElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTrackElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTrackElementTypeEnum::Class() { return *IFC4X3_RC2_IfcTrackElementTypeEnum_type; }

Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTrackElementTypeEnum::Value Ifc4x3_rc2::IfcTrackElementTypeEnum::FromString(const std::string& s) {
    if (s == "TRACKENDOFALIGNMENT") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_TRACKENDOFALIGNMENT;
    if (s == "BLOCKINGDEVICE") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_BLOCKINGDEVICE;
    if (s == "VEHICLESTOP") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_VEHICLESTOP;
    if (s == "SLEEPER") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_SLEEPER;
    if (s == "HALF_SET_OF_BLADES") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_HALF_SET_OF_BLADES;
    if (s == "SPEEDREGULATOR") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_SPEEDREGULATOR;
    if (s == "DERAILER") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_DERAILER;
    if (s == "FROG") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_FROG;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::IfcTrackElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransformerTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTransformerTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransformerTypeEnum::Class() { return *IFC4X3_RC2_IfcTransformerTypeEnum_type; }

Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTransformerTypeEnum::Value Ifc4x3_rc2::IfcTransformerTypeEnum::FromString(const std::string& s) {
    if (s == "CURRENT") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_CURRENT;
    if (s == "FREQUENCY") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_FREQUENCY;
    if (s == "INVERTER") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_INVERTER;
    if (s == "RECTIFIER") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_RECTIFIER;
    if (s == "VOLTAGE") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_VOLTAGE;
    if (s == "CHOPPER") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_CHOPPER;
    if (s == "COMBINED") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_COMBINED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTransformerTypeEnum::IfcTransformerType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransitionCode::declaration() const { return *IFC4X3_RC2_IfcTransitionCode_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransitionCode::Class() { return *IFC4X3_RC2_IfcTransitionCode_type; }

Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTransitionCode::Value Ifc4x3_rc2::IfcTransitionCode::FromString(const std::string& s) {
    if (s == "DISCONTINUOUS") return ::Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode_DISCONTINUOUS;
    if (s == "CONTINUOUS") return ::Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode_CONTINUOUS;
    if (s == "CONTSAMEGRADIENT") return ::Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENT;
    if (s == "CONTSAMEGRADIENTSAMECURVATURE") return ::Ifc4x3_rc2::IfcTransitionCode::IfcTransitionCode_CONTSAMEGRADIENTSAMECURVATURE;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransitionCurveType::declaration() const { return *IFC4X3_RC2_IfcTransitionCurveType_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransitionCurveType::Class() { return *IFC4X3_RC2_IfcTransitionCurveType_type; }

Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTransitionCurveType::Value Ifc4x3_rc2::IfcTransitionCurveType::FromString(const std::string& s) {
    if (s == "BIQUADRATICPARABOLA") return ::Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType_BIQUADRATICPARABOLA;
    if (s == "BLOSSCURVE") return ::Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType_BLOSSCURVE;
    if (s == "CLOTHOIDCURVE") return ::Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType_CLOTHOIDCURVE;
    if (s == "COSINECURVE") return ::Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType_COSINECURVE;
    if (s == "CUBICPARABOLA") return ::Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType_CUBICPARABOLA;
    if (s == "SINECURVE") return ::Ifc4x3_rc2::IfcTransitionCurveType::IfcTransitionCurveType_SINECURVE;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::Class() { return *IFC4X3_RC2_IfcTransportElementFixedTypeEnum_type; }

Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTransportElementFixedTypeEnum::Value Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::FromString(const std::string& s) {
    if (s == "ELEVATOR") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_ELEVATOR;
    if (s == "ESCALATOR") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_ESCALATOR;
    if (s == "MOVINGWALKWAY") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_MOVINGWALKWAY;
    if (s == "CRANEWAY") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_CRANEWAY;
    if (s == "LIFTINGGEAR") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_LIFTINGGEAR;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTransportElementFixedTypeEnum::IfcTransportElementFixedType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::Class() { return *IFC4X3_RC2_IfcTransportElementNonFixedTypeEnum_type; }

Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTransportElementNonFixedTypeEnum::Value Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::FromString(const std::string& s) {
    if (s == "VEHICLE") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLE;
    if (s == "VEHICLETRACKED") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLETRACKED;
    if (s == "ROLLINGSTOCK") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_ROLLINGSTOCK;
    if (s == "VEHICLEWHEELED") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLEWHEELED;
    if (s == "VEHICLEAIR") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLEAIR;
    if (s == "CARGO") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_CARGO;
    if (s == "VEHICLEMARINE") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_VEHICLEMARINE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTransportElementNonFixedTypeEnum::IfcTransportElementNonFixedType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTrimmingPreference::declaration() const { return *IFC4X3_RC2_IfcTrimmingPreference_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTrimmingPreference::Class() { return *IFC4X3_RC2_IfcTrimmingPreference_type; }

Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTrimmingPreference::Value Ifc4x3_rc2::IfcTrimmingPreference::FromString(const std::string& s) {
    if (s == "CARTESIAN") return ::Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference_CARTESIAN;
    if (s == "PARAMETER") return ::Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference_PARAMETER;
    if (s == "UNSPECIFIED") return ::Ifc4x3_rc2::IfcTrimmingPreference::IfcTrimmingPreference_UNSPECIFIED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTubeBundleTypeEnum::declaration() const { return *IFC4X3_RC2_IfcTubeBundleTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcTubeBundleTypeEnum::Class() { return *IFC4X3_RC2_IfcTubeBundleTypeEnum_type; }

Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTubeBundleTypeEnum::Value Ifc4x3_rc2::IfcTubeBundleTypeEnum::FromString(const std::string& s) {
    if (s == "FINNED") return ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleType_FINNED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::IfcTubeBundleType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcUnitEnum::declaration() const { return *IFC4X3_RC2_IfcUnitEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcUnitEnum::Class() { return *IFC4X3_RC2_IfcUnitEnum_type; }

Ifc4x3_rc2::IfcUnitEnum::IfcUnitEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

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

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::declaration() const { return *IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Class() { return *IFC4X3_RC2_IfcUnitaryControlElementTypeEnum_type; }

Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcUnitaryControlElementTypeEnum::Value Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::FromString(const std::string& s) {
    if (s == "ALARMPANEL") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_ALARMPANEL;
    if (s == "CONTROLPANEL") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_CONTROLPANEL;
    if (s == "GASDETECTIONPANEL") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_GASDETECTIONPANEL;
    if (s == "INDICATORPANEL") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_INDICATORPANEL;
    if (s == "MIMICPANEL") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_MIMICPANEL;
    if (s == "HUMIDISTAT") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_HUMIDISTAT;
    if (s == "THERMOSTAT") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_THERMOSTAT;
    if (s == "WEATHERSTATION") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_WEATHERSTATION;
    if (s == "COMBINED") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_COMBINED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::IfcUnitaryControlElementType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::declaration() const { return *IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Class() { return *IFC4X3_RC2_IfcUnitaryEquipmentTypeEnum_type; }

Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcUnitaryEquipmentTypeEnum::Value Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::FromString(const std::string& s) {
    if (s == "AIRHANDLER") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_AIRHANDLER;
    if (s == "AIRCONDITIONINGUNIT") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_AIRCONDITIONINGUNIT;
    if (s == "DEHUMIDIFIER") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_DEHUMIDIFIER;
    if (s == "SPLITSYSTEM") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_SPLITSYSTEM;
    if (s == "ROOFTOPUNIT") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_ROOFTOPUNIT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::IfcUnitaryEquipmentType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcValveTypeEnum::declaration() const { return *IFC4X3_RC2_IfcValveTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcValveTypeEnum::Class() { return *IFC4X3_RC2_IfcValveTypeEnum_type; }

Ifc4x3_rc2::IfcValveTypeEnum::IfcValveTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcValveTypeEnum::IfcValveTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcValveTypeEnum::Value Ifc4x3_rc2::IfcValveTypeEnum::FromString(const std::string& s) {
    if (s == "AIRRELEASE") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_AIRRELEASE;
    if (s == "ANTIVACUUM") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_ANTIVACUUM;
    if (s == "CHANGEOVER") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_CHANGEOVER;
    if (s == "CHECK") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_CHECK;
    if (s == "COMMISSIONING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_COMMISSIONING;
    if (s == "DIVERTING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_DIVERTING;
    if (s == "DRAWOFFCOCK") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_DRAWOFFCOCK;
    if (s == "DOUBLECHECK") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_DOUBLECHECK;
    if (s == "DOUBLEREGULATING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_DOUBLEREGULATING;
    if (s == "FAUCET") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_FAUCET;
    if (s == "FLUSHING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_FLUSHING;
    if (s == "GASCOCK") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_GASCOCK;
    if (s == "GASTAP") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_GASTAP;
    if (s == "ISOLATING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_ISOLATING;
    if (s == "MIXING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_MIXING;
    if (s == "PRESSUREREDUCING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_PRESSUREREDUCING;
    if (s == "PRESSURERELIEF") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_PRESSURERELIEF;
    if (s == "REGULATING") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_REGULATING;
    if (s == "SAFETYCUTOFF") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_SAFETYCUTOFF;
    if (s == "STEAMTRAP") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_STEAMTRAP;
    if (s == "STOPCOCK") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_STOPCOCK;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcValveTypeEnum::IfcValveType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcVibrationDamperTypeEnum::declaration() const { return *IFC4X3_RC2_IfcVibrationDamperTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Class() { return *IFC4X3_RC2_IfcVibrationDamperTypeEnum_type; }

Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVibrationDamperTypeEnum::Value Ifc4x3_rc2::IfcVibrationDamperTypeEnum::FromString(const std::string& s) {
    if (s == "BENDING_YIELD") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_BENDING_YIELD;
    if (s == "SHEAR_YIELD") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_SHEAR_YIELD;
    if (s == "AXIAL_YIELD") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_AXIAL_YIELD;
    if (s == "FRICTION") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_FRICTION;
    if (s == "VISCOUS") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_VISCOUS;
    if (s == "RUBBER") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_RUBBER;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::IfcVibrationDamperType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::declaration() const { return *IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Class() { return *IFC4X3_RC2_IfcVibrationIsolatorTypeEnum_type; }

Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVibrationIsolatorTypeEnum::Value Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::FromString(const std::string& s) {
    if (s == "COMPRESSION") return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_COMPRESSION;
    if (s == "SPRING") return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_SPRING;
    if (s == "BASE") return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_BASE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::IfcVibrationIsolatorType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::declaration() const { return *IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::Class() { return *IFC4X3_RC2_IfcVoidingFeatureTypeEnum_type; }

Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVoidingFeatureTypeEnum::Value Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::FromString(const std::string& s) {
    if (s == "CUTOUT") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_CUTOUT;
    if (s == "NOTCH") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_NOTCH;
    if (s == "HOLE") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_HOLE;
    if (s == "MITER") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_MITER;
    if (s == "CHAMFER") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_CHAMFER;
    if (s == "EDGE") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_EDGE;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::IfcVoidingFeatureType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWallTypeEnum::declaration() const { return *IFC4X3_RC2_IfcWallTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWallTypeEnum::Class() { return *IFC4X3_RC2_IfcWallTypeEnum_type; }

Ifc4x3_rc2::IfcWallTypeEnum::IfcWallTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWallTypeEnum::IfcWallTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWallTypeEnum::Value Ifc4x3_rc2::IfcWallTypeEnum::FromString(const std::string& s) {
    if (s == "MOVABLE") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_MOVABLE;
    if (s == "PARAPET") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_PARAPET;
    if (s == "PARTITIONING") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_PARTITIONING;
    if (s == "PLUMBINGWALL") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_PLUMBINGWALL;
    if (s == "SHEAR") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_SHEAR;
    if (s == "SOLIDWALL") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_SOLIDWALL;
    if (s == "STANDARD") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_STANDARD;
    if (s == "POLYGONAL") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_POLYGONAL;
    if (s == "ELEMENTEDWALL") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_ELEMENTEDWALL;
    if (s == "RETAININGWALL") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_RETAININGWALL;
    if (s == "WAVEWALL") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_WAVEWALL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWallTypeEnum::IfcWallType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWasteTerminalTypeEnum::declaration() const { return *IFC4X3_RC2_IfcWasteTerminalTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Class() { return *IFC4X3_RC2_IfcWasteTerminalTypeEnum_type; }

Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWasteTerminalTypeEnum::Value Ifc4x3_rc2::IfcWasteTerminalTypeEnum::FromString(const std::string& s) {
    if (s == "FLOORTRAP") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_FLOORTRAP;
    if (s == "FLOORWASTE") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_FLOORWASTE;
    if (s == "GULLYSUMP") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_GULLYSUMP;
    if (s == "GULLYTRAP") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_GULLYTRAP;
    if (s == "ROOFDRAIN") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_ROOFDRAIN;
    if (s == "WASTEDISPOSALUNIT") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_WASTEDISPOSALUNIT;
    if (s == "WASTETRAP") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_WASTETRAP;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::IfcWasteTerminalType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowPanelOperationEnum::declaration() const { return *IFC4X3_RC2_IfcWindowPanelOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowPanelOperationEnum::Class() { return *IFC4X3_RC2_IfcWindowPanelOperationEnum_type; }

Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWindowPanelOperationEnum::Value Ifc4x3_rc2::IfcWindowPanelOperationEnum::FromString(const std::string& s) {
    if (s == "SIDEHUNGRIGHTHAND") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SIDEHUNGRIGHTHAND;
    if (s == "SIDEHUNGLEFTHAND") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SIDEHUNGLEFTHAND;
    if (s == "TILTANDTURNRIGHTHAND") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_TILTANDTURNRIGHTHAND;
    if (s == "TILTANDTURNLEFTHAND") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_TILTANDTURNLEFTHAND;
    if (s == "TOPHUNG") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_TOPHUNG;
    if (s == "BOTTOMHUNG") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_BOTTOMHUNG;
    if (s == "PIVOTHORIZONTAL") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_PIVOTHORIZONTAL;
    if (s == "PIVOTVERTICAL") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_PIVOTVERTICAL;
    if (s == "SLIDINGHORIZONTAL") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SLIDINGHORIZONTAL;
    if (s == "SLIDINGVERTICAL") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_SLIDINGVERTICAL;
    if (s == "REMOVABLECASEMENT") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_REMOVABLECASEMENT;
    if (s == "FIXEDCASEMENT") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_FIXEDCASEMENT;
    if (s == "OTHEROPERATION") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_OTHEROPERATION;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::IfcWindowPanelOperation_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowPanelPositionEnum::declaration() const { return *IFC4X3_RC2_IfcWindowPanelPositionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowPanelPositionEnum::Class() { return *IFC4X3_RC2_IfcWindowPanelPositionEnum_type; }

Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPositionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWindowPanelPositionEnum::Value Ifc4x3_rc2::IfcWindowPanelPositionEnum::FromString(const std::string& s) {
    if (s == "LEFT") return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_LEFT;
    if (s == "MIDDLE") return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_MIDDLE;
    if (s == "RIGHT") return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_RIGHT;
    if (s == "BOTTOM") return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_BOTTOM;
    if (s == "TOP") return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_TOP;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::IfcWindowPanelPosition_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowStyleConstructionEnum::declaration() const { return *IFC4X3_RC2_IfcWindowStyleConstructionEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowStyleConstructionEnum::Class() { return *IFC4X3_RC2_IfcWindowStyleConstructionEnum_type; }

Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstructionEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWindowStyleConstructionEnum::Value Ifc4x3_rc2::IfcWindowStyleConstructionEnum::FromString(const std::string& s) {
    if (s == "ALUMINIUM") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_ALUMINIUM;
    if (s == "HIGH_GRADE_STEEL") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_HIGH_GRADE_STEEL;
    if (s == "STEEL") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_STEEL;
    if (s == "WOOD") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_WOOD;
    if (s == "ALUMINIUM_WOOD") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_ALUMINIUM_WOOD;
    if (s == "PLASTIC") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_PLASTIC;
    if (s == "OTHER_CONSTRUCTION") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_OTHER_CONSTRUCTION;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::IfcWindowStyleConstruction_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowStyleOperationEnum::declaration() const { return *IFC4X3_RC2_IfcWindowStyleOperationEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowStyleOperationEnum::Class() { return *IFC4X3_RC2_IfcWindowStyleOperationEnum_type; }

Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperationEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWindowStyleOperationEnum::Value Ifc4x3_rc2::IfcWindowStyleOperationEnum::FromString(const std::string& s) {
    if (s == "SINGLE_PANEL") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_SINGLE_PANEL;
    if (s == "DOUBLE_PANEL_VERTICAL") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_DOUBLE_PANEL_VERTICAL;
    if (s == "DOUBLE_PANEL_HORIZONTAL") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_DOUBLE_PANEL_HORIZONTAL;
    if (s == "TRIPLE_PANEL_VERTICAL") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_VERTICAL;
    if (s == "TRIPLE_PANEL_BOTTOM") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_BOTTOM;
    if (s == "TRIPLE_PANEL_TOP") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_TOP;
    if (s == "TRIPLE_PANEL_LEFT") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_LEFT;
    if (s == "TRIPLE_PANEL_RIGHT") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_RIGHT;
    if (s == "TRIPLE_PANEL_HORIZONTAL") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_TRIPLE_PANEL_HORIZONTAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::IfcWindowStyleOperation_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowTypeEnum::declaration() const { return *IFC4X3_RC2_IfcWindowTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowTypeEnum::Class() { return *IFC4X3_RC2_IfcWindowTypeEnum_type; }

Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWindowTypeEnum::Value Ifc4x3_rc2::IfcWindowTypeEnum::FromString(const std::string& s) {
    if (s == "WINDOW") return ::Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowType_WINDOW;
    if (s == "SKYLIGHT") return ::Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowType_SKYLIGHT;
    if (s == "LIGHTDOME") return ::Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowType_LIGHTDOME;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWindowTypeEnum::IfcWindowType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowTypePartitioningEnum::declaration() const { return *IFC4X3_RC2_IfcWindowTypePartitioningEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Class() { return *IFC4X3_RC2_IfcWindowTypePartitioningEnum_type; }

Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioningEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc2::IfcWindowTypePartitioningEnum::FromString(const std::string& s) {
    if (s == "SINGLE_PANEL") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_SINGLE_PANEL;
    if (s == "DOUBLE_PANEL_VERTICAL") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_DOUBLE_PANEL_VERTICAL;
    if (s == "DOUBLE_PANEL_HORIZONTAL") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_DOUBLE_PANEL_HORIZONTAL;
    if (s == "TRIPLE_PANEL_VERTICAL") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_VERTICAL;
    if (s == "TRIPLE_PANEL_BOTTOM") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_BOTTOM;
    if (s == "TRIPLE_PANEL_TOP") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_TOP;
    if (s == "TRIPLE_PANEL_LEFT") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_LEFT;
    if (s == "TRIPLE_PANEL_RIGHT") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_RIGHT;
    if (s == "TRIPLE_PANEL_HORIZONTAL") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_TRIPLE_PANEL_HORIZONTAL;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::IfcWindowTypePartitioning_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWorkCalendarTypeEnum::declaration() const { return *IFC4X3_RC2_IfcWorkCalendarTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Class() { return *IFC4X3_RC2_IfcWorkCalendarTypeEnum_type; }

Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWorkCalendarTypeEnum::Value Ifc4x3_rc2::IfcWorkCalendarTypeEnum::FromString(const std::string& s) {
    if (s == "FIRSTSHIFT") return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_FIRSTSHIFT;
    if (s == "SECONDSHIFT") return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_SECONDSHIFT;
    if (s == "THIRDSHIFT") return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_THIRDSHIFT;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::IfcWorkCalendarType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWorkPlanTypeEnum::declaration() const { return *IFC4X3_RC2_IfcWorkPlanTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWorkPlanTypeEnum::Class() { return *IFC4X3_RC2_IfcWorkPlanTypeEnum_type; }

Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWorkPlanTypeEnum::Value Ifc4x3_rc2::IfcWorkPlanTypeEnum::FromString(const std::string& s) {
    if (s == "ACTUAL") return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanType_ACTUAL;
    if (s == "BASELINE") return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanType_BASELINE;
    if (s == "PLANNED") return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanType_PLANNED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::IfcWorkPlanType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWorkScheduleTypeEnum::declaration() const { return *IFC4X3_RC2_IfcWorkScheduleTypeEnum_type; }
const IfcParse::enumeration_type& Ifc4x3_rc2::IfcWorkScheduleTypeEnum::Class() { return *IFC4X3_RC2_IfcWorkScheduleTypeEnum_type; }

Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(IfcEntityInstanceData* e) {
    data_ = e;
}

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

Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleTypeEnum(const std::string& v) {
    data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWorkScheduleTypeEnum::Value Ifc4x3_rc2::IfcWorkScheduleTypeEnum::FromString(const std::string& s) {
    if (s == "ACTUAL") return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_ACTUAL;
    if (s == "BASELINE") return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_BASELINE;
    if (s == "PLANNED") return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_PLANNED;
    if (s == "USERDEFINED") return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_USERDEFINED;
    if (s == "NOTDEFINED") return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::IfcWorkScheduleType_NOTDEFINED;
    throw IfcException("Unable to find keyword in schema: " + s);
}

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

const IfcParse::select_type& Ifc4x3_rc2::IfcActorSelect::Class() { return *IFC4X3_RC2_IfcActorSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcAppliedValueSelect::Class() { return *IFC4X3_RC2_IfcAppliedValueSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcAxis2Placement::Class() { return *IFC4X3_RC2_IfcAxis2Placement_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcBendingParameterSelect::Class() { return *IFC4X3_RC2_IfcBendingParameterSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcBooleanOperand::Class() { return *IFC4X3_RC2_IfcBooleanOperand_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcClassificationReferenceSelect::Class() { return *IFC4X3_RC2_IfcClassificationReferenceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcClassificationSelect::Class() { return *IFC4X3_RC2_IfcClassificationSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcColour::Class() { return *IFC4X3_RC2_IfcColour_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcColourOrFactor::Class() { return *IFC4X3_RC2_IfcColourOrFactor_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCoordinateReferenceSystemSelect::Class() { return *IFC4X3_RC2_IfcCoordinateReferenceSystemSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCsgSelect::Class() { return *IFC4X3_RC2_IfcCsgSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCurveFontOrScaledCurveFontSelect::Class() { return *IFC4X3_RC2_IfcCurveFontOrScaledCurveFontSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCurveMeasureSelect::Class() { return *IFC4X3_RC2_IfcCurveMeasureSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCurveOnSurface::Class() { return *IFC4X3_RC2_IfcCurveOnSurface_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCurveOrEdgeCurve::Class() { return *IFC4X3_RC2_IfcCurveOrEdgeCurve_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcCurveStyleFontSelect::Class() { return *IFC4X3_RC2_IfcCurveStyleFontSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcDefinitionSelect::Class() { return *IFC4X3_RC2_IfcDefinitionSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcDerivedMeasureValue::Class() { return *IFC4X3_RC2_IfcDerivedMeasureValue_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcDocumentSelect::Class() { return *IFC4X3_RC2_IfcDocumentSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcFacilityPartTypeSelect::Class() { return *IFC4X3_RC2_IfcFacilityPartTypeSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcFillStyleSelect::Class() { return *IFC4X3_RC2_IfcFillStyleSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcGeometricSetSelect::Class() { return *IFC4X3_RC2_IfcGeometricSetSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcGridPlacementDirectionSelect::Class() { return *IFC4X3_RC2_IfcGridPlacementDirectionSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcHatchLineDistanceSelect::Class() { return *IFC4X3_RC2_IfcHatchLineDistanceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect::Class() { return *IFC4X3_RC2_IfcImpactProtectionDeviceTypeSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcInterferenceSelect::Class() { return *IFC4X3_RC2_IfcInterferenceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcLayeredItem::Class() { return *IFC4X3_RC2_IfcLayeredItem_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcLibrarySelect::Class() { return *IFC4X3_RC2_IfcLibrarySelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcLightDistributionDataSourceSelect::Class() { return *IFC4X3_RC2_IfcLightDistributionDataSourceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcLinearAxisSelect::Class() { return *IFC4X3_RC2_IfcLinearAxisSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcMaterialSelect::Class() { return *IFC4X3_RC2_IfcMaterialSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcMeasureValue::Class() { return *IFC4X3_RC2_IfcMeasureValue_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcMetricValueSelect::Class() { return *IFC4X3_RC2_IfcMetricValueSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect::Class() { return *IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect::Class() { return *IFC4X3_RC2_IfcModulusOfSubgradeReactionSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect::Class() { return *IFC4X3_RC2_IfcModulusOfTranslationalSubgradeReactionSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcObjectReferenceSelect::Class() { return *IFC4X3_RC2_IfcObjectReferenceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcPointOrVertexPoint::Class() { return *IFC4X3_RC2_IfcPointOrVertexPoint_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcPresentationStyleSelect::Class() { return *IFC4X3_RC2_IfcPresentationStyleSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcProcessSelect::Class() { return *IFC4X3_RC2_IfcProcessSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcProductRepresentationSelect::Class() { return *IFC4X3_RC2_IfcProductRepresentationSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcProductSelect::Class() { return *IFC4X3_RC2_IfcProductSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcPropertySetDefinitionSelect::Class() { return *IFC4X3_RC2_IfcPropertySetDefinitionSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcResourceObjectSelect::Class() { return *IFC4X3_RC2_IfcResourceObjectSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcResourceSelect::Class() { return *IFC4X3_RC2_IfcResourceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcRotationalStiffnessSelect::Class() { return *IFC4X3_RC2_IfcRotationalStiffnessSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSegmentIndexSelect::Class() { return *IFC4X3_RC2_IfcSegmentIndexSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcShell::Class() { return *IFC4X3_RC2_IfcShell_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSimpleValue::Class() { return *IFC4X3_RC2_IfcSimpleValue_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSizeSelect::Class() { return *IFC4X3_RC2_IfcSizeSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSolidOrShell::Class() { return *IFC4X3_RC2_IfcSolidOrShell_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSpaceBoundarySelect::Class() { return *IFC4X3_RC2_IfcSpaceBoundarySelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSpatialReferenceSelect::Class() { return *IFC4X3_RC2_IfcSpatialReferenceSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSpecularHighlightSelect::Class() { return *IFC4X3_RC2_IfcSpecularHighlightSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcStructuralActivityAssignmentSelect::Class() { return *IFC4X3_RC2_IfcStructuralActivityAssignmentSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcStyleAssignmentSelect::Class() { return *IFC4X3_RC2_IfcStyleAssignmentSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSurfaceOrFaceSurface::Class() { return *IFC4X3_RC2_IfcSurfaceOrFaceSurface_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcSurfaceStyleElementSelect::Class() { return *IFC4X3_RC2_IfcSurfaceStyleElementSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcTextFontSelect::Class() { return *IFC4X3_RC2_IfcTextFontSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcTimeOrRatioSelect::Class() { return *IFC4X3_RC2_IfcTimeOrRatioSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcTranslationalStiffnessSelect::Class() { return *IFC4X3_RC2_IfcTranslationalStiffnessSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcTransportElementTypeSelect::Class() { return *IFC4X3_RC2_IfcTransportElementTypeSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcTrimmingSelect::Class() { return *IFC4X3_RC2_IfcTrimmingSelect_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcUnit::Class() { return *IFC4X3_RC2_IfcUnit_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcValue::Class() { return *IFC4X3_RC2_IfcValue_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcVectorOrDirection::Class() { return *IFC4X3_RC2_IfcVectorOrDirection_type; }

const IfcParse::select_type& Ifc4x3_rc2::IfcWarpingStiffnessSelect::Class() { return *IFC4X3_RC2_IfcWarpingStiffnessSelect_type; }


// Function implementations for IfcAbsorbedDoseMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAbsorbedDoseMeasure::Class() { return *IFC4X3_RC2_IfcAbsorbedDoseMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAbsorbedDoseMeasure::declaration() const { return *IFC4X3_RC2_IfcAbsorbedDoseMeasure_type; }
Ifc4x3_rc2::IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcAbsorbedDoseMeasure::IfcAbsorbedDoseMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAbsorbedDoseMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcAbsorbedDoseMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAccelerationMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAccelerationMeasure::Class() { return *IFC4X3_RC2_IfcAccelerationMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAccelerationMeasure::declaration() const { return *IFC4X3_RC2_IfcAccelerationMeasure_type; }
Ifc4x3_rc2::IfcAccelerationMeasure::IfcAccelerationMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcAccelerationMeasure::IfcAccelerationMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAccelerationMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcAccelerationMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAmountOfSubstanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAmountOfSubstanceMeasure::Class() { return *IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAmountOfSubstanceMeasure::declaration() const { return *IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type; }
Ifc4x3_rc2::IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcAmountOfSubstanceMeasure::IfcAmountOfSubstanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAmountOfSubstanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcAmountOfSubstanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAngularVelocityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAngularVelocityMeasure::Class() { return *IFC4X3_RC2_IfcAngularVelocityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAngularVelocityMeasure::declaration() const { return *IFC4X3_RC2_IfcAngularVelocityMeasure_type; }
Ifc4x3_rc2::IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcAngularVelocityMeasure::IfcAngularVelocityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAngularVelocityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcAngularVelocityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcArcIndex
const IfcParse::type_declaration& Ifc4x3_rc2::IfcArcIndex::Class() { return *IFC4X3_RC2_IfcArcIndex_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcArcIndex::declaration() const { return *IFC4X3_RC2_IfcArcIndex_type; }
Ifc4x3_rc2::IfcArcIndex::IfcArcIndex(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcArcIndex::IfcArcIndex(std::vector< int > /*[3:3]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcArcIndex_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcArcIndex::operator std::vector< int > /*[3:3]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcAreaDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAreaDensityMeasure::Class() { return *IFC4X3_RC2_IfcAreaDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAreaDensityMeasure::declaration() const { return *IFC4X3_RC2_IfcAreaDensityMeasure_type; }
Ifc4x3_rc2::IfcAreaDensityMeasure::IfcAreaDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcAreaDensityMeasure::IfcAreaDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAreaDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcAreaDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcAreaMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAreaMeasure::Class() { return *IFC4X3_RC2_IfcAreaMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcAreaMeasure::declaration() const { return *IFC4X3_RC2_IfcAreaMeasure_type; }
Ifc4x3_rc2::IfcAreaMeasure::IfcAreaMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcAreaMeasure::IfcAreaMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAreaMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcAreaMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcBinary
const IfcParse::type_declaration& Ifc4x3_rc2::IfcBinary::Class() { return *IFC4X3_RC2_IfcBinary_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcBinary::declaration() const { return *IFC4X3_RC2_IfcBinary_type; }
Ifc4x3_rc2::IfcBinary::IfcBinary(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcBinary::IfcBinary(boost::dynamic_bitset<> v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBinary_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcBinary::operator boost::dynamic_bitset<>() const { return *data_->getArgument(0); }

// Function implementations for IfcBoolean
const IfcParse::type_declaration& Ifc4x3_rc2::IfcBoolean::Class() { return *IFC4X3_RC2_IfcBoolean_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcBoolean::declaration() const { return *IFC4X3_RC2_IfcBoolean_type; }
Ifc4x3_rc2::IfcBoolean::IfcBoolean(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcBoolean::IfcBoolean(bool v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBoolean_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcBoolean::operator bool() const { return *data_->getArgument(0); }

// Function implementations for IfcBoxAlignment
const IfcParse::type_declaration& Ifc4x3_rc2::IfcBoxAlignment::Class() { return *IFC4X3_RC2_IfcBoxAlignment_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcBoxAlignment::declaration() const { return *IFC4X3_RC2_IfcBoxAlignment_type; }
Ifc4x3_rc2::IfcBoxAlignment::IfcBoxAlignment(IfcEntityInstanceData* e) : IfcLabel((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcBoxAlignment::IfcBoxAlignment(std::string v) : IfcLabel((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBoxAlignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcBoxAlignment::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcCardinalPointReference
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCardinalPointReference::Class() { return *IFC4X3_RC2_IfcCardinalPointReference_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCardinalPointReference::declaration() const { return *IFC4X3_RC2_IfcCardinalPointReference_type; }
Ifc4x3_rc2::IfcCardinalPointReference::IfcCardinalPointReference(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcCardinalPointReference::IfcCardinalPointReference(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCardinalPointReference_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcCardinalPointReference::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcComplexNumber
const IfcParse::type_declaration& Ifc4x3_rc2::IfcComplexNumber::Class() { return *IFC4X3_RC2_IfcComplexNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcComplexNumber::declaration() const { return *IFC4X3_RC2_IfcComplexNumber_type; }
Ifc4x3_rc2::IfcComplexNumber::IfcComplexNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcComplexNumber::IfcComplexNumber(std::vector< double > /*[1:2]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcComplexNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcComplexNumber::operator std::vector< double > /*[1:2]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcCompoundPlaneAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCompoundPlaneAngleMeasure::Class() { return *IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCompoundPlaneAngleMeasure::declaration() const { return *IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type; }
Ifc4x3_rc2::IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcCompoundPlaneAngleMeasure::IfcCompoundPlaneAngleMeasure(std::vector< int > /*[3:4]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCompoundPlaneAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcCompoundPlaneAngleMeasure::operator std::vector< int > /*[3:4]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcContextDependentMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcContextDependentMeasure::Class() { return *IFC4X3_RC2_IfcContextDependentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcContextDependentMeasure::declaration() const { return *IFC4X3_RC2_IfcContextDependentMeasure_type; }
Ifc4x3_rc2::IfcContextDependentMeasure::IfcContextDependentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcContextDependentMeasure::IfcContextDependentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcContextDependentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcContextDependentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcCountMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCountMeasure::Class() { return *IFC4X3_RC2_IfcCountMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCountMeasure::declaration() const { return *IFC4X3_RC2_IfcCountMeasure_type; }
Ifc4x3_rc2::IfcCountMeasure::IfcCountMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcCountMeasure::IfcCountMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCountMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcCountMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcCurvatureMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCurvatureMeasure::Class() { return *IFC4X3_RC2_IfcCurvatureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcCurvatureMeasure::declaration() const { return *IFC4X3_RC2_IfcCurvatureMeasure_type; }
Ifc4x3_rc2::IfcCurvatureMeasure::IfcCurvatureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcCurvatureMeasure::IfcCurvatureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurvatureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcCurvatureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcDate
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDate::Class() { return *IFC4X3_RC2_IfcDate_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDate::declaration() const { return *IFC4X3_RC2_IfcDate_type; }
Ifc4x3_rc2::IfcDate::IfcDate(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDate::IfcDate(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDate::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDateTime
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDateTime::Class() { return *IFC4X3_RC2_IfcDateTime_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDateTime::declaration() const { return *IFC4X3_RC2_IfcDateTime_type; }
Ifc4x3_rc2::IfcDateTime::IfcDateTime(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDateTime::IfcDateTime(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDateTime_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDateTime::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDayInMonthNumber
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDayInMonthNumber::Class() { return *IFC4X3_RC2_IfcDayInMonthNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDayInMonthNumber::declaration() const { return *IFC4X3_RC2_IfcDayInMonthNumber_type; }
Ifc4x3_rc2::IfcDayInMonthNumber::IfcDayInMonthNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDayInMonthNumber::IfcDayInMonthNumber(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDayInMonthNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDayInMonthNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDayInWeekNumber
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDayInWeekNumber::Class() { return *IFC4X3_RC2_IfcDayInWeekNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDayInWeekNumber::declaration() const { return *IFC4X3_RC2_IfcDayInWeekNumber_type; }
Ifc4x3_rc2::IfcDayInWeekNumber::IfcDayInWeekNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDayInWeekNumber::IfcDayInWeekNumber(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDayInWeekNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDayInWeekNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDescriptiveMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDescriptiveMeasure::Class() { return *IFC4X3_RC2_IfcDescriptiveMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDescriptiveMeasure::declaration() const { return *IFC4X3_RC2_IfcDescriptiveMeasure_type; }
Ifc4x3_rc2::IfcDescriptiveMeasure::IfcDescriptiveMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDescriptiveMeasure::IfcDescriptiveMeasure(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDescriptiveMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDescriptiveMeasure::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDimensionCount
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDimensionCount::Class() { return *IFC4X3_RC2_IfcDimensionCount_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDimensionCount::declaration() const { return *IFC4X3_RC2_IfcDimensionCount_type; }
Ifc4x3_rc2::IfcDimensionCount::IfcDimensionCount(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDimensionCount::IfcDimensionCount(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDimensionCount_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDimensionCount::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcDoseEquivalentMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDoseEquivalentMeasure::Class() { return *IFC4X3_RC2_IfcDoseEquivalentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDoseEquivalentMeasure::declaration() const { return *IFC4X3_RC2_IfcDoseEquivalentMeasure_type; }
Ifc4x3_rc2::IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDoseEquivalentMeasure::IfcDoseEquivalentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDoseEquivalentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDoseEquivalentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcDuration
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDuration::Class() { return *IFC4X3_RC2_IfcDuration_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDuration::declaration() const { return *IFC4X3_RC2_IfcDuration_type; }
Ifc4x3_rc2::IfcDuration::IfcDuration(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDuration::IfcDuration(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDuration_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDuration::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcDynamicViscosityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDynamicViscosityMeasure::Class() { return *IFC4X3_RC2_IfcDynamicViscosityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcDynamicViscosityMeasure::declaration() const { return *IFC4X3_RC2_IfcDynamicViscosityMeasure_type; }
Ifc4x3_rc2::IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcDynamicViscosityMeasure::IfcDynamicViscosityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDynamicViscosityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcDynamicViscosityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricCapacitanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricCapacitanceMeasure::Class() { return *IFC4X3_RC2_IfcElectricCapacitanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricCapacitanceMeasure::declaration() const { return *IFC4X3_RC2_IfcElectricCapacitanceMeasure_type; }
Ifc4x3_rc2::IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcElectricCapacitanceMeasure::IfcElectricCapacitanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricCapacitanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcElectricCapacitanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricChargeMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricChargeMeasure::Class() { return *IFC4X3_RC2_IfcElectricChargeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricChargeMeasure::declaration() const { return *IFC4X3_RC2_IfcElectricChargeMeasure_type; }
Ifc4x3_rc2::IfcElectricChargeMeasure::IfcElectricChargeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcElectricChargeMeasure::IfcElectricChargeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricChargeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcElectricChargeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricConductanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricConductanceMeasure::Class() { return *IFC4X3_RC2_IfcElectricConductanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricConductanceMeasure::declaration() const { return *IFC4X3_RC2_IfcElectricConductanceMeasure_type; }
Ifc4x3_rc2::IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcElectricConductanceMeasure::IfcElectricConductanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricConductanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcElectricConductanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricCurrentMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricCurrentMeasure::Class() { return *IFC4X3_RC2_IfcElectricCurrentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricCurrentMeasure::declaration() const { return *IFC4X3_RC2_IfcElectricCurrentMeasure_type; }
Ifc4x3_rc2::IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcElectricCurrentMeasure::IfcElectricCurrentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricCurrentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcElectricCurrentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricResistanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricResistanceMeasure::Class() { return *IFC4X3_RC2_IfcElectricResistanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricResistanceMeasure::declaration() const { return *IFC4X3_RC2_IfcElectricResistanceMeasure_type; }
Ifc4x3_rc2::IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcElectricResistanceMeasure::IfcElectricResistanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricResistanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcElectricResistanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcElectricVoltageMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricVoltageMeasure::Class() { return *IFC4X3_RC2_IfcElectricVoltageMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcElectricVoltageMeasure::declaration() const { return *IFC4X3_RC2_IfcElectricVoltageMeasure_type; }
Ifc4x3_rc2::IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcElectricVoltageMeasure::IfcElectricVoltageMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElectricVoltageMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcElectricVoltageMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcEnergyMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcEnergyMeasure::Class() { return *IFC4X3_RC2_IfcEnergyMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcEnergyMeasure::declaration() const { return *IFC4X3_RC2_IfcEnergyMeasure_type; }
Ifc4x3_rc2::IfcEnergyMeasure::IfcEnergyMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcEnergyMeasure::IfcEnergyMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEnergyMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcEnergyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcFontStyle
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFontStyle::Class() { return *IFC4X3_RC2_IfcFontStyle_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFontStyle::declaration() const { return *IFC4X3_RC2_IfcFontStyle_type; }
Ifc4x3_rc2::IfcFontStyle::IfcFontStyle(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcFontStyle::IfcFontStyle(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFontStyle_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcFontStyle::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcFontVariant
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFontVariant::Class() { return *IFC4X3_RC2_IfcFontVariant_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFontVariant::declaration() const { return *IFC4X3_RC2_IfcFontVariant_type; }
Ifc4x3_rc2::IfcFontVariant::IfcFontVariant(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcFontVariant::IfcFontVariant(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFontVariant_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcFontVariant::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcFontWeight
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFontWeight::Class() { return *IFC4X3_RC2_IfcFontWeight_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFontWeight::declaration() const { return *IFC4X3_RC2_IfcFontWeight_type; }
Ifc4x3_rc2::IfcFontWeight::IfcFontWeight(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcFontWeight::IfcFontWeight(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFontWeight_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcFontWeight::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcForceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcForceMeasure::Class() { return *IFC4X3_RC2_IfcForceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcForceMeasure::declaration() const { return *IFC4X3_RC2_IfcForceMeasure_type; }
Ifc4x3_rc2::IfcForceMeasure::IfcForceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcForceMeasure::IfcForceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcForceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcFrequencyMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFrequencyMeasure::Class() { return *IFC4X3_RC2_IfcFrequencyMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcFrequencyMeasure::declaration() const { return *IFC4X3_RC2_IfcFrequencyMeasure_type; }
Ifc4x3_rc2::IfcFrequencyMeasure::IfcFrequencyMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcFrequencyMeasure::IfcFrequencyMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFrequencyMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcFrequencyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcGloballyUniqueId
const IfcParse::type_declaration& Ifc4x3_rc2::IfcGloballyUniqueId::Class() { return *IFC4X3_RC2_IfcGloballyUniqueId_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcGloballyUniqueId::declaration() const { return *IFC4X3_RC2_IfcGloballyUniqueId_type; }
Ifc4x3_rc2::IfcGloballyUniqueId::IfcGloballyUniqueId(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcGloballyUniqueId::IfcGloballyUniqueId(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGloballyUniqueId_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcGloballyUniqueId::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcHeatFluxDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcHeatFluxDensityMeasure::Class() { return *IFC4X3_RC2_IfcHeatFluxDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcHeatFluxDensityMeasure::declaration() const { return *IFC4X3_RC2_IfcHeatFluxDensityMeasure_type; }
Ifc4x3_rc2::IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcHeatFluxDensityMeasure::IfcHeatFluxDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcHeatFluxDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcHeatFluxDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcHeatingValueMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcHeatingValueMeasure::Class() { return *IFC4X3_RC2_IfcHeatingValueMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcHeatingValueMeasure::declaration() const { return *IFC4X3_RC2_IfcHeatingValueMeasure_type; }
Ifc4x3_rc2::IfcHeatingValueMeasure::IfcHeatingValueMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcHeatingValueMeasure::IfcHeatingValueMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcHeatingValueMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcHeatingValueMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcIdentifier
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIdentifier::Class() { return *IFC4X3_RC2_IfcIdentifier_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIdentifier::declaration() const { return *IFC4X3_RC2_IfcIdentifier_type; }
Ifc4x3_rc2::IfcIdentifier::IfcIdentifier(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcIdentifier::IfcIdentifier(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcIdentifier_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcIdentifier::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcIlluminanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIlluminanceMeasure::Class() { return *IFC4X3_RC2_IfcIlluminanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIlluminanceMeasure::declaration() const { return *IFC4X3_RC2_IfcIlluminanceMeasure_type; }
Ifc4x3_rc2::IfcIlluminanceMeasure::IfcIlluminanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcIlluminanceMeasure::IfcIlluminanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcIlluminanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcIlluminanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcInductanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcInductanceMeasure::Class() { return *IFC4X3_RC2_IfcInductanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcInductanceMeasure::declaration() const { return *IFC4X3_RC2_IfcInductanceMeasure_type; }
Ifc4x3_rc2::IfcInductanceMeasure::IfcInductanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcInductanceMeasure::IfcInductanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInductanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcInductanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcInteger
const IfcParse::type_declaration& Ifc4x3_rc2::IfcInteger::Class() { return *IFC4X3_RC2_IfcInteger_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcInteger::declaration() const { return *IFC4X3_RC2_IfcInteger_type; }
Ifc4x3_rc2::IfcInteger::IfcInteger(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcInteger::IfcInteger(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcInteger_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcInteger::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcIntegerCountRateMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIntegerCountRateMeasure::Class() { return *IFC4X3_RC2_IfcIntegerCountRateMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIntegerCountRateMeasure::declaration() const { return *IFC4X3_RC2_IfcIntegerCountRateMeasure_type; }
Ifc4x3_rc2::IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcIntegerCountRateMeasure::IfcIntegerCountRateMeasure(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcIntegerCountRateMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcIntegerCountRateMeasure::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcIonConcentrationMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIonConcentrationMeasure::Class() { return *IFC4X3_RC2_IfcIonConcentrationMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIonConcentrationMeasure::declaration() const { return *IFC4X3_RC2_IfcIonConcentrationMeasure_type; }
Ifc4x3_rc2::IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcIonConcentrationMeasure::IfcIonConcentrationMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcIonConcentrationMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcIonConcentrationMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcIsothermalMoistureCapacityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIsothermalMoistureCapacityMeasure::Class() { return *IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcIsothermalMoistureCapacityMeasure::declaration() const { return *IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type; }
Ifc4x3_rc2::IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcIsothermalMoistureCapacityMeasure::IfcIsothermalMoistureCapacityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcIsothermalMoistureCapacityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcIsothermalMoistureCapacityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcKinematicViscosityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcKinematicViscosityMeasure::Class() { return *IFC4X3_RC2_IfcKinematicViscosityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcKinematicViscosityMeasure::declaration() const { return *IFC4X3_RC2_IfcKinematicViscosityMeasure_type; }
Ifc4x3_rc2::IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcKinematicViscosityMeasure::IfcKinematicViscosityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcKinematicViscosityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcKinematicViscosityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLabel
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLabel::Class() { return *IFC4X3_RC2_IfcLabel_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLabel::declaration() const { return *IFC4X3_RC2_IfcLabel_type; }
Ifc4x3_rc2::IfcLabel::IfcLabel(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLabel::IfcLabel(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLabel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLabel::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcLanguageId
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLanguageId::Class() { return *IFC4X3_RC2_IfcLanguageId_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLanguageId::declaration() const { return *IFC4X3_RC2_IfcLanguageId_type; }
Ifc4x3_rc2::IfcLanguageId::IfcLanguageId(IfcEntityInstanceData* e) : IfcIdentifier((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcLanguageId::IfcLanguageId(std::string v) : IfcIdentifier((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLanguageId_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLanguageId::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLengthMeasure::Class() { return *IFC4X3_RC2_IfcLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLengthMeasure::declaration() const { return *IFC4X3_RC2_IfcLengthMeasure_type; }
Ifc4x3_rc2::IfcLengthMeasure::IfcLengthMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLengthMeasure::IfcLengthMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLineIndex
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLineIndex::Class() { return *IFC4X3_RC2_IfcLineIndex_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLineIndex::declaration() const { return *IFC4X3_RC2_IfcLineIndex_type; }
Ifc4x3_rc2::IfcLineIndex::IfcLineIndex(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLineIndex::IfcLineIndex(std::vector< int > /*[2:?]*/ v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLineIndex_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLineIndex::operator std::vector< int > /*[2:?]*/() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearForceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearForceMeasure::Class() { return *IFC4X3_RC2_IfcLinearForceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearForceMeasure::declaration() const { return *IFC4X3_RC2_IfcLinearForceMeasure_type; }
Ifc4x3_rc2::IfcLinearForceMeasure::IfcLinearForceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLinearForceMeasure::IfcLinearForceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLinearForceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLinearForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearMomentMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearMomentMeasure::Class() { return *IFC4X3_RC2_IfcLinearMomentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearMomentMeasure::declaration() const { return *IFC4X3_RC2_IfcLinearMomentMeasure_type; }
Ifc4x3_rc2::IfcLinearMomentMeasure::IfcLinearMomentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLinearMomentMeasure::IfcLinearMomentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLinearMomentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLinearMomentMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearStiffnessMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearStiffnessMeasure::Class() { return *IFC4X3_RC2_IfcLinearStiffnessMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearStiffnessMeasure::declaration() const { return *IFC4X3_RC2_IfcLinearStiffnessMeasure_type; }
Ifc4x3_rc2::IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLinearStiffnessMeasure::IfcLinearStiffnessMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLinearStiffnessMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLinearStiffnessMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLinearVelocityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearVelocityMeasure::Class() { return *IFC4X3_RC2_IfcLinearVelocityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLinearVelocityMeasure::declaration() const { return *IFC4X3_RC2_IfcLinearVelocityMeasure_type; }
Ifc4x3_rc2::IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLinearVelocityMeasure::IfcLinearVelocityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLinearVelocityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLinearVelocityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLogical
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLogical::Class() { return *IFC4X3_RC2_IfcLogical_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLogical::declaration() const { return *IFC4X3_RC2_IfcLogical_type; }
Ifc4x3_rc2::IfcLogical::IfcLogical(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLogical::IfcLogical(boost::logic::tribool v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLogical_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLogical::operator boost::logic::tribool() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousFluxMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLuminousFluxMeasure::Class() { return *IFC4X3_RC2_IfcLuminousFluxMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLuminousFluxMeasure::declaration() const { return *IFC4X3_RC2_IfcLuminousFluxMeasure_type; }
Ifc4x3_rc2::IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLuminousFluxMeasure::IfcLuminousFluxMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLuminousFluxMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLuminousFluxMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousIntensityDistributionMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLuminousIntensityDistributionMeasure::Class() { return *IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLuminousIntensityDistributionMeasure::declaration() const { return *IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type; }
Ifc4x3_rc2::IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLuminousIntensityDistributionMeasure::IfcLuminousIntensityDistributionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLuminousIntensityDistributionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLuminousIntensityDistributionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcLuminousIntensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLuminousIntensityMeasure::Class() { return *IFC4X3_RC2_IfcLuminousIntensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcLuminousIntensityMeasure::declaration() const { return *IFC4X3_RC2_IfcLuminousIntensityMeasure_type; }
Ifc4x3_rc2::IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcLuminousIntensityMeasure::IfcLuminousIntensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLuminousIntensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcLuminousIntensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMagneticFluxDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMagneticFluxDensityMeasure::Class() { return *IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMagneticFluxDensityMeasure::declaration() const { return *IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type; }
Ifc4x3_rc2::IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMagneticFluxDensityMeasure::IfcMagneticFluxDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMagneticFluxDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMagneticFluxDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMagneticFluxMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMagneticFluxMeasure::Class() { return *IFC4X3_RC2_IfcMagneticFluxMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMagneticFluxMeasure::declaration() const { return *IFC4X3_RC2_IfcMagneticFluxMeasure_type; }
Ifc4x3_rc2::IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMagneticFluxMeasure::IfcMagneticFluxMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMagneticFluxMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMagneticFluxMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassDensityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassDensityMeasure::Class() { return *IFC4X3_RC2_IfcMassDensityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassDensityMeasure::declaration() const { return *IFC4X3_RC2_IfcMassDensityMeasure_type; }
Ifc4x3_rc2::IfcMassDensityMeasure::IfcMassDensityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMassDensityMeasure::IfcMassDensityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMassDensityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMassDensityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassFlowRateMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassFlowRateMeasure::Class() { return *IFC4X3_RC2_IfcMassFlowRateMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassFlowRateMeasure::declaration() const { return *IFC4X3_RC2_IfcMassFlowRateMeasure_type; }
Ifc4x3_rc2::IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMassFlowRateMeasure::IfcMassFlowRateMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMassFlowRateMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMassFlowRateMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassMeasure::Class() { return *IFC4X3_RC2_IfcMassMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassMeasure::declaration() const { return *IFC4X3_RC2_IfcMassMeasure_type; }
Ifc4x3_rc2::IfcMassMeasure::IfcMassMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMassMeasure::IfcMassMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMassMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMassMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMassPerLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassPerLengthMeasure::Class() { return *IFC4X3_RC2_IfcMassPerLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMassPerLengthMeasure::declaration() const { return *IFC4X3_RC2_IfcMassPerLengthMeasure_type; }
Ifc4x3_rc2::IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMassPerLengthMeasure::IfcMassPerLengthMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMassPerLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMassPerLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfElasticityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfElasticityMeasure::Class() { return *IFC4X3_RC2_IfcModulusOfElasticityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfElasticityMeasure::declaration() const { return *IFC4X3_RC2_IfcModulusOfElasticityMeasure_type; }
Ifc4x3_rc2::IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcModulusOfElasticityMeasure::IfcModulusOfElasticityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcModulusOfElasticityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcModulusOfElasticityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfLinearSubgradeReactionMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfLinearSubgradeReactionMeasure::Class() { return *IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfLinearSubgradeReactionMeasure::declaration() const { return *IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type; }
Ifc4x3_rc2::IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcModulusOfLinearSubgradeReactionMeasure::IfcModulusOfLinearSubgradeReactionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcModulusOfLinearSubgradeReactionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcModulusOfLinearSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfRotationalSubgradeReactionMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionMeasure::Class() { return *IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionMeasure::declaration() const { return *IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type; }
Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionMeasure::IfcModulusOfRotationalSubgradeReactionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcModulusOfRotationalSubgradeReactionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcModulusOfSubgradeReactionMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfSubgradeReactionMeasure::Class() { return *IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcModulusOfSubgradeReactionMeasure::declaration() const { return *IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type; }
Ifc4x3_rc2::IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcModulusOfSubgradeReactionMeasure::IfcModulusOfSubgradeReactionMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcModulusOfSubgradeReactionMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcModulusOfSubgradeReactionMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMoistureDiffusivityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMoistureDiffusivityMeasure::Class() { return *IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMoistureDiffusivityMeasure::declaration() const { return *IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type; }
Ifc4x3_rc2::IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMoistureDiffusivityMeasure::IfcMoistureDiffusivityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMoistureDiffusivityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMoistureDiffusivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMolecularWeightMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMolecularWeightMeasure::Class() { return *IFC4X3_RC2_IfcMolecularWeightMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMolecularWeightMeasure::declaration() const { return *IFC4X3_RC2_IfcMolecularWeightMeasure_type; }
Ifc4x3_rc2::IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMolecularWeightMeasure::IfcMolecularWeightMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMolecularWeightMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMolecularWeightMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMomentOfInertiaMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMomentOfInertiaMeasure::Class() { return *IFC4X3_RC2_IfcMomentOfInertiaMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMomentOfInertiaMeasure::declaration() const { return *IFC4X3_RC2_IfcMomentOfInertiaMeasure_type; }
Ifc4x3_rc2::IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMomentOfInertiaMeasure::IfcMomentOfInertiaMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMomentOfInertiaMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMomentOfInertiaMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMonetaryMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMonetaryMeasure::Class() { return *IFC4X3_RC2_IfcMonetaryMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMonetaryMeasure::declaration() const { return *IFC4X3_RC2_IfcMonetaryMeasure_type; }
Ifc4x3_rc2::IfcMonetaryMeasure::IfcMonetaryMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMonetaryMeasure::IfcMonetaryMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMonetaryMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMonetaryMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcMonthInYearNumber
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMonthInYearNumber::Class() { return *IFC4X3_RC2_IfcMonthInYearNumber_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcMonthInYearNumber::declaration() const { return *IFC4X3_RC2_IfcMonthInYearNumber_type; }
Ifc4x3_rc2::IfcMonthInYearNumber::IfcMonthInYearNumber(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcMonthInYearNumber::IfcMonthInYearNumber(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMonthInYearNumber_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcMonthInYearNumber::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcNonNegativeLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcNonNegativeLengthMeasure::Class() { return *IFC4X3_RC2_IfcNonNegativeLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcNonNegativeLengthMeasure::declaration() const { return *IFC4X3_RC2_IfcNonNegativeLengthMeasure_type; }
Ifc4x3_rc2::IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(IfcEntityInstanceData* e) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcNonNegativeLengthMeasure::IfcNonNegativeLengthMeasure(double v) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNonNegativeLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcNonNegativeLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcNormalisedRatioMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcNormalisedRatioMeasure::Class() { return *IFC4X3_RC2_IfcNormalisedRatioMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcNormalisedRatioMeasure::declaration() const { return *IFC4X3_RC2_IfcNormalisedRatioMeasure_type; }
Ifc4x3_rc2::IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(IfcEntityInstanceData* e) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcNormalisedRatioMeasure::IfcNormalisedRatioMeasure(double v) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNormalisedRatioMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcNormalisedRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcNumericMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcNumericMeasure::Class() { return *IFC4X3_RC2_IfcNumericMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcNumericMeasure::declaration() const { return *IFC4X3_RC2_IfcNumericMeasure_type; }
Ifc4x3_rc2::IfcNumericMeasure::IfcNumericMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcNumericMeasure::IfcNumericMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcNumericMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcNumericMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPHMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPHMeasure::Class() { return *IFC4X3_RC2_IfcPHMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPHMeasure::declaration() const { return *IFC4X3_RC2_IfcPHMeasure_type; }
Ifc4x3_rc2::IfcPHMeasure::IfcPHMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPHMeasure::IfcPHMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPHMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPHMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcParameterValue
const IfcParse::type_declaration& Ifc4x3_rc2::IfcParameterValue::Class() { return *IFC4X3_RC2_IfcParameterValue_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcParameterValue::declaration() const { return *IFC4X3_RC2_IfcParameterValue_type; }
Ifc4x3_rc2::IfcParameterValue::IfcParameterValue(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcParameterValue::IfcParameterValue(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcParameterValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcParameterValue::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPlanarForceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPlanarForceMeasure::Class() { return *IFC4X3_RC2_IfcPlanarForceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPlanarForceMeasure::declaration() const { return *IFC4X3_RC2_IfcPlanarForceMeasure_type; }
Ifc4x3_rc2::IfcPlanarForceMeasure::IfcPlanarForceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPlanarForceMeasure::IfcPlanarForceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPlanarForceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPlanarForceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPlaneAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPlaneAngleMeasure::Class() { return *IFC4X3_RC2_IfcPlaneAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPlaneAngleMeasure::declaration() const { return *IFC4X3_RC2_IfcPlaneAngleMeasure_type; }
Ifc4x3_rc2::IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPlaneAngleMeasure::IfcPlaneAngleMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPlaneAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPlaneAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveInteger
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositiveInteger::Class() { return *IFC4X3_RC2_IfcPositiveInteger_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositiveInteger::declaration() const { return *IFC4X3_RC2_IfcPositiveInteger_type; }
Ifc4x3_rc2::IfcPositiveInteger::IfcPositiveInteger(IfcEntityInstanceData* e) : IfcInteger((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcPositiveInteger::IfcPositiveInteger(int v) : IfcInteger((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPositiveInteger_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPositiveInteger::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveLengthMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositiveLengthMeasure::Class() { return *IFC4X3_RC2_IfcPositiveLengthMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositiveLengthMeasure::declaration() const { return *IFC4X3_RC2_IfcPositiveLengthMeasure_type; }
Ifc4x3_rc2::IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(IfcEntityInstanceData* e) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcPositiveLengthMeasure::IfcPositiveLengthMeasure(double v) : IfcLengthMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPositiveLengthMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPositiveLengthMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositivePlaneAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositivePlaneAngleMeasure::Class() { return *IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositivePlaneAngleMeasure::declaration() const { return *IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type; }
Ifc4x3_rc2::IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(IfcEntityInstanceData* e) : IfcPlaneAngleMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcPositivePlaneAngleMeasure::IfcPositivePlaneAngleMeasure(double v) : IfcPlaneAngleMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPositivePlaneAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPositivePlaneAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPositiveRatioMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositiveRatioMeasure::Class() { return *IFC4X3_RC2_IfcPositiveRatioMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPositiveRatioMeasure::declaration() const { return *IFC4X3_RC2_IfcPositiveRatioMeasure_type; }
Ifc4x3_rc2::IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(IfcEntityInstanceData* e) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = e; }
Ifc4x3_rc2::IfcPositiveRatioMeasure::IfcPositiveRatioMeasure(double v) : IfcRatioMeasure((IfcEntityInstanceData*)0) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPositiveRatioMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPositiveRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPowerMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPowerMeasure::Class() { return *IFC4X3_RC2_IfcPowerMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPowerMeasure::declaration() const { return *IFC4X3_RC2_IfcPowerMeasure_type; }
Ifc4x3_rc2::IfcPowerMeasure::IfcPowerMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPowerMeasure::IfcPowerMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPowerMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPowerMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPresentableText
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPresentableText::Class() { return *IFC4X3_RC2_IfcPresentableText_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPresentableText::declaration() const { return *IFC4X3_RC2_IfcPresentableText_type; }
Ifc4x3_rc2::IfcPresentableText::IfcPresentableText(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPresentableText::IfcPresentableText(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPresentableText_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPresentableText::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcPressureMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPressureMeasure::Class() { return *IFC4X3_RC2_IfcPressureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPressureMeasure::declaration() const { return *IFC4X3_RC2_IfcPressureMeasure_type; }
Ifc4x3_rc2::IfcPressureMeasure::IfcPressureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPressureMeasure::IfcPressureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPressureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPressureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcPropertySetDefinitionSet
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPropertySetDefinitionSet::Class() { return *IFC4X3_RC2_IfcPropertySetDefinitionSet_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcPropertySetDefinitionSet::declaration() const { return *IFC4X3_RC2_IfcPropertySetDefinitionSet_type; }
Ifc4x3_rc2::IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcPropertySetDefinitionSet::IfcPropertySetDefinitionSet(aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPropertySetDefinitionSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v->generalize()); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcPropertySetDefinitionSet::operator aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr() const { aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcPropertySetDefinition >(); }

// Function implementations for IfcRadioActivityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRadioActivityMeasure::Class() { return *IFC4X3_RC2_IfcRadioActivityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRadioActivityMeasure::declaration() const { return *IFC4X3_RC2_IfcRadioActivityMeasure_type; }
Ifc4x3_rc2::IfcRadioActivityMeasure::IfcRadioActivityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcRadioActivityMeasure::IfcRadioActivityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRadioActivityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcRadioActivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRatioMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRatioMeasure::Class() { return *IFC4X3_RC2_IfcRatioMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRatioMeasure::declaration() const { return *IFC4X3_RC2_IfcRatioMeasure_type; }
Ifc4x3_rc2::IfcRatioMeasure::IfcRatioMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcRatioMeasure::IfcRatioMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRatioMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcRatioMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcReal
const IfcParse::type_declaration& Ifc4x3_rc2::IfcReal::Class() { return *IFC4X3_RC2_IfcReal_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcReal::declaration() const { return *IFC4X3_RC2_IfcReal_type; }
Ifc4x3_rc2::IfcReal::IfcReal(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcReal::IfcReal(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcReal::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalFrequencyMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRotationalFrequencyMeasure::Class() { return *IFC4X3_RC2_IfcRotationalFrequencyMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRotationalFrequencyMeasure::declaration() const { return *IFC4X3_RC2_IfcRotationalFrequencyMeasure_type; }
Ifc4x3_rc2::IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcRotationalFrequencyMeasure::IfcRotationalFrequencyMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRotationalFrequencyMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcRotationalFrequencyMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalMassMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRotationalMassMeasure::Class() { return *IFC4X3_RC2_IfcRotationalMassMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRotationalMassMeasure::declaration() const { return *IFC4X3_RC2_IfcRotationalMassMeasure_type; }
Ifc4x3_rc2::IfcRotationalMassMeasure::IfcRotationalMassMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcRotationalMassMeasure::IfcRotationalMassMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRotationalMassMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcRotationalMassMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcRotationalStiffnessMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRotationalStiffnessMeasure::Class() { return *IFC4X3_RC2_IfcRotationalStiffnessMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcRotationalStiffnessMeasure::declaration() const { return *IFC4X3_RC2_IfcRotationalStiffnessMeasure_type; }
Ifc4x3_rc2::IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcRotationalStiffnessMeasure::IfcRotationalStiffnessMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRotationalStiffnessMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcRotationalStiffnessMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSectionModulusMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSectionModulusMeasure::Class() { return *IFC4X3_RC2_IfcSectionModulusMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSectionModulusMeasure::declaration() const { return *IFC4X3_RC2_IfcSectionModulusMeasure_type; }
Ifc4x3_rc2::IfcSectionModulusMeasure::IfcSectionModulusMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSectionModulusMeasure::IfcSectionModulusMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSectionModulusMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSectionModulusMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSectionalAreaIntegralMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSectionalAreaIntegralMeasure::Class() { return *IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSectionalAreaIntegralMeasure::declaration() const { return *IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type; }
Ifc4x3_rc2::IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSectionalAreaIntegralMeasure::IfcSectionalAreaIntegralMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSectionalAreaIntegralMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSectionalAreaIntegralMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcShearModulusMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcShearModulusMeasure::Class() { return *IFC4X3_RC2_IfcShearModulusMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcShearModulusMeasure::declaration() const { return *IFC4X3_RC2_IfcShearModulusMeasure_type; }
Ifc4x3_rc2::IfcShearModulusMeasure::IfcShearModulusMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcShearModulusMeasure::IfcShearModulusMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcShearModulusMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcShearModulusMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSolidAngleMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSolidAngleMeasure::Class() { return *IFC4X3_RC2_IfcSolidAngleMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSolidAngleMeasure::declaration() const { return *IFC4X3_RC2_IfcSolidAngleMeasure_type; }
Ifc4x3_rc2::IfcSolidAngleMeasure::IfcSolidAngleMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSolidAngleMeasure::IfcSolidAngleMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSolidAngleMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSolidAngleMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPowerLevelMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPowerLevelMeasure::Class() { return *IFC4X3_RC2_IfcSoundPowerLevelMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPowerLevelMeasure::declaration() const { return *IFC4X3_RC2_IfcSoundPowerLevelMeasure_type; }
Ifc4x3_rc2::IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSoundPowerLevelMeasure::IfcSoundPowerLevelMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSoundPowerLevelMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSoundPowerLevelMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPowerMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPowerMeasure::Class() { return *IFC4X3_RC2_IfcSoundPowerMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPowerMeasure::declaration() const { return *IFC4X3_RC2_IfcSoundPowerMeasure_type; }
Ifc4x3_rc2::IfcSoundPowerMeasure::IfcSoundPowerMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSoundPowerMeasure::IfcSoundPowerMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSoundPowerMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSoundPowerMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPressureLevelMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPressureLevelMeasure::Class() { return *IFC4X3_RC2_IfcSoundPressureLevelMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPressureLevelMeasure::declaration() const { return *IFC4X3_RC2_IfcSoundPressureLevelMeasure_type; }
Ifc4x3_rc2::IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSoundPressureLevelMeasure::IfcSoundPressureLevelMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSoundPressureLevelMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSoundPressureLevelMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSoundPressureMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPressureMeasure::Class() { return *IFC4X3_RC2_IfcSoundPressureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSoundPressureMeasure::declaration() const { return *IFC4X3_RC2_IfcSoundPressureMeasure_type; }
Ifc4x3_rc2::IfcSoundPressureMeasure::IfcSoundPressureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSoundPressureMeasure::IfcSoundPressureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSoundPressureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSoundPressureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecificHeatCapacityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSpecificHeatCapacityMeasure::Class() { return *IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSpecificHeatCapacityMeasure::declaration() const { return *IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type; }
Ifc4x3_rc2::IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSpecificHeatCapacityMeasure::IfcSpecificHeatCapacityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpecificHeatCapacityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSpecificHeatCapacityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecularExponent
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSpecularExponent::Class() { return *IFC4X3_RC2_IfcSpecularExponent_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSpecularExponent::declaration() const { return *IFC4X3_RC2_IfcSpecularExponent_type; }
Ifc4x3_rc2::IfcSpecularExponent::IfcSpecularExponent(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSpecularExponent::IfcSpecularExponent(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpecularExponent_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSpecularExponent::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcSpecularRoughness
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSpecularRoughness::Class() { return *IFC4X3_RC2_IfcSpecularRoughness_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcSpecularRoughness::declaration() const { return *IFC4X3_RC2_IfcSpecularRoughness_type; }
Ifc4x3_rc2::IfcSpecularRoughness::IfcSpecularRoughness(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcSpecularRoughness::IfcSpecularRoughness(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSpecularRoughness_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcSpecularRoughness::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTemperatureGradientMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTemperatureGradientMeasure::Class() { return *IFC4X3_RC2_IfcTemperatureGradientMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTemperatureGradientMeasure::declaration() const { return *IFC4X3_RC2_IfcTemperatureGradientMeasure_type; }
Ifc4x3_rc2::IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTemperatureGradientMeasure::IfcTemperatureGradientMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTemperatureGradientMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTemperatureGradientMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTemperatureRateOfChangeMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTemperatureRateOfChangeMeasure::Class() { return *IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTemperatureRateOfChangeMeasure::declaration() const { return *IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type; }
Ifc4x3_rc2::IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTemperatureRateOfChangeMeasure::IfcTemperatureRateOfChangeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTemperatureRateOfChangeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTemperatureRateOfChangeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcText
const IfcParse::type_declaration& Ifc4x3_rc2::IfcText::Class() { return *IFC4X3_RC2_IfcText_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcText::declaration() const { return *IFC4X3_RC2_IfcText_type; }
Ifc4x3_rc2::IfcText::IfcText(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcText::IfcText(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcText_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcText::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextAlignment
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextAlignment::Class() { return *IFC4X3_RC2_IfcTextAlignment_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextAlignment::declaration() const { return *IFC4X3_RC2_IfcTextAlignment_type; }
Ifc4x3_rc2::IfcTextAlignment::IfcTextAlignment(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTextAlignment::IfcTextAlignment(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextAlignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTextAlignment::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextDecoration
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextDecoration::Class() { return *IFC4X3_RC2_IfcTextDecoration_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextDecoration::declaration() const { return *IFC4X3_RC2_IfcTextDecoration_type; }
Ifc4x3_rc2::IfcTextDecoration::IfcTextDecoration(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTextDecoration::IfcTextDecoration(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextDecoration_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTextDecoration::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextFontName
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextFontName::Class() { return *IFC4X3_RC2_IfcTextFontName_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextFontName::declaration() const { return *IFC4X3_RC2_IfcTextFontName_type; }
Ifc4x3_rc2::IfcTextFontName::IfcTextFontName(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTextFontName::IfcTextFontName(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextFontName_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTextFontName::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTextTransformation
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextTransformation::Class() { return *IFC4X3_RC2_IfcTextTransformation_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTextTransformation::declaration() const { return *IFC4X3_RC2_IfcTextTransformation_type; }
Ifc4x3_rc2::IfcTextTransformation::IfcTextTransformation(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTextTransformation::IfcTextTransformation(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextTransformation_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTextTransformation::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalAdmittanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalAdmittanceMeasure::Class() { return *IFC4X3_RC2_IfcThermalAdmittanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalAdmittanceMeasure::declaration() const { return *IFC4X3_RC2_IfcThermalAdmittanceMeasure_type; }
Ifc4x3_rc2::IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcThermalAdmittanceMeasure::IfcThermalAdmittanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcThermalAdmittanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcThermalAdmittanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalConductivityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalConductivityMeasure::Class() { return *IFC4X3_RC2_IfcThermalConductivityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalConductivityMeasure::declaration() const { return *IFC4X3_RC2_IfcThermalConductivityMeasure_type; }
Ifc4x3_rc2::IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcThermalConductivityMeasure::IfcThermalConductivityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcThermalConductivityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcThermalConductivityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalExpansionCoefficientMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalExpansionCoefficientMeasure::Class() { return *IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalExpansionCoefficientMeasure::declaration() const { return *IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type; }
Ifc4x3_rc2::IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcThermalExpansionCoefficientMeasure::IfcThermalExpansionCoefficientMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcThermalExpansionCoefficientMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcThermalExpansionCoefficientMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalResistanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalResistanceMeasure::Class() { return *IFC4X3_RC2_IfcThermalResistanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalResistanceMeasure::declaration() const { return *IFC4X3_RC2_IfcThermalResistanceMeasure_type; }
Ifc4x3_rc2::IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcThermalResistanceMeasure::IfcThermalResistanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcThermalResistanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcThermalResistanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermalTransmittanceMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalTransmittanceMeasure::Class() { return *IFC4X3_RC2_IfcThermalTransmittanceMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermalTransmittanceMeasure::declaration() const { return *IFC4X3_RC2_IfcThermalTransmittanceMeasure_type; }
Ifc4x3_rc2::IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcThermalTransmittanceMeasure::IfcThermalTransmittanceMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcThermalTransmittanceMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcThermalTransmittanceMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcThermodynamicTemperatureMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermodynamicTemperatureMeasure::Class() { return *IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcThermodynamicTemperatureMeasure::declaration() const { return *IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type; }
Ifc4x3_rc2::IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcThermodynamicTemperatureMeasure::IfcThermodynamicTemperatureMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcThermodynamicTemperatureMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcThermodynamicTemperatureMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTime
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTime::Class() { return *IFC4X3_RC2_IfcTime_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTime::declaration() const { return *IFC4X3_RC2_IfcTime_type; }
Ifc4x3_rc2::IfcTime::IfcTime(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTime::IfcTime(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTime_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTime::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcTimeMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTimeMeasure::Class() { return *IFC4X3_RC2_IfcTimeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTimeMeasure::declaration() const { return *IFC4X3_RC2_IfcTimeMeasure_type; }
Ifc4x3_rc2::IfcTimeMeasure::IfcTimeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTimeMeasure::IfcTimeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTimeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTimeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcTimeStamp
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTimeStamp::Class() { return *IFC4X3_RC2_IfcTimeStamp_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTimeStamp::declaration() const { return *IFC4X3_RC2_IfcTimeStamp_type; }
Ifc4x3_rc2::IfcTimeStamp::IfcTimeStamp(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTimeStamp::IfcTimeStamp(int v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTimeStamp_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTimeStamp::operator int() const { return *data_->getArgument(0); }

// Function implementations for IfcTorqueMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTorqueMeasure::Class() { return *IFC4X3_RC2_IfcTorqueMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcTorqueMeasure::declaration() const { return *IFC4X3_RC2_IfcTorqueMeasure_type; }
Ifc4x3_rc2::IfcTorqueMeasure::IfcTorqueMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcTorqueMeasure::IfcTorqueMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTorqueMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcTorqueMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcURIReference
const IfcParse::type_declaration& Ifc4x3_rc2::IfcURIReference::Class() { return *IFC4X3_RC2_IfcURIReference_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcURIReference::declaration() const { return *IFC4X3_RC2_IfcURIReference_type; }
Ifc4x3_rc2::IfcURIReference::IfcURIReference(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcURIReference::IfcURIReference(std::string v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcURIReference_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcURIReference::operator std::string() const { return *data_->getArgument(0); }

// Function implementations for IfcVaporPermeabilityMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcVaporPermeabilityMeasure::Class() { return *IFC4X3_RC2_IfcVaporPermeabilityMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcVaporPermeabilityMeasure::declaration() const { return *IFC4X3_RC2_IfcVaporPermeabilityMeasure_type; }
Ifc4x3_rc2::IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcVaporPermeabilityMeasure::IfcVaporPermeabilityMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVaporPermeabilityMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcVaporPermeabilityMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcVolumeMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcVolumeMeasure::Class() { return *IFC4X3_RC2_IfcVolumeMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcVolumeMeasure::declaration() const { return *IFC4X3_RC2_IfcVolumeMeasure_type; }
Ifc4x3_rc2::IfcVolumeMeasure::IfcVolumeMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcVolumeMeasure::IfcVolumeMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVolumeMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcVolumeMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcVolumetricFlowRateMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcVolumetricFlowRateMeasure::Class() { return *IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcVolumetricFlowRateMeasure::declaration() const { return *IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type; }
Ifc4x3_rc2::IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcVolumetricFlowRateMeasure::IfcVolumetricFlowRateMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVolumetricFlowRateMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcVolumetricFlowRateMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcWarpingConstantMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcWarpingConstantMeasure::Class() { return *IFC4X3_RC2_IfcWarpingConstantMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcWarpingConstantMeasure::declaration() const { return *IFC4X3_RC2_IfcWarpingConstantMeasure_type; }
Ifc4x3_rc2::IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcWarpingConstantMeasure::IfcWarpingConstantMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWarpingConstantMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcWarpingConstantMeasure::operator double() const { return *data_->getArgument(0); }

// Function implementations for IfcWarpingMomentMeasure
const IfcParse::type_declaration& Ifc4x3_rc2::IfcWarpingMomentMeasure::Class() { return *IFC4X3_RC2_IfcWarpingMomentMeasure_type; }
const IfcParse::type_declaration& Ifc4x3_rc2::IfcWarpingMomentMeasure::declaration() const { return *IFC4X3_RC2_IfcWarpingMomentMeasure_type; }
Ifc4x3_rc2::IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(IfcEntityInstanceData* e) { data_ = e; }
Ifc4x3_rc2::IfcWarpingMomentMeasure::IfcWarpingMomentMeasure(double v) { data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcWarpingMomentMeasure_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(v); data_->setArgument(0, attr);} }
Ifc4x3_rc2::IfcWarpingMomentMeasure::operator double() const { return *data_->getArgument(0); }


// Function implementations for IfcActionRequest
boost::optional< ::Ifc4x3_rc2::IfcActionRequestTypeEnum::Value > Ifc4x3_rc2::IfcActionRequest::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcActionRequestTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcActionRequest::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcActionRequestTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcActionRequestTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcActionRequest::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcActionRequest::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcActionRequest::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcActionRequest::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcActionRequest::declaration() const { return *IFC4X3_RC2_IfcActionRequest_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcActionRequest::Class() { return *IFC4X3_RC2_IfcActionRequest_type; }
Ifc4x3_rc2::IfcActionRequest::IfcActionRequest(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcActionRequest_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcActionRequest::IfcActionRequest(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcActionRequestTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcActorSelect* Ifc4x3_rc2::IfcActor::TheActor() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcActor::setTheActor(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcActor::declaration() const { return *IFC4X3_RC2_IfcActor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcActor::Class() { return *IFC4X3_RC2_IfcActor_type; }
Ifc4x3_rc2::IfcActor::IfcActor(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcActor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcActor::IfcActor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcActorSelect* v6_TheActor) : IfcObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRoleEnum::Value Ifc4x3_rc2::IfcActorRole::Role() const {  return ::Ifc4x3_rc2::IfcRoleEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcActorRole::setRole(::Ifc4x3_rc2::IfcRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRoleEnum::ToString(v)));data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcActorRole::UserDefinedRole() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcActorRole::setUserDefinedRole(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcActorRole::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcActorRole::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcActorRole::declaration() const { return *IFC4X3_RC2_IfcActorRole_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcActorRole::Class() { return *IFC4X3_RC2_IfcActorRole_type; }
Ifc4x3_rc2::IfcActorRole::IfcActorRole(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcActorRole_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcActorRole::IfcActorRole(::Ifc4x3_rc2::IfcRoleEnum::Value v1_Role, boost::optional< std::string > v2_UserDefinedRole, boost::optional< std::string > v3_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcActorRole_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Role,::Ifc4x3_rc2::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_rc2::IfcActuatorTypeEnum::Value > Ifc4x3_rc2::IfcActuator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcActuatorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcActuator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcActuatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcActuatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcActuator::declaration() const { return *IFC4X3_RC2_IfcActuator_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcActuator::Class() { return *IFC4X3_RC2_IfcActuator_type; }
Ifc4x3_rc2::IfcActuator::IfcActuator(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcActuator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcActuator::IfcActuator(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcActuatorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcActuatorTypeEnum::Value Ifc4x3_rc2::IfcActuatorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcActuatorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcActuatorType::setPredefinedType(::Ifc4x3_rc2::IfcActuatorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcActuatorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcActuatorType::declaration() const { return *IFC4X3_RC2_IfcActuatorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcActuatorType::Class() { return *IFC4X3_RC2_IfcActuatorType_type; }
Ifc4x3_rc2::IfcActuatorType::IfcActuatorType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcActuatorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcActuatorType::IfcActuatorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcActuatorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcActuatorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAddress
boost::optional< ::Ifc4x3_rc2::IfcAddressTypeEnum::Value > Ifc4x3_rc2::IfcAddress::Purpose() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAddressTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcAddress::setPurpose(boost::optional< ::Ifc4x3_rc2::IfcAddressTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAddressTypeEnum::ToString(*v)));}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAddress::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcAddress::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAddress::UserDefinedPurpose() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcAddress::setUserDefinedPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcAddress::declaration() const { return *IFC4X3_RC2_IfcAddress_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAddress::Class() { return *IFC4X3_RC2_IfcAddress_type; }
Ifc4x3_rc2::IfcAddress::IfcAddress(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAddress_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAddress::IfcAddress(boost::optional< ::Ifc4x3_rc2::IfcAddressTypeEnum::Value > v1_Purpose, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UserDefinedPurpose) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAddress_type);  if (v1_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v1_Purpose,::Ifc4x3_rc2::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_rc2::IfcAdvancedBrep::declaration() const { return *IFC4X3_RC2_IfcAdvancedBrep_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAdvancedBrep::Class() { return *IFC4X3_RC2_IfcAdvancedBrep_type; }
Ifc4x3_rc2::IfcAdvancedBrep::IfcAdvancedBrep(IfcEntityInstanceData* e) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAdvancedBrep_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAdvancedBrep::IfcAdvancedBrep(::Ifc4x3_rc2::IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAdvancedBrep_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);} }

// Function implementations for IfcAdvancedBrepWithVoids
aggregate_of< ::Ifc4x3_rc2::IfcClosedShell >::ptr Ifc4x3_rc2::IfcAdvancedBrepWithVoids::Voids() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcClosedShell >(); }
void Ifc4x3_rc2::IfcAdvancedBrepWithVoids::setVoids(aggregate_of< ::Ifc4x3_rc2::IfcClosedShell >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAdvancedBrepWithVoids::declaration() const { return *IFC4X3_RC2_IfcAdvancedBrepWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAdvancedBrepWithVoids::Class() { return *IFC4X3_RC2_IfcAdvancedBrepWithVoids_type; }
Ifc4x3_rc2::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(IfcEntityInstanceData* e) : IfcAdvancedBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAdvancedBrepWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAdvancedBrepWithVoids::IfcAdvancedBrepWithVoids(::Ifc4x3_rc2::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_rc2::IfcClosedShell >::ptr v2_Voids) : IfcAdvancedBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAdvancedFace::declaration() const { return *IFC4X3_RC2_IfcAdvancedFace_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAdvancedFace::Class() { return *IFC4X3_RC2_IfcAdvancedFace_type; }
Ifc4x3_rc2::IfcAdvancedFace::IfcAdvancedFace(IfcEntityInstanceData* e) : IfcFaceSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAdvancedFace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAdvancedFace::IfcAdvancedFace(aggregate_of< ::Ifc4x3_rc2::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_rc2::IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFaceSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAirTerminalTypeEnum::Value > Ifc4x3_rc2::IfcAirTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAirTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminal::declaration() const { return *IFC4X3_RC2_IfcAirTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminal::Class() { return *IFC4X3_RC2_IfcAirTerminal_type; }
Ifc4x3_rc2::IfcAirTerminal::IfcAirTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAirTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAirTerminal::IfcAirTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAirTerminalBoxTypeEnum::Value > Ifc4x3_rc2::IfcAirTerminalBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAirTerminalBox::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalBox::declaration() const { return *IFC4X3_RC2_IfcAirTerminalBox_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalBox::Class() { return *IFC4X3_RC2_IfcAirTerminalBox_type; }
Ifc4x3_rc2::IfcAirTerminalBox::IfcAirTerminalBox(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAirTerminalBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAirTerminalBox::IfcAirTerminalBox(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAirTerminalBoxTypeEnum::Value Ifc4x3_rc2::IfcAirTerminalBoxType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcAirTerminalBoxType::setPredefinedType(::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalBoxType::declaration() const { return *IFC4X3_RC2_IfcAirTerminalBoxType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalBoxType::Class() { return *IFC4X3_RC2_IfcAirTerminalBoxType_type; }
Ifc4x3_rc2::IfcAirTerminalBoxType::IfcAirTerminalBoxType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAirTerminalBoxType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAirTerminalBoxType::IfcAirTerminalBoxType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcAirTerminalBoxTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAirTerminalBoxTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAirTerminalType
::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value Ifc4x3_rc2::IfcAirTerminalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcAirTerminalType::setPredefinedType(::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAirTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalType::declaration() const { return *IFC4X3_RC2_IfcAirTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAirTerminalType::Class() { return *IFC4X3_RC2_IfcAirTerminalType_type; }
Ifc4x3_rc2::IfcAirTerminalType::IfcAirTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAirTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAirTerminalType::IfcAirTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcAirTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAirTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAirToAirHeatRecovery
boost::optional< ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value > Ifc4x3_rc2::IfcAirToAirHeatRecovery::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAirToAirHeatRecovery::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAirToAirHeatRecovery::declaration() const { return *IFC4X3_RC2_IfcAirToAirHeatRecovery_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAirToAirHeatRecovery::Class() { return *IFC4X3_RC2_IfcAirToAirHeatRecovery_type; }
Ifc4x3_rc2::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAirToAirHeatRecovery_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAirToAirHeatRecovery::IfcAirToAirHeatRecovery(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::setPredefinedType(::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::declaration() const { return *IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::Class() { return *IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type; }
Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAirToAirHeatRecoveryType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAirToAirHeatRecoveryType::IfcAirToAirHeatRecoveryType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcAirToAirHeatRecoveryTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAirToAirHeatRecoveryTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAlarm
boost::optional< ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value > Ifc4x3_rc2::IfcAlarm::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAlarmTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAlarm::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAlarmTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlarm::declaration() const { return *IFC4X3_RC2_IfcAlarm_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlarm::Class() { return *IFC4X3_RC2_IfcAlarm_type; }
Ifc4x3_rc2::IfcAlarm::IfcAlarm(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlarm_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlarm::IfcAlarm(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAlarmTypeEnum::Value Ifc4x3_rc2::IfcAlarmType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAlarmTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcAlarmType::setPredefinedType(::Ifc4x3_rc2::IfcAlarmTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlarmTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlarmType::declaration() const { return *IFC4X3_RC2_IfcAlarmType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlarmType::Class() { return *IFC4X3_RC2_IfcAlarmType_type; }
Ifc4x3_rc2::IfcAlarmType::IfcAlarmType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlarmType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlarmType::IfcAlarmType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcAlarmTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAlarmTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAlignment
boost::optional< ::Ifc4x3_rc2::IfcAlignmentTypeEnum::Value > Ifc4x3_rc2::IfcAlignment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAlignmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAlignment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAlignmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAlignmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignment::declaration() const { return *IFC4X3_RC2_IfcAlignment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignment::Class() { return *IFC4X3_RC2_IfcAlignment_type; }
Ifc4x3_rc2::IfcAlignment::IfcAlignment(IfcEntityInstanceData* e) : IfcLinearPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignment::IfcAlignment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcCurve* v8_Axis, boost::optional< ::Ifc4x3_rc2::IfcAlignmentTypeEnum::Value > v9_PredefinedType) : IfcLinearPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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 IfcAlignment2DVerSegCircularArc
double Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::Radius() const {  double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
bool Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::IsConvex() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::setIsConvex(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::declaration() const { return *IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::Class() { return *IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type; }
Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::IfcAlignment2DVerSegCircularArc(IfcEntityInstanceData* e) : IfcAlignmentVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignment2DVerSegCircularArc::IfcAlignment2DVerSegCircularArc(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, boost::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType, double v10_Radius, bool v11_IsConvex) : IfcAlignmentVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignment2DVerSegCircularArc_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));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_StartDistAlong));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_HorizontalLength));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_StartHeight));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartGradient));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_EndGradient));data_->setArgument(6,attr);} if (v8_RadiusOfCurvature) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RadiusOfCurvature));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_PredefinedType,::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(v9_PredefinedType))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_Radius));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_IsConvex));data_->setArgument(10,attr);} }

// Function implementations for IfcAlignment2DVerSegLine


const IfcParse::entity& Ifc4x3_rc2::IfcAlignment2DVerSegLine::declaration() const { return *IFC4X3_RC2_IfcAlignment2DVerSegLine_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignment2DVerSegLine::Class() { return *IFC4X3_RC2_IfcAlignment2DVerSegLine_type; }
Ifc4x3_rc2::IfcAlignment2DVerSegLine::IfcAlignment2DVerSegLine(IfcEntityInstanceData* e) : IfcAlignmentVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignment2DVerSegLine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignment2DVerSegLine::IfcAlignment2DVerSegLine(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, boost::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignment2DVerSegLine_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));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_StartDistAlong));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_HorizontalLength));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_StartHeight));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartGradient));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_EndGradient));data_->setArgument(6,attr);} if (v8_RadiusOfCurvature) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RadiusOfCurvature));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_PredefinedType,::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(v9_PredefinedType))));data_->setArgument(8,attr);} }

// Function implementations for IfcAlignment2DVerSegParabolicArc
double Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::ParabolaConstant() const {  double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::setParabolaConstant(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
bool Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::IsConvex() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::setIsConvex(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::declaration() const { return *IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::Class() { return *IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type; }
Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::IfcAlignment2DVerSegParabolicArc(IfcEntityInstanceData* e) : IfcAlignmentVerticalSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignment2DVerSegParabolicArc::IfcAlignment2DVerSegParabolicArc(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, boost::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType, double v10_ParabolaConstant, bool v11_IsConvex) : IfcAlignmentVerticalSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignment2DVerSegParabolicArc_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));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_StartDistAlong));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_HorizontalLength));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_StartHeight));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartGradient));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_EndGradient));data_->setArgument(6,attr);} if (v8_RadiusOfCurvature) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RadiusOfCurvature));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_PredefinedType,::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(v9_PredefinedType))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v10_ParabolaConstant));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v11_IsConvex));data_->setArgument(10,attr);} }

// Function implementations for IfcAlignmentCant
double Ifc4x3_rc2::IfcAlignmentCant::RailHeadDistance() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAlignmentCant::setRailHeadDistance(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcAlignmentCantSegment >::ptr Ifc4x3_rc2::IfcAlignmentCant::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcAlignmentCantSegment >(); }
void Ifc4x3_rc2::IfcAlignmentCant::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcAlignmentCantSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCant::declaration() const { return *IFC4X3_RC2_IfcAlignmentCant_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCant::Class() { return *IFC4X3_RC2_IfcAlignmentCant_type; }
Ifc4x3_rc2::IfcAlignmentCant::IfcAlignmentCant(IfcEntityInstanceData* e) : IfcLinearElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentCant_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentCant::IfcAlignmentCant(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, double v8_RailHeadDistance, aggregate_of< ::Ifc4x3_rc2::IfcAlignmentCantSegment >::ptr v9_Segments) : IfcLinearElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentCant_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::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_RailHeadDistance));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v9_Segments)->generalize());data_->setArgument(8,attr);} }

// Function implementations for IfcAlignmentCantSegment
double Ifc4x3_rc2::IfcAlignmentCantSegment::StartDistAlong() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setStartDistAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcAlignmentCantSegment::HorizontalLength() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setHorizontalLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcAlignmentCantSegment::StartCantLeft() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setStartCantLeft(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAlignmentCantSegment::EndCantLeft() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setEndCantLeft(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcAlignmentCantSegment::StartCantRight() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setStartCantRight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAlignmentCantSegment::EndCantRight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setEndCantRight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAlignmentCantSegment::SmoothingLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setSmoothingLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentCantSegment::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcAlignmentCantSegment::setPredefinedType(::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCantSegment::declaration() const { return *IFC4X3_RC2_IfcAlignmentCantSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCantSegment::Class() { return *IFC4X3_RC2_IfcAlignmentCantSegment_type; }
Ifc4x3_rc2::IfcAlignmentCantSegment::IfcAlignmentCantSegment(IfcEntityInstanceData* e) : IfcAlignmentParameterSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentCantSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentCantSegment::IfcAlignmentCantSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartCantLeft, boost::optional< double > v6_EndCantLeft, double v7_StartCantRight, boost::optional< double > v8_EndCantRight, boost::optional< double > v9_SmoothingLength, ::Ifc4x3_rc2::IfcAlignmentCantSegmentTypeEnum::Value v10_PredefinedType) : IfcAlignmentParameterSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentCantSegment_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));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_StartDistAlong));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_HorizontalLength));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_StartCantLeft));data_->setArgument(4,attr);} if (v6_EndCantLeft) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v6_EndCantLeft));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_StartCantRight));data_->setArgument(6,attr);} if (v8_EndCantRight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_EndCantRight));data_->setArgument(7,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(7, attr); } if (v9_SmoothingLength) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v9_SmoothingLength));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_rc2::IfcAlignmentCantSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAlignmentCurve
::Ifc4x3_rc2::IfcAlignmentHorizontal* Ifc4x3_rc2::IfcAlignmentCurve::Horizontal() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAlignmentHorizontal>(true); }
void Ifc4x3_rc2::IfcAlignmentCurve::setHorizontal(::Ifc4x3_rc2::IfcAlignmentHorizontal* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcAlignmentVertical* Ifc4x3_rc2::IfcAlignmentCurve::Vertical() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAlignmentVertical>(true); }
void Ifc4x3_rc2::IfcAlignmentCurve::setVertical(::Ifc4x3_rc2::IfcAlignmentVertical* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAlignmentCurve::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcAlignmentCurve::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCurve::declaration() const { return *IFC4X3_RC2_IfcAlignmentCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentCurve::Class() { return *IFC4X3_RC2_IfcAlignmentCurve_type; }
Ifc4x3_rc2::IfcAlignmentCurve::IfcAlignmentCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentCurve::IfcAlignmentCurve(::Ifc4x3_rc2::IfcAlignmentHorizontal* v1_Horizontal, ::Ifc4x3_rc2::IfcAlignmentVertical* v2_Vertical, boost::optional< std::string > v3_Tag) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcAlignmentHorizontal
boost::optional< double > Ifc4x3_rc2::IfcAlignmentHorizontal::StartDistAlong() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAlignmentHorizontal::setStartDistAlong(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >::ptr Ifc4x3_rc2::IfcAlignmentHorizontal::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >(); }
void Ifc4x3_rc2::IfcAlignmentHorizontal::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentHorizontal::declaration() const { return *IFC4X3_RC2_IfcAlignmentHorizontal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentHorizontal::Class() { return *IFC4X3_RC2_IfcAlignmentHorizontal_type; }
Ifc4x3_rc2::IfcAlignmentHorizontal::IfcAlignmentHorizontal(IfcEntityInstanceData* e) : IfcLinearElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentHorizontal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentHorizontal::IfcAlignmentHorizontal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< double > v8_StartDistAlong, aggregate_of< ::Ifc4x3_rc2::IfcAlignmentHorizontalSegment >::ptr v9_Segments) : IfcLinearElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentHorizontal_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::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_StartDistAlong) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_StartDistAlong));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_Segments)->generalize());data_->setArgument(8,attr);} }

// Function implementations for IfcAlignmentHorizontalSegment
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcAlignmentHorizontalSegment::StartPoint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setStartPoint(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcAlignmentHorizontalSegment::StartDirection() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setStartDirection(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcAlignmentHorizontalSegment::StartRadiusOfCurvature() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setStartRadiusOfCurvature(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcAlignmentHorizontalSegment::EndRadiusOfCurvature() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setEndRadiusOfCurvature(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcAlignmentHorizontalSegment::SegmentLength() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAlignmentHorizontalSegment::GravityCenterLineHeight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setGravityCenterLineHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentHorizontalSegment::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAlignmentHorizontalSegment::setPredefinedType(::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentHorizontalSegment::declaration() const { return *IFC4X3_RC2_IfcAlignmentHorizontalSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentHorizontalSegment::Class() { return *IFC4X3_RC2_IfcAlignmentHorizontalSegment_type; }
Ifc4x3_rc2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(IfcEntityInstanceData* e) : IfcAlignmentParameterSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentHorizontalSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentHorizontalSegment::IfcAlignmentHorizontalSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, ::Ifc4x3_rc2::IfcCartesianPoint* v3_StartPoint, double v4_StartDirection, double v5_StartRadiusOfCurvature, double v6_EndRadiusOfCurvature, double v7_SegmentLength, boost::optional< double > v8_GravityCenterLineHeight, ::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentHorizontalSegment_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));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_StartPoint));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartDirection));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_StartRadiusOfCurvature));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_EndRadiusOfCurvature));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_SegmentLength));data_->setArgument(6,attr);} if (v8_GravityCenterLineHeight) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_GravityCenterLineHeight));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_PredefinedType,::Ifc4x3_rc2::IfcAlignmentHorizontalSegmentTypeEnum::ToString(v9_PredefinedType))));data_->setArgument(8,attr);} }

// Function implementations for IfcAlignmentParameterSegment
boost::optional< std::string > Ifc4x3_rc2::IfcAlignmentParameterSegment::StartTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcAlignmentParameterSegment::setStartTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAlignmentParameterSegment::EndTag() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcAlignmentParameterSegment::setEndTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentParameterSegment::declaration() const { return *IFC4X3_RC2_IfcAlignmentParameterSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentParameterSegment::Class() { return *IFC4X3_RC2_IfcAlignmentParameterSegment_type; }
Ifc4x3_rc2::IfcAlignmentParameterSegment::IfcAlignmentParameterSegment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentParameterSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentParameterSegment::IfcAlignmentParameterSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentParameterSegment_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));data_->setArgument(1,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(1, attr); } }

// Function implementations for IfcAlignmentSegment
::Ifc4x3_rc2::IfcAlignmentParameterSegment* Ifc4x3_rc2::IfcAlignmentSegment::GeometricParameters() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcAlignmentParameterSegment>(true); }
void Ifc4x3_rc2::IfcAlignmentSegment::setGeometricParameters(::Ifc4x3_rc2::IfcAlignmentParameterSegment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentSegment::declaration() const { return *IFC4X3_RC2_IfcAlignmentSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentSegment::Class() { return *IFC4X3_RC2_IfcAlignmentSegment_type; }
Ifc4x3_rc2::IfcAlignmentSegment::IfcAlignmentSegment(IfcEntityInstanceData* e) : IfcLinearElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentSegment::IfcAlignmentSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcAlignmentParameterSegment* v8_GeometricParameters) : IfcLinearElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::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_GeometricParameters));data_->setArgument(7,attr);} }

// Function implementations for IfcAlignmentVertical
aggregate_of< ::Ifc4x3_rc2::IfcAlignmentVerticalSegment >::ptr Ifc4x3_rc2::IfcAlignmentVertical::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcAlignmentVerticalSegment >(); }
void Ifc4x3_rc2::IfcAlignmentVertical::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcAlignmentVerticalSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentVertical::declaration() const { return *IFC4X3_RC2_IfcAlignmentVertical_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentVertical::Class() { return *IFC4X3_RC2_IfcAlignmentVertical_type; }
Ifc4x3_rc2::IfcAlignmentVertical::IfcAlignmentVertical(IfcEntityInstanceData* e) : IfcLinearElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentVertical_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentVertical::IfcAlignmentVertical(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, aggregate_of< ::Ifc4x3_rc2::IfcAlignmentVerticalSegment >::ptr v8_Segments) : IfcLinearElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentVertical_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::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_Segments)->generalize());data_->setArgument(7,attr);} }

// Function implementations for IfcAlignmentVerticalSegment
double Ifc4x3_rc2::IfcAlignmentVerticalSegment::StartDistAlong() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setStartDistAlong(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcAlignmentVerticalSegment::HorizontalLength() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setHorizontalLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcAlignmentVerticalSegment::StartHeight() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setStartHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcAlignmentVerticalSegment::StartGradient() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setStartGradient(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcAlignmentVerticalSegment::EndGradient() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setEndGradient(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAlignmentVerticalSegment::RadiusOfCurvature() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setRadiusOfCurvature(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value Ifc4x3_rc2::IfcAlignmentVerticalSegment::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAlignmentVerticalSegment::setPredefinedType(::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentVerticalSegment::declaration() const { return *IFC4X3_RC2_IfcAlignmentVerticalSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAlignmentVerticalSegment::Class() { return *IFC4X3_RC2_IfcAlignmentVerticalSegment_type; }
Ifc4x3_rc2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(IfcEntityInstanceData* e) : IfcAlignmentParameterSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAlignmentVerticalSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAlignmentVerticalSegment::IfcAlignmentVerticalSegment(boost::optional< std::string > v1_StartTag, boost::optional< std::string > v2_EndTag, double v3_StartDistAlong, double v4_HorizontalLength, double v5_StartHeight, double v6_StartGradient, double v7_EndGradient, boost::optional< double > v8_RadiusOfCurvature, ::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::Value v9_PredefinedType) : IfcAlignmentParameterSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAlignmentVerticalSegment_type);  if (v1_StartTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_StartTag));data_->setArgument(0,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(0, attr); } if (v2_EndTag) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v2_EndTag));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_StartDistAlong));data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_HorizontalLength));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_StartHeight));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_StartGradient));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v7_EndGradient));data_->setArgument(6,attr);} if (v8_RadiusOfCurvature) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v8_RadiusOfCurvature));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_PredefinedType,::Ifc4x3_rc2::IfcAlignmentVerticalSegmentTypeEnum::ToString(v9_PredefinedType))));data_->setArgument(8,attr);} }

// Function implementations for IfcAnnotation
boost::optional< ::Ifc4x3_rc2::IfcAnnotationTypeEnum::Value > Ifc4x3_rc2::IfcAnnotation::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAnnotationTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcAnnotation::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAnnotationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAnnotationTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcAnnotation::declaration() const { return *IFC4X3_RC2_IfcAnnotation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAnnotation::Class() { return *IFC4X3_RC2_IfcAnnotation_type; }
Ifc4x3_rc2::IfcAnnotation::IfcAnnotation(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAnnotation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAnnotation::IfcAnnotation(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_rc2::IfcAnnotationTypeEnum::Value > v8_PredefinedType) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCurve* Ifc4x3_rc2::IfcAnnotationFillArea::OuterBoundary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcAnnotationFillArea::setOuterBoundary(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr > Ifc4x3_rc2::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_rc2::IfcCurve >(); }
void Ifc4x3_rc2::IfcAnnotationFillArea::setInnerBoundaries(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAnnotationFillArea::declaration() const { return *IFC4X3_RC2_IfcAnnotationFillArea_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAnnotationFillArea::Class() { return *IFC4X3_RC2_IfcAnnotationFillArea_type; }
Ifc4x3_rc2::IfcAnnotationFillArea::IfcAnnotationFillArea(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAnnotationFillArea_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAnnotationFillArea::IfcAnnotationFillArea(::Ifc4x3_rc2::IfcCurve* v1_OuterBoundary, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr > v2_InnerBoundaries) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOrganization* Ifc4x3_rc2::IfcApplication::ApplicationDeveloper() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcOrganization>(true); }
void Ifc4x3_rc2::IfcApplication::setApplicationDeveloper(::Ifc4x3_rc2::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc2::IfcApplication::Version() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcApplication::setVersion(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
std::string Ifc4x3_rc2::IfcApplication::ApplicationFullName() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcApplication::setApplicationFullName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::string Ifc4x3_rc2::IfcApplication::ApplicationIdentifier() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcApplication::setApplicationIdentifier(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcApplication::declaration() const { return *IFC4X3_RC2_IfcApplication_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcApplication::Class() { return *IFC4X3_RC2_IfcApplication_type; }
Ifc4x3_rc2::IfcApplication::IfcApplication(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcApplication_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcApplication::IfcApplication(::Ifc4x3_rc2::IfcOrganization* v1_ApplicationDeveloper, std::string v2_Version, std::string v3_ApplicationFullName, std::string v4_ApplicationIdentifier) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAppliedValue::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcAppliedValue::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcAppliedValue::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcAppliedValueSelect* Ifc4x3_rc2::IfcAppliedValue::AppliedValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAppliedValueSelect>(true); }
void Ifc4x3_rc2::IfcAppliedValue::setAppliedValue(::Ifc4x3_rc2::IfcAppliedValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcMeasureWithUnit* Ifc4x3_rc2::IfcAppliedValue::UnitBasis() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMeasureWithUnit>(true); }
void Ifc4x3_rc2::IfcAppliedValue::setUnitBasis(::Ifc4x3_rc2::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::ApplicableDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcAppliedValue::setApplicableDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::FixedUntilDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcAppliedValue::setFixedUntilDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Category() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcAppliedValue::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAppliedValue::Condition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAppliedValue::setCondition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::Value > Ifc4x3_rc2::IfcAppliedValue::ArithmeticOperator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAppliedValue::setArithmeticOperator(boost::optional< ::Ifc4x3_rc2::IfcArithmeticOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcArithmeticOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > Ifc4x3_rc2::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_rc2::IfcAppliedValue >(); }
void Ifc4x3_rc2::IfcAppliedValue::setComponents(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcAppliedValue::declaration() const { return *IFC4X3_RC2_IfcAppliedValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAppliedValue::Class() { return *IFC4X3_RC2_IfcAppliedValue_type; }
Ifc4x3_rc2::IfcAppliedValue::IfcAppliedValue(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAppliedValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAppliedValue::IfcAppliedValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_rc2::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_rc2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v10_Components) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcApproval::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcApproval::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcApproval::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcApproval::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcApproval::TimeOfApproval() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcApproval::setTimeOfApproval(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Status() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcApproval::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Level() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcApproval::setLevel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcApproval::Qualifier() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcApproval::setQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcApproval::RequestingApproval() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcApproval::setRequestingApproval(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcApproval::GivingApproval() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcApproval::setGivingApproval(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcApproval::declaration() const { return *IFC4X3_RC2_IfcApproval_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcApproval::Class() { return *IFC4X3_RC2_IfcApproval_type; }
Ifc4x3_rc2::IfcApproval::IfcApproval(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcApproval_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcActorSelect* v8_RequestingApproval, ::Ifc4x3_rc2::IfcActorSelect* v9_GivingApproval) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcApproval* Ifc4x3_rc2::IfcApprovalRelationship::RelatingApproval() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcApproval>(true); }
void Ifc4x3_rc2::IfcApprovalRelationship::setRelatingApproval(::Ifc4x3_rc2::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcApproval >::ptr Ifc4x3_rc2::IfcApprovalRelationship::RelatedApprovals() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcApproval >(); }
void Ifc4x3_rc2::IfcApprovalRelationship::setRelatedApprovals(aggregate_of< ::Ifc4x3_rc2::IfcApproval >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcApprovalRelationship::declaration() const { return *IFC4X3_RC2_IfcApprovalRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcApprovalRelationship::Class() { return *IFC4X3_RC2_IfcApprovalRelationship_type; }
Ifc4x3_rc2::IfcApprovalRelationship::IfcApprovalRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcApprovalRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcApprovalRelationship::IfcApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcApproval* v3_RelatingApproval, aggregate_of< ::Ifc4x3_rc2::IfcApproval >::ptr v4_RelatedApprovals) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurve* Ifc4x3_rc2::IfcArbitraryClosedProfileDef::OuterCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcArbitraryClosedProfileDef::setOuterCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcArbitraryClosedProfileDef::declaration() const { return *IFC4X3_RC2_IfcArbitraryClosedProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcArbitraryClosedProfileDef::Class() { return *IFC4X3_RC2_IfcArbitraryClosedProfileDef_type; }
Ifc4x3_rc2::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcArbitraryClosedProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcArbitraryClosedProfileDef::IfcArbitraryClosedProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcCurve* v3_OuterCurve) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcArbitraryClosedProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcBoundedCurve* Ifc4x3_rc2::IfcArbitraryOpenProfileDef::Curve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcBoundedCurve>(true); }
void Ifc4x3_rc2::IfcArbitraryOpenProfileDef::setCurve(::Ifc4x3_rc2::IfcBoundedCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcArbitraryOpenProfileDef::declaration() const { return *IFC4X3_RC2_IfcArbitraryOpenProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcArbitraryOpenProfileDef::Class() { return *IFC4X3_RC2_IfcArbitraryOpenProfileDef_type; }
Ifc4x3_rc2::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcArbitraryOpenProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcArbitraryOpenProfileDef::IfcArbitraryOpenProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcBoundedCurve* v3_Curve) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcArbitraryOpenProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcCurve >::ptr Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::InnerCurves() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcCurve >(); }
void Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::setInnerCurves(aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::declaration() const { return *IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::Class() { return *IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type; }
Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(IfcEntityInstanceData* e) : IfcArbitraryClosedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcArbitraryProfileDefWithVoids::IfcArbitraryProfileDefWithVoids(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcCurve* v3_OuterCurve, aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr v4_InnerCurves) : IfcArbitraryClosedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcArbitraryProfileDefWithVoids_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcAsset::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcAsset::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::OriginalValue() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcCostValue>(true); }
void Ifc4x3_rc2::IfcAsset::setOriginalValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::CurrentValue() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcCostValue>(true); }
void Ifc4x3_rc2::IfcAsset::setCurrentValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::TotalReplacementCost() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcCostValue>(true); }
void Ifc4x3_rc2::IfcAsset::setTotalReplacementCost(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcAsset::Owner() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcAsset::setOwner(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcAsset::User() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcAsset::setUser(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
::Ifc4x3_rc2::IfcPerson* Ifc4x3_rc2::IfcAsset::ResponsiblePerson() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc2::IfcPerson>(true); }
void Ifc4x3_rc2::IfcAsset::setResponsiblePerson(::Ifc4x3_rc2::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcAsset::IncorporationDate() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcAsset::setIncorporationDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcAsset::DepreciatedValue() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc2::IfcCostValue>(true); }
void Ifc4x3_rc2::IfcAsset::setDepreciatedValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAsset::declaration() const { return *IFC4X3_RC2_IfcAsset_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAsset::Class() { return *IFC4X3_RC2_IfcAsset_type; }
Ifc4x3_rc2::IfcAsset::IfcAsset(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAsset_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAsset::IfcAsset(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcCostValue* v7_OriginalValue, ::Ifc4x3_rc2::IfcCostValue* v8_CurrentValue, ::Ifc4x3_rc2::IfcCostValue* v9_TotalReplacementCost, ::Ifc4x3_rc2::IfcActorSelect* v10_Owner, ::Ifc4x3_rc2::IfcActorSelect* v11_User, ::Ifc4x3_rc2::IfcPerson* v12_ResponsiblePerson, boost::optional< std::string > v13_IncorporationDate, ::Ifc4x3_rc2::IfcCostValue* v14_DepreciatedValue) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeWidth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::OverallDepth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setOverallDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
double Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeWidth() const {  double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeThickness() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeFilletRadius() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeEdgeRadius() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::BottomFlangeSlope() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setBottomFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeEdgeRadius() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::TopFlangeSlope() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::setTopFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::Class() { return *IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type; }
Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAsymmetricIShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAsymmetricIShapeProfileDef::IfcAsymmetricIShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcAsymmetricIShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcAudioVisualApplianceTypeEnum::Value > Ifc4x3_rc2::IfcAudioVisualAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcAudioVisualAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAudioVisualAppliance::declaration() const { return *IFC4X3_RC2_IfcAudioVisualAppliance_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAudioVisualAppliance::Class() { return *IFC4X3_RC2_IfcAudioVisualAppliance_type; }
Ifc4x3_rc2::IfcAudioVisualAppliance::IfcAudioVisualAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAudioVisualAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAudioVisualAppliance::IfcAudioVisualAppliance(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAudioVisualApplianceTypeEnum::Value Ifc4x3_rc2::IfcAudioVisualApplianceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcAudioVisualApplianceType::setPredefinedType(::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAudioVisualApplianceType::declaration() const { return *IFC4X3_RC2_IfcAudioVisualApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAudioVisualApplianceType::Class() { return *IFC4X3_RC2_IfcAudioVisualApplianceType_type; }
Ifc4x3_rc2::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAudioVisualApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAudioVisualApplianceType::IfcAudioVisualApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcAudioVisualApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAudioVisualApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcAxis1Placement
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcAxis1Placement::Axis() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcAxis1Placement::setAxis(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAxis1Placement::declaration() const { return *IFC4X3_RC2_IfcAxis1Placement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAxis1Placement::Class() { return *IFC4X3_RC2_IfcAxis1Placement_type; }
Ifc4x3_rc2::IfcAxis1Placement::IfcAxis1Placement(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAxis1Placement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAxis1Placement::IfcAxis1Placement(::Ifc4x3_rc2::IfcPoint* v1_Location, ::Ifc4x3_rc2::IfcDirection* v2_Axis) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcAxis2Placement2D::RefDirection() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcAxis2Placement2D::setRefDirection(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAxis2Placement2D::declaration() const { return *IFC4X3_RC2_IfcAxis2Placement2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAxis2Placement2D::Class() { return *IFC4X3_RC2_IfcAxis2Placement2D_type; }
Ifc4x3_rc2::IfcAxis2Placement2D::IfcAxis2Placement2D(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAxis2Placement2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAxis2Placement2D::IfcAxis2Placement2D(::Ifc4x3_rc2::IfcPoint* v1_Location, ::Ifc4x3_rc2::IfcDirection* v2_RefDirection) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcAxis2Placement3D::Axis() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcAxis2Placement3D::setAxis(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcAxis2Placement3D::RefDirection() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcAxis2Placement3D::setRefDirection(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAxis2Placement3D::declaration() const { return *IFC4X3_RC2_IfcAxis2Placement3D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAxis2Placement3D::Class() { return *IFC4X3_RC2_IfcAxis2Placement3D_type; }
Ifc4x3_rc2::IfcAxis2Placement3D::IfcAxis2Placement3D(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAxis2Placement3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAxis2Placement3D::IfcAxis2Placement3D(::Ifc4x3_rc2::IfcPoint* v1_Location, ::Ifc4x3_rc2::IfcDirection* v2_Axis, ::Ifc4x3_rc2::IfcDirection* v3_RefDirection) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcAxis2PlacementLinear
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcAxis2PlacementLinear::Axis() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcAxis2PlacementLinear::setAxis(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcAxis2PlacementLinear::RefDirection() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcAxis2PlacementLinear::setRefDirection(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcAxis2PlacementLinear::declaration() const { return *IFC4X3_RC2_IfcAxis2PlacementLinear_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAxis2PlacementLinear::Class() { return *IFC4X3_RC2_IfcAxis2PlacementLinear_type; }
Ifc4x3_rc2::IfcAxis2PlacementLinear::IfcAxis2PlacementLinear(IfcEntityInstanceData* e) : IfcPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAxis2PlacementLinear_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAxis2PlacementLinear::IfcAxis2PlacementLinear(::Ifc4x3_rc2::IfcPoint* v1_Location, ::Ifc4x3_rc2::IfcDirection* v2_Axis, ::Ifc4x3_rc2::IfcDirection* v3_RefDirection) : IfcPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAxis2PlacementLinear_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_rc2::IfcLinearAxisWithInclination::list::ptr Ifc4x3_rc2::IfcAxisLateralInclination::ToLinearAxis() const { return data_->getInverse(IFC4X3_RC2_IfcLinearAxisWithInclination_type, 1)->as<IfcLinearAxisWithInclination>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcAxisLateralInclination::declaration() const { return *IFC4X3_RC2_IfcAxisLateralInclination_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcAxisLateralInclination::Class() { return *IFC4X3_RC2_IfcAxisLateralInclination_type; }
Ifc4x3_rc2::IfcAxisLateralInclination::IfcAxisLateralInclination(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcAxisLateralInclination_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcAxisLateralInclination::IfcAxisLateralInclination() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcAxisLateralInclination_type);  }

// Function implementations for IfcBSplineCurve
int Ifc4x3_rc2::IfcBSplineCurve::Degree() const {  int v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcBSplineCurve::setDegree(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr Ifc4x3_rc2::IfcBSplineCurve::ControlPointsList() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcCartesianPoint >(); }
void Ifc4x3_rc2::IfcBSplineCurve::setControlPointsList(aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcBSplineCurveForm::Value Ifc4x3_rc2::IfcBSplineCurve::CurveForm() const {  return ::Ifc4x3_rc2::IfcBSplineCurveForm::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcBSplineCurve::setCurveForm(::Ifc4x3_rc2::IfcBSplineCurveForm::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBSplineCurveForm::ToString(v)));data_->setArgument(2,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcBSplineCurve::ClosedCurve() const {  boost::logic::tribool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcBSplineCurve::setClosedCurve(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcBSplineCurve::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcBSplineCurve::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBSplineCurve::declaration() const { return *IFC4X3_RC2_IfcBSplineCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBSplineCurve::Class() { return *IFC4X3_RC2_IfcBSplineCurve_type; }
Ifc4x3_rc2::IfcBSplineCurve::IfcBSplineCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBSplineCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBSplineCurve::IfcBSplineCurve(int v1_Degree, aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_rc2::IfcBSplineCurveForm::Value v3_CurveForm, boost::logic::tribool v4_ClosedCurve, boost::logic::tribool v5_SelfIntersect) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBSplineCurveWithKnots::KnotMultiplicities() const {  std::vector< int > /*[2:?]*/ v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::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_rc2::IfcBSplineCurveWithKnots::Knots() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcBSplineCurveWithKnots::setKnots(std::vector< double > /*[2:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcKnotType::Value Ifc4x3_rc2::IfcBSplineCurveWithKnots::KnotSpec() const {  return ::Ifc4x3_rc2::IfcKnotType::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcBSplineCurveWithKnots::setKnotSpec(::Ifc4x3_rc2::IfcKnotType::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcKnotType::ToString(v)));data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBSplineCurveWithKnots::declaration() const { return *IFC4X3_RC2_IfcBSplineCurveWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBSplineCurveWithKnots::Class() { return *IFC4X3_RC2_IfcBSplineCurveWithKnots_type; }
Ifc4x3_rc2::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(IfcEntityInstanceData* e) : IfcBSplineCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBSplineCurveWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBSplineCurveWithKnots::IfcBSplineCurveWithKnots(int v1_Degree, aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_rc2::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_rc2::IfcKnotType::Value v8_KnotSpec) : IfcBSplineCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcKnotType::ToString(v8_KnotSpec))));data_->setArgument(7,attr);} }

// Function implementations for IfcBSplineSurface
int Ifc4x3_rc2::IfcBSplineSurface::UDegree() const {  int v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcBSplineSurface::setUDegree(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
int Ifc4x3_rc2::IfcBSplineSurface::VDegree() const {  int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcBSplineSurface::setVDegree(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
aggregate_of_aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr Ifc4x3_rc2::IfcBSplineSurface::ControlPointsList() const {  aggregate_of_aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcCartesianPoint >(); }
void Ifc4x3_rc2::IfcBSplineSurface::setControlPointsList(aggregate_of_aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcBSplineSurfaceForm::Value Ifc4x3_rc2::IfcBSplineSurface::SurfaceForm() const {  return ::Ifc4x3_rc2::IfcBSplineSurfaceForm::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc2::IfcBSplineSurface::setSurfaceForm(::Ifc4x3_rc2::IfcBSplineSurfaceForm::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBSplineSurfaceForm::ToString(v)));data_->setArgument(3,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcBSplineSurface::UClosed() const {  boost::logic::tribool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcBSplineSurface::setUClosed(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcBSplineSurface::VClosed() const {  boost::logic::tribool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcBSplineSurface::setVClosed(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcBSplineSurface::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcBSplineSurface::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBSplineSurface::declaration() const { return *IFC4X3_RC2_IfcBSplineSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBSplineSurface::Class() { return *IFC4X3_RC2_IfcBSplineSurface_type; }
Ifc4x3_rc2::IfcBSplineSurface::IfcBSplineSurface(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBSplineSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBSplineSurface::IfcBSplineSurface(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::IfcBSplineSurfaceWithKnots::UMultiplicities() const {  std::vector< int > /*[2:?]*/ v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::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_rc2::IfcBSplineSurfaceWithKnots::VMultiplicities() const {  std::vector< int > /*[2:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::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_rc2::IfcBSplineSurfaceWithKnots::UKnots() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::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_rc2::IfcBSplineSurfaceWithKnots::VKnots() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::setVKnots(std::vector< double > /*[2:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
::Ifc4x3_rc2::IfcKnotType::Value Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::KnotSpec() const {  return ::Ifc4x3_rc2::IfcKnotType::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::setKnotSpec(::Ifc4x3_rc2::IfcKnotType::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcKnotType::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::declaration() const { return *IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::Class() { return *IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type; }
Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(IfcEntityInstanceData* e) : IfcBSplineSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBSplineSurfaceWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBSplineSurfaceWithKnots::IfcBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_rc2::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_rc2::IfcKnotType::Value v12_KnotSpec) : IfcBSplineSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcKnotType::ToString(v12_KnotSpec))));data_->setArgument(11,attr);} }

// Function implementations for IfcBeam
boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > Ifc4x3_rc2::IfcBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBeamTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBeam::declaration() const { return *IFC4X3_RC2_IfcBeam_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBeam::Class() { return *IFC4X3_RC2_IfcBeam_type; }
Ifc4x3_rc2::IfcBeam::IfcBeam(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBeam_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBeam::IfcBeam(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBeamStandardCase::declaration() const { return *IFC4X3_RC2_IfcBeamStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBeamStandardCase::Class() { return *IFC4X3_RC2_IfcBeamStandardCase_type; }
Ifc4x3_rc2::IfcBeamStandardCase::IfcBeamStandardCase(IfcEntityInstanceData* e) : IfcBeam((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBeamStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBeamStandardCase::IfcBeamStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBeamTypeEnum::Value > v9_PredefinedType) : IfcBeam((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBeamTypeEnum::Value Ifc4x3_rc2::IfcBeamType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcBeamTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBeamType::setPredefinedType(::Ifc4x3_rc2::IfcBeamTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBeamTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBeamType::declaration() const { return *IFC4X3_RC2_IfcBeamType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBeamType::Class() { return *IFC4X3_RC2_IfcBeamType_type; }
Ifc4x3_rc2::IfcBeamType::IfcBeamType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBeamType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBeamType::IfcBeamType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcBeamTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBeamTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBearing
boost::optional< ::Ifc4x3_rc2::IfcBearingTypeEnum::Value > Ifc4x3_rc2::IfcBearing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBearingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcBearing::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBearingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBearingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBearing::declaration() const { return *IFC4X3_RC2_IfcBearing_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBearing::Class() { return *IFC4X3_RC2_IfcBearing_type; }
Ifc4x3_rc2::IfcBearing::IfcBearing(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBearing_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBearing::IfcBearing(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBearingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBearingTypeEnum::Value Ifc4x3_rc2::IfcBearingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcBearingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBearingType::setPredefinedType(::Ifc4x3_rc2::IfcBearingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBearingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBearingType::declaration() const { return *IFC4X3_RC2_IfcBearingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBearingType::Class() { return *IFC4X3_RC2_IfcBearingType_type; }
Ifc4x3_rc2::IfcBearingType::IfcBearingType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBearingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBearingType::IfcBearingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcBearingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBearingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBlobTexture
std::string Ifc4x3_rc2::IfcBlobTexture::RasterFormat() const {  std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcBlobTexture::setRasterFormat(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::dynamic_bitset<> Ifc4x3_rc2::IfcBlobTexture::RasterCode() const {  boost::dynamic_bitset<> v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcBlobTexture::setRasterCode(boost::dynamic_bitset<> v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBlobTexture::declaration() const { return *IFC4X3_RC2_IfcBlobTexture_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBlobTexture::Class() { return *IFC4X3_RC2_IfcBlobTexture_type; }
Ifc4x3_rc2::IfcBlobTexture::IfcBlobTexture(IfcEntityInstanceData* e) : IfcSurfaceTexture((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBlobTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBlobTexture::IfcBlobTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcBlock::XLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcBlock::setXLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcBlock::YLength() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcBlock::setYLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcBlock::ZLength() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcBlock::setZLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBlock::declaration() const { return *IFC4X3_RC2_IfcBlock_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBlock::Class() { return *IFC4X3_RC2_IfcBlock_type; }
Ifc4x3_rc2::IfcBlock::IfcBlock(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBlock_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBlock::IfcBlock(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_ZLength) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcBlossCurve
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcBlossCurve::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcBlossCurve::setPosition(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcBlossCurve::CurveLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcBlossCurve::setCurveLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcBlossCurve::Radius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcBlossCurve::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBlossCurve::declaration() const { return *IFC4X3_RC2_IfcBlossCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBlossCurve::Class() { return *IFC4X3_RC2_IfcBlossCurve_type; }
Ifc4x3_rc2::IfcBlossCurve::IfcBlossCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBlossCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBlossCurve::IfcBlossCurve(::Ifc4x3_rc2::IfcAxis2Placement* v1_Position, double v2_CurveLength, double v3_Radius) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBlossCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CurveLength));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Radius));data_->setArgument(2,attr);} }

// Function implementations for IfcBoiler
boost::optional< ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value > Ifc4x3_rc2::IfcBoiler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBoilerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcBoiler::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBoilerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoiler::declaration() const { return *IFC4X3_RC2_IfcBoiler_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoiler::Class() { return *IFC4X3_RC2_IfcBoiler_type; }
Ifc4x3_rc2::IfcBoiler::IfcBoiler(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoiler_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoiler::IfcBoiler(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBoilerTypeEnum::Value Ifc4x3_rc2::IfcBoilerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcBoilerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBoilerType::setPredefinedType(::Ifc4x3_rc2::IfcBoilerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBoilerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoilerType::declaration() const { return *IFC4X3_RC2_IfcBoilerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoilerType::Class() { return *IFC4X3_RC2_IfcBoilerType_type; }
Ifc4x3_rc2::IfcBoilerType::IfcBoilerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoilerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoilerType::IfcBoilerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcBoilerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBoilerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBooleanClippingResult


const IfcParse::entity& Ifc4x3_rc2::IfcBooleanClippingResult::declaration() const { return *IFC4X3_RC2_IfcBooleanClippingResult_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBooleanClippingResult::Class() { return *IFC4X3_RC2_IfcBooleanClippingResult_type; }
Ifc4x3_rc2::IfcBooleanClippingResult::IfcBooleanClippingResult(IfcEntityInstanceData* e) : IfcBooleanResult((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBooleanClippingResult_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBooleanClippingResult::IfcBooleanClippingResult(::Ifc4x3_rc2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_rc2::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_rc2::IfcBooleanOperand* v3_SecondOperand) : IfcBooleanResult((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBooleanClippingResult_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Operator,::Ifc4x3_rc2::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_rc2::IfcBooleanOperator::Value Ifc4x3_rc2::IfcBooleanResult::Operator() const {  return ::Ifc4x3_rc2::IfcBooleanOperator::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcBooleanResult::setOperator(::Ifc4x3_rc2::IfcBooleanOperator::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBooleanOperator::ToString(v)));data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcBooleanOperand* Ifc4x3_rc2::IfcBooleanResult::FirstOperand() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcBooleanOperand>(true); }
void Ifc4x3_rc2::IfcBooleanResult::setFirstOperand(::Ifc4x3_rc2::IfcBooleanOperand* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcBooleanOperand* Ifc4x3_rc2::IfcBooleanResult::SecondOperand() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcBooleanOperand>(true); }
void Ifc4x3_rc2::IfcBooleanResult::setSecondOperand(::Ifc4x3_rc2::IfcBooleanOperand* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBooleanResult::declaration() const { return *IFC4X3_RC2_IfcBooleanResult_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBooleanResult::Class() { return *IFC4X3_RC2_IfcBooleanResult_type; }
Ifc4x3_rc2::IfcBooleanResult::IfcBooleanResult(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBooleanResult_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBooleanResult::IfcBooleanResult(::Ifc4x3_rc2::IfcBooleanOperator::Value v1_Operator, ::Ifc4x3_rc2::IfcBooleanOperand* v2_FirstOperand, ::Ifc4x3_rc2::IfcBooleanOperand* v3_SecondOperand) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBooleanResult_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Operator,::Ifc4x3_rc2::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_rc2::IfcBorehole::declaration() const { return *IFC4X3_RC2_IfcBorehole_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBorehole::Class() { return *IFC4X3_RC2_IfcBorehole_type; }
Ifc4x3_rc2::IfcBorehole::IfcBorehole(IfcEntityInstanceData* e) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBorehole_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBorehole::IfcBorehole(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBoundaryCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcBoundaryCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryCondition::declaration() const { return *IFC4X3_RC2_IfcBoundaryCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryCondition::Class() { return *IFC4X3_RC2_IfcBoundaryCondition_type; }
Ifc4x3_rc2::IfcBoundaryCondition::IfcBoundaryCondition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundaryCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundaryCondition::IfcBoundaryCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBoundaryCurve::declaration() const { return *IFC4X3_RC2_IfcBoundaryCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryCurve::Class() { return *IFC4X3_RC2_IfcBoundaryCurve_type; }
Ifc4x3_rc2::IfcBoundaryCurve::IfcBoundaryCurve(IfcEntityInstanceData* e) : IfcCompositeCurveOnSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundaryCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundaryCurve::IfcBoundaryCurve(aggregate_of< ::Ifc4x3_rc2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurveOnSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthX(::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthY(::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryEdgeCondition::TranslationalStiffnessByLengthZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryEdgeCondition::setTranslationalStiffnessByLengthZ(::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthX(::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthY(::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryEdgeCondition::RotationalStiffnessByLengthZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryEdgeCondition::setRotationalStiffnessByLengthZ(::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryEdgeCondition::declaration() const { return *IFC4X3_RC2_IfcBoundaryEdgeCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryEdgeCondition::Class() { return *IFC4X3_RC2_IfcBoundaryEdgeCondition_type; }
Ifc4x3_rc2::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(IfcEntityInstanceData* e) : IfcBoundaryCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundaryEdgeCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundaryEdgeCondition::IfcBoundaryEdgeCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* v2_TranslationalStiffnessByLengthX, ::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* v3_TranslationalStiffnessByLengthY, ::Ifc4x3_rc2::IfcModulusOfTranslationalSubgradeReactionSelect* v4_TranslationalStiffnessByLengthZ, ::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* v5_RotationalStiffnessByLengthX, ::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* v6_RotationalStiffnessByLengthY, ::Ifc4x3_rc2::IfcModulusOfRotationalSubgradeReactionSelect* v7_RotationalStiffnessByLengthZ) : IfcBoundaryCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcModulusOfSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaX(::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaY(::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* Ifc4x3_rc2::IfcBoundaryFaceCondition::TranslationalStiffnessByAreaZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryFaceCondition::setTranslationalStiffnessByAreaZ(::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryFaceCondition::declaration() const { return *IFC4X3_RC2_IfcBoundaryFaceCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryFaceCondition::Class() { return *IFC4X3_RC2_IfcBoundaryFaceCondition_type; }
Ifc4x3_rc2::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(IfcEntityInstanceData* e) : IfcBoundaryCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundaryFaceCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundaryFaceCondition::IfcBoundaryFaceCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* v2_TranslationalStiffnessByAreaX, ::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* v3_TranslationalStiffnessByAreaY, ::Ifc4x3_rc2::IfcModulusOfSubgradeReactionSelect* v4_TranslationalStiffnessByAreaZ) : IfcBoundaryCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTranslationalStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeCondition::TranslationalStiffnessX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcTranslationalStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeCondition::setTranslationalStiffnessX(::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeCondition::TranslationalStiffnessY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcTranslationalStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeCondition::setTranslationalStiffnessY(::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeCondition::TranslationalStiffnessZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcTranslationalStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeCondition::setTranslationalStiffnessZ(::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcRotationalStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeCondition::RotationalStiffnessX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcRotationalStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeCondition::setRotationalStiffnessX(::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcRotationalStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeCondition::RotationalStiffnessY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcRotationalStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeCondition::setRotationalStiffnessY(::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcRotationalStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeCondition::RotationalStiffnessZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcRotationalStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeCondition::setRotationalStiffnessZ(::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryNodeCondition::declaration() const { return *IFC4X3_RC2_IfcBoundaryNodeCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryNodeCondition::Class() { return *IFC4X3_RC2_IfcBoundaryNodeCondition_type; }
Ifc4x3_rc2::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(IfcEntityInstanceData* e) : IfcBoundaryCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundaryNodeCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundaryNodeCondition::IfcBoundaryNodeCondition(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ) : IfcBoundaryCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWarpingStiffnessSelect* Ifc4x3_rc2::IfcBoundaryNodeConditionWarping::WarpingStiffness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcWarpingStiffnessSelect>(true); }
void Ifc4x3_rc2::IfcBoundaryNodeConditionWarping::setWarpingStiffness(::Ifc4x3_rc2::IfcWarpingStiffnessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryNodeConditionWarping::declaration() const { return *IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundaryNodeConditionWarping::Class() { return *IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type; }
Ifc4x3_rc2::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(IfcEntityInstanceData* e) : IfcBoundaryNodeCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundaryNodeConditionWarping_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundaryNodeConditionWarping::IfcBoundaryNodeConditionWarping(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v2_TranslationalStiffnessX, ::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v3_TranslationalStiffnessY, ::Ifc4x3_rc2::IfcTranslationalStiffnessSelect* v4_TranslationalStiffnessZ, ::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v5_RotationalStiffnessX, ::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v6_RotationalStiffnessY, ::Ifc4x3_rc2::IfcRotationalStiffnessSelect* v7_RotationalStiffnessZ, ::Ifc4x3_rc2::IfcWarpingStiffnessSelect* v8_WarpingStiffness) : IfcBoundaryNodeCondition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLinearPositioningElement::list::ptr Ifc4x3_rc2::IfcBoundedCurve::PositioningElement() const { return data_->getInverse(IFC4X3_RC2_IfcLinearPositioningElement_type, 7)->as<IfcLinearPositioningElement>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcBoundedCurve::declaration() const { return *IFC4X3_RC2_IfcBoundedCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundedCurve::Class() { return *IFC4X3_RC2_IfcBoundedCurve_type; }
Ifc4x3_rc2::IfcBoundedCurve::IfcBoundedCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundedCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundedCurve::IfcBoundedCurve() : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBoundedCurve_type);  }

// Function implementations for IfcBoundedSurface


const IfcParse::entity& Ifc4x3_rc2::IfcBoundedSurface::declaration() const { return *IFC4X3_RC2_IfcBoundedSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundedSurface::Class() { return *IFC4X3_RC2_IfcBoundedSurface_type; }
Ifc4x3_rc2::IfcBoundedSurface::IfcBoundedSurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundedSurface::IfcBoundedSurface() : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcBoundedSurface_type);  }

// Function implementations for IfcBoundingBox
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcBoundingBox::Corner() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcBoundingBox::setCorner(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcBoundingBox::XDim() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcBoundingBox::setXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcBoundingBox::YDim() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcBoundingBox::setYDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcBoundingBox::ZDim() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcBoundingBox::setZDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoundingBox::declaration() const { return *IFC4X3_RC2_IfcBoundingBox_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoundingBox::Class() { return *IFC4X3_RC2_IfcBoundingBox_type; }
Ifc4x3_rc2::IfcBoundingBox::IfcBoundingBox(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoundingBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoundingBox::IfcBoundingBox(::Ifc4x3_rc2::IfcCartesianPoint* v1_Corner, double v2_XDim, double v3_YDim, double v4_ZDim) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBoundingBox* Ifc4x3_rc2::IfcBoxedHalfSpace::Enclosure() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcBoundingBox>(true); }
void Ifc4x3_rc2::IfcBoxedHalfSpace::setEnclosure(::Ifc4x3_rc2::IfcBoundingBox* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBoxedHalfSpace::declaration() const { return *IFC4X3_RC2_IfcBoxedHalfSpace_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBoxedHalfSpace::Class() { return *IFC4X3_RC2_IfcBoxedHalfSpace_type; }
Ifc4x3_rc2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(IfcEntityInstanceData* e) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBoxedHalfSpace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBoxedHalfSpace::IfcBoxedHalfSpace(::Ifc4x3_rc2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_rc2::IfcBoundingBox* v3_Enclosure) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBridgeTypeEnum::Value > Ifc4x3_rc2::IfcBridge::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBridgeTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBridge::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBridgeTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBridgeTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBridge::declaration() const { return *IFC4X3_RC2_IfcBridge_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBridge::Class() { return *IFC4X3_RC2_IfcBridge_type; }
Ifc4x3_rc2::IfcBridge::IfcBridge(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBridge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBridge::IfcBridge(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_rc2::IfcBridgeTypeEnum::Value > v10_PredefinedType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcBridgePart::declaration() const { return *IFC4X3_RC2_IfcBridgePart_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBridgePart::Class() { return *IFC4X3_RC2_IfcBridgePart_type; }
Ifc4x3_rc2::IfcBridgePart::IfcBridgePart(IfcEntityInstanceData* e) : IfcFacilityPart((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBridgePart_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBridgePart::IfcBridgePart(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_rc2::IfcFacilityPartTypeSelect* v10_PredefinedType, ::Ifc4x3_rc2::IfcFacilityUsageEnum::Value v11_UsageType) : IfcFacilityPart((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFacilityUsageEnum::ToString(v11_UsageType))));data_->setArgument(10,attr);} }

// Function implementations for IfcBuilding
boost::optional< double > Ifc4x3_rc2::IfcBuilding::ElevationOfRefHeight() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcBuilding::setElevationOfRefHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcBuilding::ElevationOfTerrain() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcBuilding::setElevationOfTerrain(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
::Ifc4x3_rc2::IfcPostalAddress* Ifc4x3_rc2::IfcBuilding::BuildingAddress() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc2::IfcPostalAddress>(true); }
void Ifc4x3_rc2::IfcBuilding::setBuildingAddress(::Ifc4x3_rc2::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuilding::declaration() const { return *IFC4X3_RC2_IfcBuilding_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuilding::Class() { return *IFC4X3_RC2_IfcBuilding_type; }
Ifc4x3_rc2::IfcBuilding::IfcBuilding(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuilding_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuilding::IfcBuilding(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_ElevationOfRefHeight, boost::optional< double > v11_ElevationOfTerrain, ::Ifc4x3_rc2::IfcPostalAddress* v12_BuildingAddress) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingElementPartTypeEnum::Value > Ifc4x3_rc2::IfcBuildingElementPart::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcBuildingElementPart::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementPart::declaration() const { return *IFC4X3_RC2_IfcBuildingElementPart_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementPart::Class() { return *IFC4X3_RC2_IfcBuildingElementPart_type; }
Ifc4x3_rc2::IfcBuildingElementPart::IfcBuildingElementPart(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuildingElementPart_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuildingElementPart::IfcBuildingElementPart(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingElementPartTypeEnum::Value Ifc4x3_rc2::IfcBuildingElementPartType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBuildingElementPartType::setPredefinedType(::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementPartType::declaration() const { return *IFC4X3_RC2_IfcBuildingElementPartType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementPartType::Class() { return *IFC4X3_RC2_IfcBuildingElementPartType_type; }
Ifc4x3_rc2::IfcBuildingElementPartType::IfcBuildingElementPartType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuildingElementPartType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuildingElementPartType::IfcBuildingElementPartType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcBuildingElementPartTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBuildingElementPartTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBuildingElementProxy
boost::optional< ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value > Ifc4x3_rc2::IfcBuildingElementProxy::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcBuildingElementProxy::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementProxy::declaration() const { return *IFC4X3_RC2_IfcBuildingElementProxy_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementProxy::Class() { return *IFC4X3_RC2_IfcBuildingElementProxy_type; }
Ifc4x3_rc2::IfcBuildingElementProxy::IfcBuildingElementProxy(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuildingElementProxy_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuildingElementProxy::IfcBuildingElementProxy(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingElementProxyTypeEnum::Value Ifc4x3_rc2::IfcBuildingElementProxyType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBuildingElementProxyType::setPredefinedType(::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementProxyType::declaration() const { return *IFC4X3_RC2_IfcBuildingElementProxyType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuildingElementProxyType::Class() { return *IFC4X3_RC2_IfcBuildingElementProxyType_type; }
Ifc4x3_rc2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuildingElementProxyType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuildingElementProxyType::IfcBuildingElementProxyType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcBuildingElementProxyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBuildingElementProxyTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcBuildingStorey
boost::optional< double > Ifc4x3_rc2::IfcBuildingStorey::Elevation() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcBuildingStorey::setElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuildingStorey::declaration() const { return *IFC4X3_RC2_IfcBuildingStorey_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuildingStorey::Class() { return *IFC4X3_RC2_IfcBuildingStorey_type; }
Ifc4x3_rc2::IfcBuildingStorey::IfcBuildingStorey(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuildingStorey_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuildingStorey::IfcBuildingStorey(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< double > v10_Elevation) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuildingSystemTypeEnum::Value > Ifc4x3_rc2::IfcBuildingSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcBuildingSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcBuildingSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcBuildingSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuildingSystem::declaration() const { return *IFC4X3_RC2_IfcBuildingSystem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuildingSystem::Class() { return *IFC4X3_RC2_IfcBuildingSystem_type; }
Ifc4x3_rc2::IfcBuildingSystem::IfcBuildingSystem(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuildingSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuildingSystem::IfcBuildingSystem(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_rc2::IfcBuildingSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBuiltElement::declaration() const { return *IFC4X3_RC2_IfcBuiltElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuiltElement::Class() { return *IFC4X3_RC2_IfcBuiltElement_type; }
Ifc4x3_rc2::IfcBuiltElement::IfcBuiltElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuiltElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuiltElement::IfcBuiltElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBuiltElementType::declaration() const { return *IFC4X3_RC2_IfcBuiltElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuiltElementType::Class() { return *IFC4X3_RC2_IfcBuiltElementType_type; }
Ifc4x3_rc2::IfcBuiltElementType::IfcBuiltElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuiltElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuiltElementType::IfcBuiltElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBuiltSystemTypeEnum::Value > Ifc4x3_rc2::IfcBuiltSystem::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcBuiltSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcBuiltSystem::LongName() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcBuiltSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBuiltSystem::declaration() const { return *IFC4X3_RC2_IfcBuiltSystem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBuiltSystem::Class() { return *IFC4X3_RC2_IfcBuiltSystem_type; }
Ifc4x3_rc2::IfcBuiltSystem::IfcBuiltSystem(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBuiltSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBuiltSystem::IfcBuiltSystem(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_rc2::IfcBuiltSystemTypeEnum::Value > v6_PredefinedType, boost::optional< std::string > v7_LongName) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBurnerTypeEnum::Value > Ifc4x3_rc2::IfcBurner::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcBurnerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcBurner::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcBurnerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcBurnerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBurner::declaration() const { return *IFC4X3_RC2_IfcBurner_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBurner::Class() { return *IFC4X3_RC2_IfcBurner_type; }
Ifc4x3_rc2::IfcBurner::IfcBurner(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBurner_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBurner::IfcBurner(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcBurnerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBurnerTypeEnum::Value Ifc4x3_rc2::IfcBurnerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcBurnerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcBurnerType::setPredefinedType(::Ifc4x3_rc2::IfcBurnerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBurnerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcBurnerType::declaration() const { return *IFC4X3_RC2_IfcBurnerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcBurnerType::Class() { return *IFC4X3_RC2_IfcBurnerType_type; }
Ifc4x3_rc2::IfcBurnerType::IfcBurnerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcBurnerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcBurnerType::IfcBurnerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcBurnerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcBurnerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCShapeProfileDef
double Ifc4x3_rc2::IfcCShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcCShapeProfileDef::Width() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcCShapeProfileDef::setWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcCShapeProfileDef::WallThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcCShapeProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcCShapeProfileDef::Girth() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcCShapeProfileDef::setGirth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcCShapeProfileDef::InternalFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcCShapeProfileDef::setInternalFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcCShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCShapeProfileDef::Class() { return *IFC4X3_RC2_IfcCShapeProfileDef_type; }
Ifc4x3_rc2::IfcCShapeProfileDef::IfcCShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCShapeProfileDef::IfcCShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcCShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcCableCarrierFittingTypeEnum::Value > Ifc4x3_rc2::IfcCableCarrierFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCableCarrierFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierFitting::declaration() const { return *IFC4X3_RC2_IfcCableCarrierFitting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierFitting::Class() { return *IFC4X3_RC2_IfcCableCarrierFitting_type; }
Ifc4x3_rc2::IfcCableCarrierFitting::IfcCableCarrierFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableCarrierFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableCarrierFitting::IfcCableCarrierFitting(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableCarrierFittingTypeEnum::Value Ifc4x3_rc2::IfcCableCarrierFittingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCableCarrierFittingType::setPredefinedType(::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierFittingType::declaration() const { return *IFC4X3_RC2_IfcCableCarrierFittingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierFittingType::Class() { return *IFC4X3_RC2_IfcCableCarrierFittingType_type; }
Ifc4x3_rc2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableCarrierFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableCarrierFittingType::IfcCableCarrierFittingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCableCarrierFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCableCarrierFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCableCarrierSegment
boost::optional< ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value > Ifc4x3_rc2::IfcCableCarrierSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCableCarrierSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierSegment::declaration() const { return *IFC4X3_RC2_IfcCableCarrierSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierSegment::Class() { return *IFC4X3_RC2_IfcCableCarrierSegment_type; }
Ifc4x3_rc2::IfcCableCarrierSegment::IfcCableCarrierSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableCarrierSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableCarrierSegment::IfcCableCarrierSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableCarrierSegmentTypeEnum::Value Ifc4x3_rc2::IfcCableCarrierSegmentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCableCarrierSegmentType::setPredefinedType(::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierSegmentType::declaration() const { return *IFC4X3_RC2_IfcCableCarrierSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableCarrierSegmentType::Class() { return *IFC4X3_RC2_IfcCableCarrierSegmentType_type; }
Ifc4x3_rc2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableCarrierSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableCarrierSegmentType::IfcCableCarrierSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCableCarrierSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCableCarrierSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCableFitting
boost::optional< ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value > Ifc4x3_rc2::IfcCableFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCableFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableFitting::declaration() const { return *IFC4X3_RC2_IfcCableFitting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableFitting::Class() { return *IFC4X3_RC2_IfcCableFitting_type; }
Ifc4x3_rc2::IfcCableFitting::IfcCableFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableFitting::IfcCableFitting(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableFittingTypeEnum::Value Ifc4x3_rc2::IfcCableFittingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCableFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCableFittingType::setPredefinedType(::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCableFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableFittingType::declaration() const { return *IFC4X3_RC2_IfcCableFittingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableFittingType::Class() { return *IFC4X3_RC2_IfcCableFittingType_type; }
Ifc4x3_rc2::IfcCableFittingType::IfcCableFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableFittingType::IfcCableFittingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCableFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCableFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCableSegment
boost::optional< ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value > Ifc4x3_rc2::IfcCableSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCableSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCableSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableSegment::declaration() const { return *IFC4X3_RC2_IfcCableSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableSegment::Class() { return *IFC4X3_RC2_IfcCableSegment_type; }
Ifc4x3_rc2::IfcCableSegment::IfcCableSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableSegment::IfcCableSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCableSegmentTypeEnum::Value Ifc4x3_rc2::IfcCableSegmentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCableSegmentType::setPredefinedType(::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCableSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCableSegmentType::declaration() const { return *IFC4X3_RC2_IfcCableSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCableSegmentType::Class() { return *IFC4X3_RC2_IfcCableSegmentType_type; }
Ifc4x3_rc2::IfcCableSegmentType::IfcCableSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCableSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCableSegmentType::IfcCableSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCableSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCableSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCaissonFoundation
boost::optional< ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value > Ifc4x3_rc2::IfcCaissonFoundation::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCaissonFoundation::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCaissonFoundation::declaration() const { return *IFC4X3_RC2_IfcCaissonFoundation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCaissonFoundation::Class() { return *IFC4X3_RC2_IfcCaissonFoundation_type; }
Ifc4x3_rc2::IfcCaissonFoundation::IfcCaissonFoundation(IfcEntityInstanceData* e) : IfcDeepFoundation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCaissonFoundation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCaissonFoundation::IfcCaissonFoundation(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value > v9_PredefinedType) : IfcDeepFoundation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCaissonFoundationTypeEnum::Value Ifc4x3_rc2::IfcCaissonFoundationType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCaissonFoundationType::setPredefinedType(::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCaissonFoundationType::declaration() const { return *IFC4X3_RC2_IfcCaissonFoundationType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCaissonFoundationType::Class() { return *IFC4X3_RC2_IfcCaissonFoundationType_type; }
Ifc4x3_rc2::IfcCaissonFoundationType::IfcCaissonFoundationType(IfcEntityInstanceData* e) : IfcDeepFoundationType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCaissonFoundationType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCaissonFoundationType::IfcCaissonFoundationType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCaissonFoundationTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCaissonFoundationTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCartesianPoint
std::vector< double > /*[1:3]*/ Ifc4x3_rc2::IfcCartesianPoint::Coordinates() const {  std::vector< double > /*[1:3]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::IfcCartesianPoint::declaration() const { return *IFC4X3_RC2_IfcCartesianPoint_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPoint::Class() { return *IFC4X3_RC2_IfcCartesianPoint_type; }
Ifc4x3_rc2::IfcCartesianPoint::IfcCartesianPoint(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianPoint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianPoint::IfcCartesianPoint(std::vector< double > /*[1:3]*/ v1_Coordinates) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCartesianPoint_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} }

// Function implementations for IfcCartesianPointList


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList::declaration() const { return *IFC4X3_RC2_IfcCartesianPointList_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList::Class() { return *IFC4X3_RC2_IfcCartesianPointList_type; }
Ifc4x3_rc2::IfcCartesianPointList::IfcCartesianPointList(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianPointList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianPointList::IfcCartesianPointList() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCartesianPointList_type);  }

// Function implementations for IfcCartesianPointList2D
std::vector< std::vector< double > > Ifc4x3_rc2::IfcCartesianPointList2D::CoordList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::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_rc2::IfcCartesianPointList2D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList2D::declaration() const { return *IFC4X3_RC2_IfcCartesianPointList2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList2D::Class() { return *IFC4X3_RC2_IfcCartesianPointList2D_type; }
Ifc4x3_rc2::IfcCartesianPointList2D::IfcCartesianPointList2D(IfcEntityInstanceData* e) : IfcCartesianPointList((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianPointList2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcCartesianPointList3D::CoordList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::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_rc2::IfcCartesianPointList3D::setTagList(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList3D::declaration() const { return *IFC4X3_RC2_IfcCartesianPointList3D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianPointList3D::Class() { return *IFC4X3_RC2_IfcCartesianPointList3D_type; }
Ifc4x3_rc2::IfcCartesianPointList3D::IfcCartesianPointList3D(IfcEntityInstanceData* e) : IfcCartesianPointList((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianPointList3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcCartesianTransformationOperator::Axis1() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcCartesianTransformationOperator::setAxis1(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcCartesianTransformationOperator::Axis2() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcCartesianTransformationOperator::setAxis2(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcCartesianTransformationOperator::LocalOrigin() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcCartesianTransformationOperator::setLocalOrigin(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcCartesianTransformationOperator::Scale() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCartesianTransformationOperator::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator::Class() { return *IFC4X3_RC2_IfcCartesianTransformationOperator_type; }
Ifc4x3_rc2::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianTransformationOperator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianTransformationOperator::IfcCartesianTransformationOperator(::Ifc4x3_rc2::IfcDirection* v1_Axis1, ::Ifc4x3_rc2::IfcDirection* v2_Axis2, ::Ifc4x3_rc2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianTransformationOperator2D::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator2D::Class() { return *IFC4X3_RC2_IfcCartesianTransformationOperator2D_type; }
Ifc4x3_rc2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianTransformationOperator2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianTransformationOperator2D::IfcCartesianTransformationOperator2D(::Ifc4x3_rc2::IfcDirection* v1_Axis1, ::Ifc4x3_rc2::IfcDirection* v2_Axis2, ::Ifc4x3_rc2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianTransformationOperator2DnonUniform::Scale2() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::Class() { return *IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type; }
Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianTransformationOperator2DnonUniform_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianTransformationOperator2DnonUniform::IfcCartesianTransformationOperator2DnonUniform(::Ifc4x3_rc2::IfcDirection* v1_Axis1, ::Ifc4x3_rc2::IfcDirection* v2_Axis2, ::Ifc4x3_rc2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, boost::optional< double > v5_Scale2) : IfcCartesianTransformationOperator2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcCartesianTransformationOperator3D::Axis3() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcCartesianTransformationOperator3D::setAxis3(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator3D::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator3D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator3D::Class() { return *IFC4X3_RC2_IfcCartesianTransformationOperator3D_type; }
Ifc4x3_rc2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianTransformationOperator3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianTransformationOperator3D::IfcCartesianTransformationOperator3D(::Ifc4x3_rc2::IfcDirection* v1_Axis1, ::Ifc4x3_rc2::IfcDirection* v2_Axis2, ::Ifc4x3_rc2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_rc2::IfcDirection* v5_Axis3) : IfcCartesianTransformationOperator((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianTransformationOperator3DnonUniform::Scale2() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::setScale2(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::Scale3() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::setScale3(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::declaration() const { return *IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::Class() { return *IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type; }
Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(IfcEntityInstanceData* e) : IfcCartesianTransformationOperator3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCartesianTransformationOperator3DnonUniform_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCartesianTransformationOperator3DnonUniform::IfcCartesianTransformationOperator3DnonUniform(::Ifc4x3_rc2::IfcDirection* v1_Axis1, ::Ifc4x3_rc2::IfcDirection* v2_Axis2, ::Ifc4x3_rc2::IfcCartesianPoint* v3_LocalOrigin, boost::optional< double > v4_Scale, ::Ifc4x3_rc2::IfcDirection* v5_Axis3, boost::optional< double > v6_Scale2, boost::optional< double > v7_Scale3) : IfcCartesianTransformationOperator3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCenterLineProfileDef::Thickness() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCenterLineProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCenterLineProfileDef::declaration() const { return *IFC4X3_RC2_IfcCenterLineProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCenterLineProfileDef::Class() { return *IFC4X3_RC2_IfcCenterLineProfileDef_type; }
Ifc4x3_rc2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(IfcEntityInstanceData* e) : IfcArbitraryOpenProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCenterLineProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCenterLineProfileDef::IfcCenterLineProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcBoundedCurve* v3_Curve, double v4_Thickness) : IfcArbitraryOpenProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCenterLineProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcChillerTypeEnum::Value > Ifc4x3_rc2::IfcChiller::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcChillerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcChiller::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcChillerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChillerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcChiller::declaration() const { return *IFC4X3_RC2_IfcChiller_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcChiller::Class() { return *IFC4X3_RC2_IfcChiller_type; }
Ifc4x3_rc2::IfcChiller::IfcChiller(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcChiller_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcChiller::IfcChiller(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcChillerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcChillerTypeEnum::Value Ifc4x3_rc2::IfcChillerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcChillerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcChillerType::setPredefinedType(::Ifc4x3_rc2::IfcChillerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcChillerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcChillerType::declaration() const { return *IFC4X3_RC2_IfcChillerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcChillerType::Class() { return *IFC4X3_RC2_IfcChillerType_type; }
Ifc4x3_rc2::IfcChillerType::IfcChillerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcChillerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcChillerType::IfcChillerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcChillerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcChillerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcChimney
boost::optional< ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value > Ifc4x3_rc2::IfcChimney::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcChimneyTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcChimney::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChimneyTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcChimney::declaration() const { return *IFC4X3_RC2_IfcChimney_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcChimney::Class() { return *IFC4X3_RC2_IfcChimney_type; }
Ifc4x3_rc2::IfcChimney::IfcChimney(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcChimney_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcChimney::IfcChimney(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcChimneyTypeEnum::Value Ifc4x3_rc2::IfcChimneyType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcChimneyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcChimneyType::setPredefinedType(::Ifc4x3_rc2::IfcChimneyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcChimneyTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcChimneyType::declaration() const { return *IFC4X3_RC2_IfcChimneyType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcChimneyType::Class() { return *IFC4X3_RC2_IfcChimneyType_type; }
Ifc4x3_rc2::IfcChimneyType::IfcChimneyType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcChimneyType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcChimneyType::IfcChimneyType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcChimneyTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcChimneyTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCircle
double Ifc4x3_rc2::IfcCircle::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCircle::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCircle::declaration() const { return *IFC4X3_RC2_IfcCircle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCircle::Class() { return *IFC4X3_RC2_IfcCircle_type; }
Ifc4x3_rc2::IfcCircle::IfcCircle(IfcEntityInstanceData* e) : IfcConic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCircle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCircle::IfcCircle(::Ifc4x3_rc2::IfcAxis2Placement* v1_Position, double v2_Radius) : IfcConic((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCircleHollowProfileDef::WallThickness() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcCircleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCircleHollowProfileDef::declaration() const { return *IFC4X3_RC2_IfcCircleHollowProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCircleHollowProfileDef::Class() { return *IFC4X3_RC2_IfcCircleHollowProfileDef_type; }
Ifc4x3_rc2::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(IfcEntityInstanceData* e) : IfcCircleProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCircleHollowProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCircleHollowProfileDef::IfcCircleHollowProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position, double v4_Radius, double v5_WallThickness) : IfcCircleProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCircleHollowProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcCircleProfileDef::Radius() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCircleProfileDef::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCircleProfileDef::declaration() const { return *IFC4X3_RC2_IfcCircleProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCircleProfileDef::Class() { return *IFC4X3_RC2_IfcCircleProfileDef_type; }
Ifc4x3_rc2::IfcCircleProfileDef::IfcCircleProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCircleProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCircleProfileDef::IfcCircleProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position, double v4_Radius) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCircleProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcCircularArcSegment2D::Radius() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCircularArcSegment2D::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
bool Ifc4x3_rc2::IfcCircularArcSegment2D::IsCCW() const {  bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcCircularArcSegment2D::setIsCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCircularArcSegment2D::declaration() const { return *IFC4X3_RC2_IfcCircularArcSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCircularArcSegment2D::Class() { return *IFC4X3_RC2_IfcCircularArcSegment2D_type; }
Ifc4x3_rc2::IfcCircularArcSegment2D::IfcCircularArcSegment2D(IfcEntityInstanceData* e) : IfcCurveSegment2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCircularArcSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCircularArcSegment2D::IfcCircularArcSegment2D(::Ifc4x3_rc2::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength, double v4_Radius, bool v5_IsCCW) : IfcCurveSegment2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCivilElement::declaration() const { return *IFC4X3_RC2_IfcCivilElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCivilElement::Class() { return *IFC4X3_RC2_IfcCivilElement_type; }
Ifc4x3_rc2::IfcCivilElement::IfcCivilElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCivilElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCivilElement::IfcCivilElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCivilElementType::declaration() const { return *IFC4X3_RC2_IfcCivilElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCivilElementType::Class() { return *IFC4X3_RC2_IfcCivilElementType_type; }
Ifc4x3_rc2::IfcCivilElementType::IfcCivilElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCivilElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCivilElementType::IfcCivilElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcClassification::Source() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcClassification::setSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Edition() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcClassification::setEdition(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcClassification::EditionDate() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcClassification::setEditionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
std::string Ifc4x3_rc2::IfcClassification::Name() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcClassification::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcClassification::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcClassification::Location() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcClassification::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcClassification::setReferenceTokens(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcClassification::declaration() const { return *IFC4X3_RC2_IfcClassification_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcClassification::Class() { return *IFC4X3_RC2_IfcClassification_type; }
Ifc4x3_rc2::IfcClassification::IfcClassification(IfcEntityInstanceData* e) : IfcExternalInformation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcClassification_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcClassificationReferenceSelect* Ifc4x3_rc2::IfcClassificationReference::ReferencedSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcClassificationReferenceSelect>(true); }
void Ifc4x3_rc2::IfcClassificationReference::setReferencedSource(::Ifc4x3_rc2::IfcClassificationReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcClassificationReference::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcClassificationReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcClassificationReference::Sort() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcClassificationReference::setSort(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcClassificationReference::declaration() const { return *IFC4X3_RC2_IfcClassificationReference_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcClassificationReference::Class() { return *IFC4X3_RC2_IfcClassificationReference_type; }
Ifc4x3_rc2::IfcClassificationReference::IfcClassificationReference(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcClassificationReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcClassificationReference::IfcClassificationReference(boost::optional< std::string > v1_Location, boost::optional< std::string > v2_Identification, boost::optional< std::string > v3_Name, ::Ifc4x3_rc2::IfcClassificationReferenceSelect* v4_ReferencedSource, boost::optional< std::string > v5_Description, boost::optional< std::string > v6_Sort) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcClosedShell::declaration() const { return *IFC4X3_RC2_IfcClosedShell_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcClosedShell::Class() { return *IFC4X3_RC2_IfcClosedShell_type; }
Ifc4x3_rc2::IfcClosedShell::IfcClosedShell(IfcEntityInstanceData* e) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcClosedShell_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcClosedShell::IfcClosedShell(aggregate_of< ::Ifc4x3_rc2::IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcClosedShell_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CfsFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcClothoid
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcClothoid::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcClothoid::setPosition(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcClothoid::ClothoidConstant() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcClothoid::setClothoidConstant(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcClothoid::declaration() const { return *IFC4X3_RC2_IfcClothoid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcClothoid::Class() { return *IFC4X3_RC2_IfcClothoid_type; }
Ifc4x3_rc2::IfcClothoid::IfcClothoid(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcClothoid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcClothoid::IfcClothoid(::Ifc4x3_rc2::IfcAxis2Placement* v1_Position, double v2_ClothoidConstant) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcClothoid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_ClothoidConstant));data_->setArgument(1,attr);} }

// Function implementations for IfcCoil
boost::optional< ::Ifc4x3_rc2::IfcCoilTypeEnum::Value > Ifc4x3_rc2::IfcCoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCoilTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCoil::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCoil::declaration() const { return *IFC4X3_RC2_IfcCoil_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoil::Class() { return *IFC4X3_RC2_IfcCoil_type; }
Ifc4x3_rc2::IfcCoil::IfcCoil(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoil_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCoil::IfcCoil(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCoilTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCoilTypeEnum::Value Ifc4x3_rc2::IfcCoilType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCoilTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCoilType::setPredefinedType(::Ifc4x3_rc2::IfcCoilTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCoilTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCoilType::declaration() const { return *IFC4X3_RC2_IfcCoilType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoilType::Class() { return *IFC4X3_RC2_IfcCoilType_type; }
Ifc4x3_rc2::IfcCoilType::IfcCoilType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoilType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCoilType::IfcCoilType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCoilTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCoilTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcColourRgb
double Ifc4x3_rc2::IfcColourRgb::Red() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcColourRgb::setRed(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcColourRgb::Green() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcColourRgb::setGreen(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcColourRgb::Blue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcColourRgb::setBlue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcColourRgb::declaration() const { return *IFC4X3_RC2_IfcColourRgb_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcColourRgb::Class() { return *IFC4X3_RC2_IfcColourRgb_type; }
Ifc4x3_rc2::IfcColourRgb::IfcColourRgb(IfcEntityInstanceData* e) : IfcColourSpecification((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcColourRgb_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcColourRgb::IfcColourRgb(boost::optional< std::string > v1_Name, double v2_Red, double v3_Green, double v4_Blue) : IfcColourSpecification((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcColourRgbList::ColourList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::IfcColourRgbList::declaration() const { return *IFC4X3_RC2_IfcColourRgbList_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcColourRgbList::Class() { return *IFC4X3_RC2_IfcColourRgbList_type; }
Ifc4x3_rc2::IfcColourRgbList::IfcColourRgbList(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcColourRgbList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcColourRgbList::IfcColourRgbList(std::vector< std::vector< double > > v1_ColourList) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcColourSpecification::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcColourSpecification::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcColourSpecification::declaration() const { return *IFC4X3_RC2_IfcColourSpecification_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcColourSpecification::Class() { return *IFC4X3_RC2_IfcColourSpecification_type; }
Ifc4x3_rc2::IfcColourSpecification::IfcColourSpecification(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcColourSpecification_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcColourSpecification::IfcColourSpecification(boost::optional< std::string > v1_Name) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcColumnTypeEnum::Value > Ifc4x3_rc2::IfcColumn::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcColumnTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcColumn::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcColumnTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcColumnTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcColumn::declaration() const { return *IFC4X3_RC2_IfcColumn_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcColumn::Class() { return *IFC4X3_RC2_IfcColumn_type; }
Ifc4x3_rc2::IfcColumn::IfcColumn(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcColumn_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcColumn::IfcColumn(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcColumnTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcColumnStandardCase::declaration() const { return *IFC4X3_RC2_IfcColumnStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcColumnStandardCase::Class() { return *IFC4X3_RC2_IfcColumnStandardCase_type; }
Ifc4x3_rc2::IfcColumnStandardCase::IfcColumnStandardCase(IfcEntityInstanceData* e) : IfcColumn((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcColumnStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcColumnStandardCase::IfcColumnStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcColumnTypeEnum::Value > v9_PredefinedType) : IfcColumn((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcColumnTypeEnum::Value Ifc4x3_rc2::IfcColumnType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcColumnTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcColumnType::setPredefinedType(::Ifc4x3_rc2::IfcColumnTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcColumnTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcColumnType::declaration() const { return *IFC4X3_RC2_IfcColumnType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcColumnType::Class() { return *IFC4X3_RC2_IfcColumnType_type; }
Ifc4x3_rc2::IfcColumnType::IfcColumnType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcColumnType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcColumnType::IfcColumnType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcColumnTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcColumnTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCommunicationsAppliance
boost::optional< ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value > Ifc4x3_rc2::IfcCommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCommunicationsAppliance::declaration() const { return *IFC4X3_RC2_IfcCommunicationsAppliance_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCommunicationsAppliance::Class() { return *IFC4X3_RC2_IfcCommunicationsAppliance_type; }
Ifc4x3_rc2::IfcCommunicationsAppliance::IfcCommunicationsAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCommunicationsAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCommunicationsAppliance::IfcCommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCommunicationsApplianceTypeEnum::Value Ifc4x3_rc2::IfcCommunicationsApplianceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCommunicationsApplianceType::setPredefinedType(::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCommunicationsApplianceType::declaration() const { return *IFC4X3_RC2_IfcCommunicationsApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCommunicationsApplianceType::Class() { return *IFC4X3_RC2_IfcCommunicationsApplianceType_type; }
Ifc4x3_rc2::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCommunicationsApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCommunicationsApplianceType::IfcCommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCommunicationsApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcComplexProperty
std::string Ifc4x3_rc2::IfcComplexProperty::UsageName() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcComplexProperty::setUsageName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr Ifc4x3_rc2::IfcComplexProperty::HasProperties() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcProperty >(); }
void Ifc4x3_rc2::IfcComplexProperty::setHasProperties(aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcComplexProperty::declaration() const { return *IFC4X3_RC2_IfcComplexProperty_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcComplexProperty::Class() { return *IFC4X3_RC2_IfcComplexProperty_type; }
Ifc4x3_rc2::IfcComplexProperty::IfcComplexProperty(IfcEntityInstanceData* e) : IfcProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcComplexProperty_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcComplexProperty::IfcComplexProperty(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_UsageName, aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v4_HasProperties) : IfcProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcComplexPropertyTemplate::UsageName() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcComplexPropertyTemplate::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Value > Ifc4x3_rc2::IfcComplexPropertyTemplate::TemplateType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcComplexPropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr > Ifc4x3_rc2::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_rc2::IfcPropertyTemplate >(); }
void Ifc4x3_rc2::IfcComplexPropertyTemplate::setHasPropertyTemplates(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcComplexPropertyTemplate::declaration() const { return *IFC4X3_RC2_IfcComplexPropertyTemplate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcComplexPropertyTemplate::Class() { return *IFC4X3_RC2_IfcComplexPropertyTemplate_type; }
Ifc4x3_rc2::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcComplexPropertyTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcComplexPropertyTemplate::IfcComplexPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_UsageName, boost::optional< ::Ifc4x3_rc2::IfcComplexPropertyTemplateTypeEnum::Value > v6_TemplateType, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr > v7_HasPropertyTemplates) : IfcPropertyTemplate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSegment >::ptr Ifc4x3_rc2::IfcCompositeCurve::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcSegment >(); }
void Ifc4x3_rc2::IfcCompositeCurve::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcCompositeCurve::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCompositeCurve::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCompositeCurve::declaration() const { return *IFC4X3_RC2_IfcCompositeCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCompositeCurve::Class() { return *IFC4X3_RC2_IfcCompositeCurve_type; }
Ifc4x3_rc2::IfcCompositeCurve::IfcCompositeCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCompositeCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCompositeCurve::IfcCompositeCurve(aggregate_of< ::Ifc4x3_rc2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCompositeCurveOnSurface::declaration() const { return *IFC4X3_RC2_IfcCompositeCurveOnSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCompositeCurveOnSurface::Class() { return *IFC4X3_RC2_IfcCompositeCurveOnSurface_type; }
Ifc4x3_rc2::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(IfcEntityInstanceData* e) : IfcCompositeCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCompositeCurveOnSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCompositeCurveOnSurface::IfcCompositeCurveOnSurface(aggregate_of< ::Ifc4x3_rc2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcCompositeCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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
bool Ifc4x3_rc2::IfcCompositeCurveSegment::SameSense() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCompositeCurveSegment::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcCompositeCurveSegment::ParentCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcCompositeCurveSegment::setParentCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcCompositeCurveSegment::declaration() const { return *IFC4X3_RC2_IfcCompositeCurveSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCompositeCurveSegment::Class() { return *IFC4X3_RC2_IfcCompositeCurveSegment_type; }
Ifc4x3_rc2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(IfcEntityInstanceData* e) : IfcSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCompositeCurveSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCompositeCurveSegment::IfcCompositeCurveSegment(::Ifc4x3_rc2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_rc2::IfcCurve* v3_ParentCurve) : IfcSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCompositeCurveSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Transition,::Ifc4x3_rc2::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_rc2::IfcProfileDef >::ptr Ifc4x3_rc2::IfcCompositeProfileDef::Profiles() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcProfileDef >(); }
void Ifc4x3_rc2::IfcCompositeProfileDef::setProfiles(aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCompositeProfileDef::Label() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCompositeProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCompositeProfileDef::declaration() const { return *IFC4X3_RC2_IfcCompositeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCompositeProfileDef::Class() { return *IFC4X3_RC2_IfcCompositeProfileDef_type; }
Ifc4x3_rc2::IfcCompositeProfileDef::IfcCompositeProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCompositeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCompositeProfileDef::IfcCompositeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v3_Profiles, boost::optional< std::string > v4_Label) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCompositeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcCompressorTypeEnum::Value > Ifc4x3_rc2::IfcCompressor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCompressorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCompressor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCompressorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCompressorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCompressor::declaration() const { return *IFC4X3_RC2_IfcCompressor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCompressor::Class() { return *IFC4X3_RC2_IfcCompressor_type; }
Ifc4x3_rc2::IfcCompressor::IfcCompressor(IfcEntityInstanceData* e) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCompressor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCompressor::IfcCompressor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCompressorTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCompressorTypeEnum::Value Ifc4x3_rc2::IfcCompressorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCompressorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCompressorType::setPredefinedType(::Ifc4x3_rc2::IfcCompressorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCompressorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCompressorType::declaration() const { return *IFC4X3_RC2_IfcCompressorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCompressorType::Class() { return *IFC4X3_RC2_IfcCompressorType_type; }
Ifc4x3_rc2::IfcCompressorType::IfcCompressorType(IfcEntityInstanceData* e) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCompressorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCompressorType::IfcCompressorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCompressorTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCompressorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCondenser
boost::optional< ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value > Ifc4x3_rc2::IfcCondenser::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCondenserTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCondenser::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCondenserTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCondenser::declaration() const { return *IFC4X3_RC2_IfcCondenser_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCondenser::Class() { return *IFC4X3_RC2_IfcCondenser_type; }
Ifc4x3_rc2::IfcCondenser::IfcCondenser(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCondenser_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCondenser::IfcCondenser(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCondenserTypeEnum::Value Ifc4x3_rc2::IfcCondenserType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCondenserTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCondenserType::setPredefinedType(::Ifc4x3_rc2::IfcCondenserTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCondenserTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCondenserType::declaration() const { return *IFC4X3_RC2_IfcCondenserType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCondenserType::Class() { return *IFC4X3_RC2_IfcCondenserType_type; }
Ifc4x3_rc2::IfcCondenserType::IfcCondenserType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCondenserType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCondenserType::IfcCondenserType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCondenserTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCondenserTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcConic
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcConic::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcConic::setPosition(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConic::declaration() const { return *IFC4X3_RC2_IfcConic_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConic::Class() { return *IFC4X3_RC2_IfcConic_type; }
Ifc4x3_rc2::IfcConic::IfcConic(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConic_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConic::IfcConic(::Ifc4x3_rc2::IfcAxis2Placement* v1_Position) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConic_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcConnectedFaceSet
aggregate_of< ::Ifc4x3_rc2::IfcFace >::ptr Ifc4x3_rc2::IfcConnectedFaceSet::CfsFaces() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcFace >(); }
void Ifc4x3_rc2::IfcConnectedFaceSet::setCfsFaces(aggregate_of< ::Ifc4x3_rc2::IfcFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConnectedFaceSet::declaration() const { return *IFC4X3_RC2_IfcConnectedFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectedFaceSet::Class() { return *IFC4X3_RC2_IfcConnectedFaceSet_type; }
Ifc4x3_rc2::IfcConnectedFaceSet::IfcConnectedFaceSet(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectedFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectedFaceSet::IfcConnectedFaceSet(aggregate_of< ::Ifc4x3_rc2::IfcFace >::ptr v1_CfsFaces) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConnectedFaceSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CfsFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcConnectionCurveGeometry
::Ifc4x3_rc2::IfcCurveOrEdgeCurve* Ifc4x3_rc2::IfcConnectionCurveGeometry::CurveOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurveOrEdgeCurve>(true); }
void Ifc4x3_rc2::IfcConnectionCurveGeometry::setCurveOnRelatingElement(::Ifc4x3_rc2::IfcCurveOrEdgeCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCurveOrEdgeCurve* Ifc4x3_rc2::IfcConnectionCurveGeometry::CurveOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurveOrEdgeCurve>(true); }
void Ifc4x3_rc2::IfcConnectionCurveGeometry::setCurveOnRelatedElement(::Ifc4x3_rc2::IfcCurveOrEdgeCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConnectionCurveGeometry::declaration() const { return *IFC4X3_RC2_IfcConnectionCurveGeometry_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectionCurveGeometry::Class() { return *IFC4X3_RC2_IfcConnectionCurveGeometry_type; }
Ifc4x3_rc2::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectionCurveGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectionCurveGeometry::IfcConnectionCurveGeometry(::Ifc4x3_rc2::IfcCurveOrEdgeCurve* v1_CurveOnRelatingElement, ::Ifc4x3_rc2::IfcCurveOrEdgeCurve* v2_CurveOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConnectionGeometry::declaration() const { return *IFC4X3_RC2_IfcConnectionGeometry_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectionGeometry::Class() { return *IFC4X3_RC2_IfcConnectionGeometry_type; }
Ifc4x3_rc2::IfcConnectionGeometry::IfcConnectionGeometry(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectionGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectionGeometry::IfcConnectionGeometry() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcConnectionGeometry_type);  }

// Function implementations for IfcConnectionPointEccentricity
boost::optional< double > Ifc4x3_rc2::IfcConnectionPointEccentricity::EccentricityInX() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcConnectionPointEccentricity::EccentricityInY() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcConnectionPointEccentricity::EccentricityInZ() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcConnectionPointEccentricity::setEccentricityInZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConnectionPointEccentricity::declaration() const { return *IFC4X3_RC2_IfcConnectionPointEccentricity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectionPointEccentricity::Class() { return *IFC4X3_RC2_IfcConnectionPointEccentricity_type; }
Ifc4x3_rc2::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(IfcEntityInstanceData* e) : IfcConnectionPointGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectionPointEccentricity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectionPointEccentricity::IfcConnectionPointEccentricity(::Ifc4x3_rc2::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcPointOrVertexPoint* Ifc4x3_rc2::IfcConnectionPointGeometry::PointOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPointOrVertexPoint>(true); }
void Ifc4x3_rc2::IfcConnectionPointGeometry::setPointOnRelatingElement(::Ifc4x3_rc2::IfcPointOrVertexPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcPointOrVertexPoint* Ifc4x3_rc2::IfcConnectionPointGeometry::PointOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcPointOrVertexPoint>(true); }
void Ifc4x3_rc2::IfcConnectionPointGeometry::setPointOnRelatedElement(::Ifc4x3_rc2::IfcPointOrVertexPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConnectionPointGeometry::declaration() const { return *IFC4X3_RC2_IfcConnectionPointGeometry_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectionPointGeometry::Class() { return *IFC4X3_RC2_IfcConnectionPointGeometry_type; }
Ifc4x3_rc2::IfcConnectionPointGeometry::IfcConnectionPointGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectionPointGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectionPointGeometry::IfcConnectionPointGeometry(::Ifc4x3_rc2::IfcPointOrVertexPoint* v1_PointOnRelatingElement, ::Ifc4x3_rc2::IfcPointOrVertexPoint* v2_PointOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurfaceOrFaceSurface* Ifc4x3_rc2::IfcConnectionSurfaceGeometry::SurfaceOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSurfaceOrFaceSurface>(true); }
void Ifc4x3_rc2::IfcConnectionSurfaceGeometry::setSurfaceOnRelatingElement(::Ifc4x3_rc2::IfcSurfaceOrFaceSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcSurfaceOrFaceSurface* Ifc4x3_rc2::IfcConnectionSurfaceGeometry::SurfaceOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcSurfaceOrFaceSurface>(true); }
void Ifc4x3_rc2::IfcConnectionSurfaceGeometry::setSurfaceOnRelatedElement(::Ifc4x3_rc2::IfcSurfaceOrFaceSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConnectionSurfaceGeometry::declaration() const { return *IFC4X3_RC2_IfcConnectionSurfaceGeometry_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectionSurfaceGeometry::Class() { return *IFC4X3_RC2_IfcConnectionSurfaceGeometry_type; }
Ifc4x3_rc2::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectionSurfaceGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectionSurfaceGeometry::IfcConnectionSurfaceGeometry(::Ifc4x3_rc2::IfcSurfaceOrFaceSurface* v1_SurfaceOnRelatingElement, ::Ifc4x3_rc2::IfcSurfaceOrFaceSurface* v2_SurfaceOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSolidOrShell* Ifc4x3_rc2::IfcConnectionVolumeGeometry::VolumeOnRelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSolidOrShell>(true); }
void Ifc4x3_rc2::IfcConnectionVolumeGeometry::setVolumeOnRelatingElement(::Ifc4x3_rc2::IfcSolidOrShell* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcSolidOrShell* Ifc4x3_rc2::IfcConnectionVolumeGeometry::VolumeOnRelatedElement() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcSolidOrShell>(true); }
void Ifc4x3_rc2::IfcConnectionVolumeGeometry::setVolumeOnRelatedElement(::Ifc4x3_rc2::IfcSolidOrShell* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConnectionVolumeGeometry::declaration() const { return *IFC4X3_RC2_IfcConnectionVolumeGeometry_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConnectionVolumeGeometry::Class() { return *IFC4X3_RC2_IfcConnectionVolumeGeometry_type; }
Ifc4x3_rc2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(IfcEntityInstanceData* e) : IfcConnectionGeometry((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConnectionVolumeGeometry_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConnectionVolumeGeometry::IfcConnectionVolumeGeometry(::Ifc4x3_rc2::IfcSolidOrShell* v1_VolumeOnRelatingElement, ::Ifc4x3_rc2::IfcSolidOrShell* v2_VolumeOnRelatedElement) : IfcConnectionGeometry((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConstraint::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcConstraint::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcConstraint::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcConstraintEnum::Value Ifc4x3_rc2::IfcConstraint::ConstraintGrade() const {  return ::Ifc4x3_rc2::IfcConstraintEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcConstraint::setConstraintGrade(::Ifc4x3_rc2::IfcConstraintEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConstraintEnum::ToString(v)));data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::ConstraintSource() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcConstraint::setConstraintSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcConstraint::CreatingActor() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcConstraint::setCreatingActor(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::CreationTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcConstraint::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcConstraint::UserDefinedGrade() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcConstraint::setUserDefinedGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }

::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcConstraint::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc2::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc2::IfcConstraint::PropertiesForConstraint() const { return data_->getInverse(IFC4X3_RC2_IfcResourceConstraintRelationship_type, 2)->as<IfcResourceConstraintRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcConstraint::declaration() const { return *IFC4X3_RC2_IfcConstraint_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstraint::Class() { return *IFC4X3_RC2_IfcConstraint_type; }
Ifc4x3_rc2::IfcConstraint::IfcConstraint(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstraint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstraint::IfcConstraint(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_rc2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionEquipmentResourceTypeEnum::Value > Ifc4x3_rc2::IfcConstructionEquipmentResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcConstructionEquipmentResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionEquipmentResource::declaration() const { return *IFC4X3_RC2_IfcConstructionEquipmentResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionEquipmentResource::Class() { return *IFC4X3_RC2_IfcConstructionEquipmentResource_type; }
Ifc4x3_rc2::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionEquipmentResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionEquipmentResource::IfcConstructionEquipmentResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionEquipmentResourceTypeEnum::Value Ifc4x3_rc2::IfcConstructionEquipmentResourceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcConstructionEquipmentResourceType::setPredefinedType(::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionEquipmentResourceType::declaration() const { return *IFC4X3_RC2_IfcConstructionEquipmentResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionEquipmentResourceType::Class() { return *IFC4X3_RC2_IfcConstructionEquipmentResourceType_type; }
Ifc4x3_rc2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionEquipmentResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionEquipmentResourceType::IfcConstructionEquipmentResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc2::IfcConstructionEquipmentResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConstructionEquipmentResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcConstructionMaterialResource
boost::optional< ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value > Ifc4x3_rc2::IfcConstructionMaterialResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcConstructionMaterialResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionMaterialResource::declaration() const { return *IFC4X3_RC2_IfcConstructionMaterialResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionMaterialResource::Class() { return *IFC4X3_RC2_IfcConstructionMaterialResource_type; }
Ifc4x3_rc2::IfcConstructionMaterialResource::IfcConstructionMaterialResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionMaterialResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionMaterialResource::IfcConstructionMaterialResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionMaterialResourceTypeEnum::Value Ifc4x3_rc2::IfcConstructionMaterialResourceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcConstructionMaterialResourceType::setPredefinedType(::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionMaterialResourceType::declaration() const { return *IFC4X3_RC2_IfcConstructionMaterialResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionMaterialResourceType::Class() { return *IFC4X3_RC2_IfcConstructionMaterialResourceType_type; }
Ifc4x3_rc2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionMaterialResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionMaterialResourceType::IfcConstructionMaterialResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc2::IfcConstructionMaterialResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConstructionMaterialResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcConstructionProductResource
boost::optional< ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value > Ifc4x3_rc2::IfcConstructionProductResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcConstructionProductResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionProductResource::declaration() const { return *IFC4X3_RC2_IfcConstructionProductResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionProductResource::Class() { return *IFC4X3_RC2_IfcConstructionProductResource_type; }
Ifc4x3_rc2::IfcConstructionProductResource::IfcConstructionProductResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionProductResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionProductResource::IfcConstructionProductResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConstructionProductResourceTypeEnum::Value Ifc4x3_rc2::IfcConstructionProductResourceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcConstructionProductResourceType::setPredefinedType(::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionProductResourceType::declaration() const { return *IFC4X3_RC2_IfcConstructionProductResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionProductResourceType::Class() { return *IFC4X3_RC2_IfcConstructionProductResourceType_type; }
Ifc4x3_rc2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionProductResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionProductResourceType::IfcConstructionProductResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc2::IfcConstructionProductResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConstructionProductResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcConstructionResource
::Ifc4x3_rc2::IfcResourceTime* Ifc4x3_rc2::IfcConstructionResource::Usage() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcResourceTime>(true); }
void Ifc4x3_rc2::IfcConstructionResource::setUsage(::Ifc4x3_rc2::IfcResourceTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > Ifc4x3_rc2::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_rc2::IfcAppliedValue >(); }
void Ifc4x3_rc2::IfcConstructionResource::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcPhysicalQuantity* Ifc4x3_rc2::IfcConstructionResource::BaseQuantity() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcPhysicalQuantity>(true); }
void Ifc4x3_rc2::IfcConstructionResource::setBaseQuantity(::Ifc4x3_rc2::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionResource::declaration() const { return *IFC4X3_RC2_IfcConstructionResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionResource::Class() { return *IFC4X3_RC2_IfcConstructionResource_type; }
Ifc4x3_rc2::IfcConstructionResource::IfcConstructionResource(IfcEntityInstanceData* e) : IfcResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionResource::IfcConstructionResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity) : IfcResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAppliedValue >::ptr > Ifc4x3_rc2::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_rc2::IfcAppliedValue >(); }
void Ifc4x3_rc2::IfcConstructionResourceType::setBaseCosts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcPhysicalQuantity* Ifc4x3_rc2::IfcConstructionResourceType::BaseQuantity() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcPhysicalQuantity>(true); }
void Ifc4x3_rc2::IfcConstructionResourceType::setBaseQuantity(::Ifc4x3_rc2::IfcPhysicalQuantity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConstructionResourceType::declaration() const { return *IFC4X3_RC2_IfcConstructionResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConstructionResourceType::Class() { return *IFC4X3_RC2_IfcConstructionResourceType_type; }
Ifc4x3_rc2::IfcConstructionResourceType::IfcConstructionResourceType(IfcEntityInstanceData* e) : IfcTypeResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConstructionResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConstructionResourceType::IfcConstructionResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity) : IfcTypeResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcContext::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcContext::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcContext::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcContext::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcContext::Phase() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcContext::setPhase(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationContext >::ptr > Ifc4x3_rc2::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_rc2::IfcRepresentationContext >(); }
void Ifc4x3_rc2::IfcContext::setRepresentationContexts(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationContext >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcUnitAssignment* Ifc4x3_rc2::IfcContext::UnitsInContext() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcUnitAssignment>(true); }
void Ifc4x3_rc2::IfcContext::setUnitsInContext(::Ifc4x3_rc2::IfcUnitAssignment* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelDefinesByProperties::list::ptr Ifc4x3_rc2::IfcContext::IsDefinedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByProperties_type, 4)->as<IfcRelDefinesByProperties>(); }
::Ifc4x3_rc2::IfcRelDeclares::list::ptr Ifc4x3_rc2::IfcContext::Declares() const { return data_->getInverse(IFC4X3_RC2_IfcRelDeclares_type, 4)->as<IfcRelDeclares>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcContext::declaration() const { return *IFC4X3_RC2_IfcContext_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcContext::Class() { return *IFC4X3_RC2_IfcContext_type; }
Ifc4x3_rc2::IfcContext::IfcContext(IfcEntityInstanceData* e) : IfcObjectDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcContext::IfcContext(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_rc2::IfcUnitAssignment* v9_UnitsInContext) : IfcObjectDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcContextDependentUnit::Name() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcContextDependentUnit::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcContextDependentUnit::declaration() const { return *IFC4X3_RC2_IfcContextDependentUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcContextDependentUnit::Class() { return *IFC4X3_RC2_IfcContextDependentUnit_type; }
Ifc4x3_rc2::IfcContextDependentUnit::IfcContextDependentUnit(IfcEntityInstanceData* e) : IfcNamedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcContextDependentUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcContextDependentUnit::IfcContextDependentUnit(::Ifc4x3_rc2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name) : IfcNamedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcControl::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcControl::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }

::Ifc4x3_rc2::IfcRelAssignsToControl::list::ptr Ifc4x3_rc2::IfcControl::Controls() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToControl_type, 6)->as<IfcRelAssignsToControl>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcControl::declaration() const { return *IFC4X3_RC2_IfcControl_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcControl::Class() { return *IFC4X3_RC2_IfcControl_type; }
Ifc4x3_rc2::IfcControl::IfcControl(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcControl::IfcControl(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcControllerTypeEnum::Value > Ifc4x3_rc2::IfcController::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcControllerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcController::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcControllerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcControllerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcController::declaration() const { return *IFC4X3_RC2_IfcController_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcController::Class() { return *IFC4X3_RC2_IfcController_type; }
Ifc4x3_rc2::IfcController::IfcController(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcController_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcController::IfcController(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcControllerTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcControllerTypeEnum::Value Ifc4x3_rc2::IfcControllerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcControllerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcControllerType::setPredefinedType(::Ifc4x3_rc2::IfcControllerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcControllerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcControllerType::declaration() const { return *IFC4X3_RC2_IfcControllerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcControllerType::Class() { return *IFC4X3_RC2_IfcControllerType_type; }
Ifc4x3_rc2::IfcControllerType::IfcControllerType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcControllerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcControllerType::IfcControllerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcControllerTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcControllerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcConversionBasedUnit
std::string Ifc4x3_rc2::IfcConversionBasedUnit::Name() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcConversionBasedUnit::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcMeasureWithUnit* Ifc4x3_rc2::IfcConversionBasedUnit::ConversionFactor() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMeasureWithUnit>(true); }
void Ifc4x3_rc2::IfcConversionBasedUnit::setConversionFactor(::Ifc4x3_rc2::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcConversionBasedUnit::declaration() const { return *IFC4X3_RC2_IfcConversionBasedUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConversionBasedUnit::Class() { return *IFC4X3_RC2_IfcConversionBasedUnit_type; }
Ifc4x3_rc2::IfcConversionBasedUnit::IfcConversionBasedUnit(IfcEntityInstanceData* e) : IfcNamedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConversionBasedUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConversionBasedUnit::IfcConversionBasedUnit(::Ifc4x3_rc2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_rc2::IfcMeasureWithUnit* v4_ConversionFactor) : IfcNamedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConversionBasedUnitWithOffset::ConversionOffset() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcConversionBasedUnitWithOffset::setConversionOffset(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConversionBasedUnitWithOffset::declaration() const { return *IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConversionBasedUnitWithOffset::Class() { return *IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type; }
Ifc4x3_rc2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(IfcEntityInstanceData* e) : IfcConversionBasedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConversionBasedUnitWithOffset_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConversionBasedUnitWithOffset::IfcConversionBasedUnitWithOffset(::Ifc4x3_rc2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc2::IfcUnitEnum::Value v2_UnitType, std::string v3_Name, ::Ifc4x3_rc2::IfcMeasureWithUnit* v4_ConversionFactor, double v5_ConversionOffset) : IfcConversionBasedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConveyorSegmentTypeEnum::Value > Ifc4x3_rc2::IfcConveyorSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcConveyorSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConveyorSegment::declaration() const { return *IFC4X3_RC2_IfcConveyorSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConveyorSegment::Class() { return *IFC4X3_RC2_IfcConveyorSegment_type; }
Ifc4x3_rc2::IfcConveyorSegment::IfcConveyorSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConveyorSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConveyorSegment::IfcConveyorSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcConveyorSegmentTypeEnum::Value Ifc4x3_rc2::IfcConveyorSegmentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcConveyorSegmentType::setPredefinedType(::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcConveyorSegmentType::declaration() const { return *IFC4X3_RC2_IfcConveyorSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcConveyorSegmentType::Class() { return *IFC4X3_RC2_IfcConveyorSegmentType_type; }
Ifc4x3_rc2::IfcConveyorSegmentType::IfcConveyorSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcConveyorSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcConveyorSegmentType::IfcConveyorSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcConveyorSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConveyorSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCooledBeam
boost::optional< ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value > Ifc4x3_rc2::IfcCooledBeam::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCooledBeam::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCooledBeamTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCooledBeam::declaration() const { return *IFC4X3_RC2_IfcCooledBeam_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCooledBeam::Class() { return *IFC4X3_RC2_IfcCooledBeam_type; }
Ifc4x3_rc2::IfcCooledBeam::IfcCooledBeam(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCooledBeam_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCooledBeam::IfcCooledBeam(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCooledBeamTypeEnum::Value Ifc4x3_rc2::IfcCooledBeamType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCooledBeamType::setPredefinedType(::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCooledBeamTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCooledBeamType::declaration() const { return *IFC4X3_RC2_IfcCooledBeamType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCooledBeamType::Class() { return *IFC4X3_RC2_IfcCooledBeamType_type; }
Ifc4x3_rc2::IfcCooledBeamType::IfcCooledBeamType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCooledBeamType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCooledBeamType::IfcCooledBeamType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCooledBeamTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCooledBeamTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCoolingTower
boost::optional< ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value > Ifc4x3_rc2::IfcCoolingTower::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCoolingTower::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCoolingTower::declaration() const { return *IFC4X3_RC2_IfcCoolingTower_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoolingTower::Class() { return *IFC4X3_RC2_IfcCoolingTower_type; }
Ifc4x3_rc2::IfcCoolingTower::IfcCoolingTower(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoolingTower_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCoolingTower::IfcCoolingTower(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCoolingTowerTypeEnum::Value Ifc4x3_rc2::IfcCoolingTowerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCoolingTowerType::setPredefinedType(::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCoolingTowerType::declaration() const { return *IFC4X3_RC2_IfcCoolingTowerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoolingTowerType::Class() { return *IFC4X3_RC2_IfcCoolingTowerType_type; }
Ifc4x3_rc2::IfcCoolingTowerType::IfcCoolingTowerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoolingTowerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCoolingTowerType::IfcCoolingTowerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCoolingTowerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCoolingTowerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCoordinateOperation
::Ifc4x3_rc2::IfcCoordinateReferenceSystemSelect* Ifc4x3_rc2::IfcCoordinateOperation::SourceCRS() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCoordinateReferenceSystemSelect>(true); }
void Ifc4x3_rc2::IfcCoordinateOperation::setSourceCRS(::Ifc4x3_rc2::IfcCoordinateReferenceSystemSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCoordinateReferenceSystem* Ifc4x3_rc2::IfcCoordinateOperation::TargetCRS() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCoordinateReferenceSystem>(true); }
void Ifc4x3_rc2::IfcCoordinateOperation::setTargetCRS(::Ifc4x3_rc2::IfcCoordinateReferenceSystem* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCoordinateOperation::declaration() const { return *IFC4X3_RC2_IfcCoordinateOperation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoordinateOperation::Class() { return *IFC4X3_RC2_IfcCoordinateOperation_type; }
Ifc4x3_rc2::IfcCoordinateOperation::IfcCoordinateOperation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoordinateOperation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCoordinateOperation::IfcCoordinateOperation(::Ifc4x3_rc2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_rc2::IfcCoordinateReferenceSystem* v2_TargetCRS) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCoordinateReferenceSystem::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCoordinateReferenceSystem::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCoordinateReferenceSystem::GeodeticDatum() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setGeodeticDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCoordinateReferenceSystem::VerticalDatum() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcCoordinateReferenceSystem::setVerticalDatum(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }

::Ifc4x3_rc2::IfcCoordinateOperation::list::ptr Ifc4x3_rc2::IfcCoordinateReferenceSystem::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC2_IfcCoordinateOperation_type, 0)->as<IfcCoordinateOperation>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcCoordinateReferenceSystem::declaration() const { return *IFC4X3_RC2_IfcCoordinateReferenceSystem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoordinateReferenceSystem::Class() { return *IFC4X3_RC2_IfcCoordinateReferenceSystem_type; }
Ifc4x3_rc2::IfcCoordinateReferenceSystem::IfcCoordinateReferenceSystem(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoordinateReferenceSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcCostItemTypeEnum::Value > Ifc4x3_rc2::IfcCostItem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCostItemTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcCostItem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCostItemTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCostItemTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCostValue >::ptr > Ifc4x3_rc2::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_rc2::IfcCostValue >(); }
void Ifc4x3_rc2::IfcCostItem::setCostValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCostValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr > Ifc4x3_rc2::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_rc2::IfcPhysicalQuantity >(); }
void Ifc4x3_rc2::IfcCostItem::setCostQuantities(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCostItem::declaration() const { return *IFC4X3_RC2_IfcCostItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCostItem::Class() { return *IFC4X3_RC2_IfcCostItem_type; }
Ifc4x3_rc2::IfcCostItem::IfcCostItem(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCostItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCostItem::IfcCostItem(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcCostItemTypeEnum::Value > v7_PredefinedType, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcCostValue >::ptr > v8_CostValues, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr > v9_CostQuantities) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCostScheduleTypeEnum::Value > Ifc4x3_rc2::IfcCostSchedule::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcCostSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCostScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCostScheduleTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCostSchedule::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcCostSchedule::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCostSchedule::SubmittedOn() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcCostSchedule::setSubmittedOn(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCostSchedule::UpdateDate() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcCostSchedule::setUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCostSchedule::declaration() const { return *IFC4X3_RC2_IfcCostSchedule_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCostSchedule::Class() { return *IFC4X3_RC2_IfcCostSchedule_type; }
Ifc4x3_rc2::IfcCostSchedule::IfcCostSchedule(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCostSchedule_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCostSchedule::IfcCostSchedule(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_RC2_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_rc2::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_rc2::IfcCostValue::declaration() const { return *IFC4X3_RC2_IfcCostValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCostValue::Class() { return *IFC4X3_RC2_IfcCostValue_type; }
Ifc4x3_rc2::IfcCostValue::IfcCostValue(IfcEntityInstanceData* e) : IfcAppliedValue((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCostValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCostValue::IfcCostValue(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcAppliedValueSelect* v3_AppliedValue, ::Ifc4x3_rc2::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_rc2::IfcArithmeticOperatorEnum::Value > v9_ArithmeticOperator, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v10_Components) : IfcAppliedValue((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCourseTypeEnum::Value > Ifc4x3_rc2::IfcCourse::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCourseTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCourse::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCourseTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCourseTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCourse::declaration() const { return *IFC4X3_RC2_IfcCourse_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCourse::Class() { return *IFC4X3_RC2_IfcCourse_type; }
Ifc4x3_rc2::IfcCourse::IfcCourse(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCourse_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCourse::IfcCourse(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCourseTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCourseTypeEnum::Value Ifc4x3_rc2::IfcCourseType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCourseTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCourseType::setPredefinedType(::Ifc4x3_rc2::IfcCourseTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCourseTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCourseType::declaration() const { return *IFC4X3_RC2_IfcCourseType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCourseType::Class() { return *IFC4X3_RC2_IfcCourseType_type; }
Ifc4x3_rc2::IfcCourseType::IfcCourseType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCourseType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCourseType::IfcCourseType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCourseTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCourseTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCovering
boost::optional< ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value > Ifc4x3_rc2::IfcCovering::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCoveringTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCovering::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCoveringTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelCoversSpaces::list::ptr Ifc4x3_rc2::IfcCovering::CoversSpaces() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversSpaces_type, 5)->as<IfcRelCoversSpaces>(); }
::Ifc4x3_rc2::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc2::IfcCovering::CoversElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversBldgElements_type, 5)->as<IfcRelCoversBldgElements>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcCovering::declaration() const { return *IFC4X3_RC2_IfcCovering_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCovering::Class() { return *IFC4X3_RC2_IfcCovering_type; }
Ifc4x3_rc2::IfcCovering::IfcCovering(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCovering_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCovering::IfcCovering(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCoveringTypeEnum::Value Ifc4x3_rc2::IfcCoveringType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCoveringTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCoveringType::setPredefinedType(::Ifc4x3_rc2::IfcCoveringTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCoveringTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCoveringType::declaration() const { return *IFC4X3_RC2_IfcCoveringType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCoveringType::Class() { return *IFC4X3_RC2_IfcCoveringType_type; }
Ifc4x3_rc2::IfcCoveringType::IfcCoveringType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCoveringType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCoveringType::IfcCoveringType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCoveringTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCoveringTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCrewResource
boost::optional< ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value > Ifc4x3_rc2::IfcCrewResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcCrewResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCrewResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCrewResource::declaration() const { return *IFC4X3_RC2_IfcCrewResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCrewResource::Class() { return *IFC4X3_RC2_IfcCrewResource_type; }
Ifc4x3_rc2::IfcCrewResource::IfcCrewResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCrewResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCrewResource::IfcCrewResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCrewResourceTypeEnum::Value Ifc4x3_rc2::IfcCrewResourceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcCrewResourceType::setPredefinedType(::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCrewResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCrewResourceType::declaration() const { return *IFC4X3_RC2_IfcCrewResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCrewResourceType::Class() { return *IFC4X3_RC2_IfcCrewResourceType_type; }
Ifc4x3_rc2::IfcCrewResourceType::IfcCrewResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCrewResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCrewResourceType::IfcCrewResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc2::IfcCrewResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCrewResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcCsgPrimitive3D
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcCsgPrimitive3D::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcCsgPrimitive3D::setPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCsgPrimitive3D::declaration() const { return *IFC4X3_RC2_IfcCsgPrimitive3D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCsgPrimitive3D::Class() { return *IFC4X3_RC2_IfcCsgPrimitive3D_type; }
Ifc4x3_rc2::IfcCsgPrimitive3D::IfcCsgPrimitive3D(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCsgPrimitive3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCsgPrimitive3D::IfcCsgPrimitive3D(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCsgPrimitive3D_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcCsgSolid
::Ifc4x3_rc2::IfcCsgSelect* Ifc4x3_rc2::IfcCsgSolid::TreeRootExpression() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCsgSelect>(true); }
void Ifc4x3_rc2::IfcCsgSolid::setTreeRootExpression(::Ifc4x3_rc2::IfcCsgSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCsgSolid::declaration() const { return *IFC4X3_RC2_IfcCsgSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCsgSolid::Class() { return *IFC4X3_RC2_IfcCsgSolid_type; }
Ifc4x3_rc2::IfcCsgSolid::IfcCsgSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCsgSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCsgSolid::IfcCsgSolid(::Ifc4x3_rc2::IfcCsgSelect* v1_TreeRootExpression) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCsgSolid_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TreeRootExpression));data_->setArgument(0,attr);} }

// Function implementations for IfcCurrencyRelationship
::Ifc4x3_rc2::IfcMonetaryUnit* Ifc4x3_rc2::IfcCurrencyRelationship::RelatingMonetaryUnit() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcMonetaryUnit>(true); }
void Ifc4x3_rc2::IfcCurrencyRelationship::setRelatingMonetaryUnit(::Ifc4x3_rc2::IfcMonetaryUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcMonetaryUnit* Ifc4x3_rc2::IfcCurrencyRelationship::RelatedMonetaryUnit() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMonetaryUnit>(true); }
void Ifc4x3_rc2::IfcCurrencyRelationship::setRelatedMonetaryUnit(::Ifc4x3_rc2::IfcMonetaryUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcCurrencyRelationship::ExchangeRate() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcCurrencyRelationship::setExchangeRate(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcCurrencyRelationship::RateDateTime() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcCurrencyRelationship::setRateDateTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcLibraryInformation* Ifc4x3_rc2::IfcCurrencyRelationship::RateSource() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcLibraryInformation>(true); }
void Ifc4x3_rc2::IfcCurrencyRelationship::setRateSource(::Ifc4x3_rc2::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurrencyRelationship::declaration() const { return *IFC4X3_RC2_IfcCurrencyRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurrencyRelationship::Class() { return *IFC4X3_RC2_IfcCurrencyRelationship_type; }
Ifc4x3_rc2::IfcCurrencyRelationship::IfcCurrencyRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurrencyRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurrencyRelationship::IfcCurrencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcMonetaryUnit* v3_RelatingMonetaryUnit, ::Ifc4x3_rc2::IfcMonetaryUnit* v4_RelatedMonetaryUnit, double v5_ExchangeRate, boost::optional< std::string > v6_RateDateTime, ::Ifc4x3_rc2::IfcLibraryInformation* v7_RateSource) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurtainWallTypeEnum::Value > Ifc4x3_rc2::IfcCurtainWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcCurtainWall::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCurtainWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurtainWall::declaration() const { return *IFC4X3_RC2_IfcCurtainWall_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurtainWall::Class() { return *IFC4X3_RC2_IfcCurtainWall_type; }
Ifc4x3_rc2::IfcCurtainWall::IfcCurtainWall(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurtainWall_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurtainWall::IfcCurtainWall(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCurtainWallTypeEnum::Value Ifc4x3_rc2::IfcCurtainWallType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcCurtainWallType::setPredefinedType(::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcCurtainWallTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurtainWallType::declaration() const { return *IFC4X3_RC2_IfcCurtainWallType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurtainWallType::Class() { return *IFC4X3_RC2_IfcCurtainWallType_type; }
Ifc4x3_rc2::IfcCurtainWallType::IfcCurtainWallType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurtainWallType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurtainWallType::IfcCurtainWallType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcCurtainWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurtainWallTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcCurve


const IfcParse::entity& Ifc4x3_rc2::IfcCurve::declaration() const { return *IFC4X3_RC2_IfcCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurve::Class() { return *IFC4X3_RC2_IfcCurve_type; }
Ifc4x3_rc2::IfcCurve::IfcCurve(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurve::IfcCurve() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurve_type);  }

// Function implementations for IfcCurveBoundedPlane
::Ifc4x3_rc2::IfcPlane* Ifc4x3_rc2::IfcCurveBoundedPlane::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPlane>(true); }
void Ifc4x3_rc2::IfcCurveBoundedPlane::setBasisSurface(::Ifc4x3_rc2::IfcPlane* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcCurveBoundedPlane::OuterBoundary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcCurveBoundedPlane::setOuterBoundary(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr Ifc4x3_rc2::IfcCurveBoundedPlane::InnerBoundaries() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcCurve >(); }
void Ifc4x3_rc2::IfcCurveBoundedPlane::setInnerBoundaries(aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveBoundedPlane::declaration() const { return *IFC4X3_RC2_IfcCurveBoundedPlane_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveBoundedPlane::Class() { return *IFC4X3_RC2_IfcCurveBoundedPlane_type; }
Ifc4x3_rc2::IfcCurveBoundedPlane::IfcCurveBoundedPlane(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveBoundedPlane_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveBoundedPlane::IfcCurveBoundedPlane(::Ifc4x3_rc2::IfcPlane* v1_BasisSurface, ::Ifc4x3_rc2::IfcCurve* v2_OuterBoundary, aggregate_of< ::Ifc4x3_rc2::IfcCurve >::ptr v3_InnerBoundaries) : IfcBoundedSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurface* Ifc4x3_rc2::IfcCurveBoundedSurface::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcCurveBoundedSurface::setBasisSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcBoundaryCurve >::ptr Ifc4x3_rc2::IfcCurveBoundedSurface::Boundaries() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcBoundaryCurve >(); }
void Ifc4x3_rc2::IfcCurveBoundedSurface::setBoundaries(aggregate_of< ::Ifc4x3_rc2::IfcBoundaryCurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
bool Ifc4x3_rc2::IfcCurveBoundedSurface::ImplicitOuter() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcCurveBoundedSurface::setImplicitOuter(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveBoundedSurface::declaration() const { return *IFC4X3_RC2_IfcCurveBoundedSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveBoundedSurface::Class() { return *IFC4X3_RC2_IfcCurveBoundedSurface_type; }
Ifc4x3_rc2::IfcCurveBoundedSurface::IfcCurveBoundedSurface(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveBoundedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveBoundedSurface::IfcCurveBoundedSurface(::Ifc4x3_rc2::IfcSurface* v1_BasisSurface, aggregate_of< ::Ifc4x3_rc2::IfcBoundaryCurve >::ptr v2_Boundaries, bool v3_ImplicitOuter) : IfcBoundedSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcCurveSegment
::Ifc4x3_rc2::IfcPlacement* Ifc4x3_rc2::IfcCurveSegment::StartPlacement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcPlacement>(true); }
void Ifc4x3_rc2::IfcCurveSegment::setStartPlacement(::Ifc4x3_rc2::IfcPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcCurveMeasureSelect* Ifc4x3_rc2::IfcCurveSegment::SegmentLength() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCurveMeasureSelect>(true); }
void Ifc4x3_rc2::IfcCurveSegment::setSegmentLength(::Ifc4x3_rc2::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcCurveSegment::ParentCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcCurveSegment::setParentCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveSegment::declaration() const { return *IFC4X3_RC2_IfcCurveSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveSegment::Class() { return *IFC4X3_RC2_IfcCurveSegment_type; }
Ifc4x3_rc2::IfcCurveSegment::IfcCurveSegment(IfcEntityInstanceData* e) : IfcSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveSegment::IfcCurveSegment(::Ifc4x3_rc2::IfcTransitionCode::Value v1_Transition, ::Ifc4x3_rc2::IfcPlacement* v2_StartPlacement, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v3_SegmentLength, ::Ifc4x3_rc2::IfcCurve* v4_ParentCurve) : IfcSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcCurveSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Transition,::Ifc4x3_rc2::IfcTransitionCode::ToString(v1_Transition))));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_StartPlacement));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_ParentCurve));data_->setArgument(3,attr);} }

// Function implementations for IfcCurveSegment2D
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcCurveSegment2D::StartPoint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcCurveSegment2D::setStartPoint(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcCurveSegment2D::StartDirection() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCurveSegment2D::setStartDirection(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcCurveSegment2D::SegmentLength() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcCurveSegment2D::setSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveSegment2D::declaration() const { return *IFC4X3_RC2_IfcCurveSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveSegment2D::Class() { return *IFC4X3_RC2_IfcCurveSegment2D_type; }
Ifc4x3_rc2::IfcCurveSegment2D::IfcCurveSegment2D(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveSegment2D::IfcCurveSegment2D(::Ifc4x3_rc2::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurveFontOrScaledCurveFontSelect* Ifc4x3_rc2::IfcCurveStyle::CurveFont() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurveFontOrScaledCurveFontSelect>(true); }
void Ifc4x3_rc2::IfcCurveStyle::setCurveFont(::Ifc4x3_rc2::IfcCurveFontOrScaledCurveFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcCurveStyle::CurveWidth() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); }
void Ifc4x3_rc2::IfcCurveStyle::setCurveWidth(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcColour* Ifc4x3_rc2::IfcCurveStyle::CurveColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcColour>(true); }
void Ifc4x3_rc2::IfcCurveStyle::setCurveColour(::Ifc4x3_rc2::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcCurveStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcCurveStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyle::declaration() const { return *IFC4X3_RC2_IfcCurveStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyle::Class() { return *IFC4X3_RC2_IfcCurveStyle_type; }
Ifc4x3_rc2::IfcCurveStyle::IfcCurveStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveStyle::IfcCurveStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcCurveFontOrScaledCurveFontSelect* v2_CurveFont, ::Ifc4x3_rc2::IfcSizeSelect* v3_CurveWidth, ::Ifc4x3_rc2::IfcColour* v4_CurveColour, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurveStyleFont::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcCurveStyleFont::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >::ptr Ifc4x3_rc2::IfcCurveStyleFont::PatternList() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >(); }
void Ifc4x3_rc2::IfcCurveStyleFont::setPatternList(aggregate_of< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyleFont::declaration() const { return *IFC4X3_RC2_IfcCurveStyleFont_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyleFont::Class() { return *IFC4X3_RC2_IfcCurveStyleFont_type; }
Ifc4x3_rc2::IfcCurveStyleFont::IfcCurveStyleFont(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveStyleFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveStyleFont::IfcCurveStyleFont(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_rc2::IfcCurveStyleFontPattern >::ptr v2_PatternList) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurveStyleFontAndScaling::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcCurveStyleFontAndScaling::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCurveStyleFontSelect* Ifc4x3_rc2::IfcCurveStyleFontAndScaling::CurveFont() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurveStyleFontSelect>(true); }
void Ifc4x3_rc2::IfcCurveStyleFontAndScaling::setCurveFont(::Ifc4x3_rc2::IfcCurveStyleFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcCurveStyleFontAndScaling::CurveFontScaling() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcCurveStyleFontAndScaling::setCurveFontScaling(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyleFontAndScaling::declaration() const { return *IFC4X3_RC2_IfcCurveStyleFontAndScaling_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyleFontAndScaling::Class() { return *IFC4X3_RC2_IfcCurveStyleFontAndScaling_type; }
Ifc4x3_rc2::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveStyleFontAndScaling_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveStyleFontAndScaling::IfcCurveStyleFontAndScaling(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcCurveStyleFontSelect* v2_CurveFont, double v3_CurveFontScaling) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurveStyleFontPattern::VisibleSegmentLength() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcCurveStyleFontPattern::setVisibleSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcCurveStyleFontPattern::InvisibleSegmentLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCurveStyleFontPattern::setInvisibleSegmentLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyleFontPattern::declaration() const { return *IFC4X3_RC2_IfcCurveStyleFontPattern_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCurveStyleFontPattern::Class() { return *IFC4X3_RC2_IfcCurveStyleFontPattern_type; }
Ifc4x3_rc2::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCurveStyleFontPattern_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCurveStyleFontPattern::IfcCurveStyleFontPattern(double v1_VisibleSegmentLength, double v2_InvisibleSegmentLength) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCylindricalSurface::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcCylindricalSurface::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcCylindricalSurface::declaration() const { return *IFC4X3_RC2_IfcCylindricalSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcCylindricalSurface::Class() { return *IFC4X3_RC2_IfcCylindricalSurface_type; }
Ifc4x3_rc2::IfcCylindricalSurface::IfcCylindricalSurface(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcCylindricalSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcCylindricalSurface::IfcCylindricalSurface(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDamperTypeEnum::Value > Ifc4x3_rc2::IfcDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDamperTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDamper::declaration() const { return *IFC4X3_RC2_IfcDamper_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDamper::Class() { return *IFC4X3_RC2_IfcDamper_type; }
Ifc4x3_rc2::IfcDamper::IfcDamper(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDamper_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDamper::IfcDamper(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDamperTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDamperTypeEnum::Value Ifc4x3_rc2::IfcDamperType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDamperTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDamperType::setPredefinedType(::Ifc4x3_rc2::IfcDamperTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDamperTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDamperType::declaration() const { return *IFC4X3_RC2_IfcDamperType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDamperType::Class() { return *IFC4X3_RC2_IfcDamperType_type; }
Ifc4x3_rc2::IfcDamperType::IfcDamperType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDamperType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDamperType::IfcDamperType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDamperTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDamperTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDeepFoundation


const IfcParse::entity& Ifc4x3_rc2::IfcDeepFoundation::declaration() const { return *IFC4X3_RC2_IfcDeepFoundation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDeepFoundation::Class() { return *IFC4X3_RC2_IfcDeepFoundation_type; }
Ifc4x3_rc2::IfcDeepFoundation::IfcDeepFoundation(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDeepFoundation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDeepFoundation::IfcDeepFoundation(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDeepFoundationType::declaration() const { return *IFC4X3_RC2_IfcDeepFoundationType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDeepFoundationType::Class() { return *IFC4X3_RC2_IfcDeepFoundationType_type; }
Ifc4x3_rc2::IfcDeepFoundationType::IfcDeepFoundationType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDeepFoundationType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDeepFoundationType::IfcDeepFoundationType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProfileDef* Ifc4x3_rc2::IfcDerivedProfileDef::ParentProfile() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcDerivedProfileDef::setParentProfile(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* Ifc4x3_rc2::IfcDerivedProfileDef::Operator() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCartesianTransformationOperator2D>(true); }
void Ifc4x3_rc2::IfcDerivedProfileDef::setOperator(::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDerivedProfileDef::Label() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcDerivedProfileDef::setLabel(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDerivedProfileDef::declaration() const { return *IFC4X3_RC2_IfcDerivedProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDerivedProfileDef::Class() { return *IFC4X3_RC2_IfcDerivedProfileDef_type; }
Ifc4x3_rc2::IfcDerivedProfileDef::IfcDerivedProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDerivedProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDerivedProfileDef::IfcDerivedProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcProfileDef* v3_ParentProfile, ::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v4_Operator, boost::optional< std::string > v5_Label) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDerivedProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcDerivedUnitElement >::ptr Ifc4x3_rc2::IfcDerivedUnit::Elements() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcDerivedUnitElement >(); }
void Ifc4x3_rc2::IfcDerivedUnit::setElements(aggregate_of< ::Ifc4x3_rc2::IfcDerivedUnitElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcDerivedUnitEnum::Value Ifc4x3_rc2::IfcDerivedUnit::UnitType() const {  return ::Ifc4x3_rc2::IfcDerivedUnitEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc2::IfcDerivedUnit::setUnitType(::Ifc4x3_rc2::IfcDerivedUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDerivedUnitEnum::ToString(v)));data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDerivedUnit::UserDefinedType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcDerivedUnit::setUserDefinedType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDerivedUnit::declaration() const { return *IFC4X3_RC2_IfcDerivedUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDerivedUnit::Class() { return *IFC4X3_RC2_IfcDerivedUnit_type; }
Ifc4x3_rc2::IfcDerivedUnit::IfcDerivedUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDerivedUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDerivedUnit::IfcDerivedUnit(aggregate_of< ::Ifc4x3_rc2::IfcDerivedUnitElement >::ptr v1_Elements, ::Ifc4x3_rc2::IfcDerivedUnitEnum::Value v2_UnitType, boost::optional< std::string > v3_UserDefinedType) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcNamedUnit* Ifc4x3_rc2::IfcDerivedUnitElement::Unit() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcNamedUnit>(true); }
void Ifc4x3_rc2::IfcDerivedUnitElement::setUnit(::Ifc4x3_rc2::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
int Ifc4x3_rc2::IfcDerivedUnitElement::Exponent() const {  int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcDerivedUnitElement::setExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDerivedUnitElement::declaration() const { return *IFC4X3_RC2_IfcDerivedUnitElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDerivedUnitElement::Class() { return *IFC4X3_RC2_IfcDerivedUnitElement_type; }
Ifc4x3_rc2::IfcDerivedUnitElement::IfcDerivedUnitElement(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDerivedUnitElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDerivedUnitElement::IfcDerivedUnitElement(::Ifc4x3_rc2::IfcNamedUnit* v1_Unit, int v2_Exponent) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDimensionalExponents::LengthExponent() const {  int v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setLengthExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
int Ifc4x3_rc2::IfcDimensionalExponents::MassExponent() const {  int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setMassExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
int Ifc4x3_rc2::IfcDimensionalExponents::TimeExponent() const {  int v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setTimeExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
int Ifc4x3_rc2::IfcDimensionalExponents::ElectricCurrentExponent() const {  int v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setElectricCurrentExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
int Ifc4x3_rc2::IfcDimensionalExponents::ThermodynamicTemperatureExponent() const {  int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setThermodynamicTemperatureExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
int Ifc4x3_rc2::IfcDimensionalExponents::AmountOfSubstanceExponent() const {  int v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setAmountOfSubstanceExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
int Ifc4x3_rc2::IfcDimensionalExponents::LuminousIntensityExponent() const {  int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcDimensionalExponents::setLuminousIntensityExponent(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDimensionalExponents::declaration() const { return *IFC4X3_RC2_IfcDimensionalExponents_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDimensionalExponents::Class() { return *IFC4X3_RC2_IfcDimensionalExponents_type; }
Ifc4x3_rc2::IfcDimensionalExponents::IfcDimensionalExponents(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDimensionalExponents_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcDirection::DirectionRatios() const {  std::vector< double > /*[2:3]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::IfcDirection::declaration() const { return *IFC4X3_RC2_IfcDirection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDirection::Class() { return *IFC4X3_RC2_IfcDirection_type; }
Ifc4x3_rc2::IfcDirection::IfcDirection(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDirection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDirection::IfcDirection(std::vector< double > /*[2:3]*/ v1_DirectionRatios) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDirection_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_DirectionRatios));data_->setArgument(0,attr);} }

// Function implementations for IfcDirectrixCurveSweptAreaSolid
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcCurveMeasureSelect* Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCurveMeasureSelect>(true); }
void Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::setStartParam(::Ifc4x3_rc2::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcCurveMeasureSelect* Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcCurveMeasureSelect>(true); }
void Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::setEndParam(::Ifc4x3_rc2::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::declaration() const { return *IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::Class() { return *IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type; }
Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDirectrixCurveSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDirectrixCurveSweptAreaSolid::IfcDirectrixCurveSweptAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcCurve* v3_Directrix, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v5_EndParam) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartParam));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndParam));data_->setArgument(4,attr);} }

// Function implementations for IfcDirectrixDistanceSweptAreaSolid
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcPointByDistanceExpression* Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::StartDistance() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcPointByDistanceExpression>(true); }
void Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::setStartDistance(::Ifc4x3_rc2::IfcPointByDistanceExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcPointByDistanceExpression* Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::EndDistance() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcPointByDistanceExpression>(true); }
void Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::setEndDistance(::Ifc4x3_rc2::IfcPointByDistanceExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::declaration() const { return *IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::Class() { return *IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type; }
Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDirectrixDistanceSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDirectrixDistanceSweptAreaSolid::IfcDirectrixDistanceSweptAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcCurve* v3_Directrix, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v4_StartDistance, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v5_EndDistance) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDiscreteAccessoryTypeEnum::Value > Ifc4x3_rc2::IfcDiscreteAccessory::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDiscreteAccessory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDiscreteAccessory::declaration() const { return *IFC4X3_RC2_IfcDiscreteAccessory_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDiscreteAccessory::Class() { return *IFC4X3_RC2_IfcDiscreteAccessory_type; }
Ifc4x3_rc2::IfcDiscreteAccessory::IfcDiscreteAccessory(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDiscreteAccessory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDiscreteAccessory::IfcDiscreteAccessory(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDiscreteAccessoryTypeEnum::Value Ifc4x3_rc2::IfcDiscreteAccessoryType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDiscreteAccessoryType::setPredefinedType(::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDiscreteAccessoryType::declaration() const { return *IFC4X3_RC2_IfcDiscreteAccessoryType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDiscreteAccessoryType::Class() { return *IFC4X3_RC2_IfcDiscreteAccessoryType_type; }
Ifc4x3_rc2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDiscreteAccessoryType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDiscreteAccessoryType::IfcDiscreteAccessoryType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDiscreteAccessoryTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDiscreteAccessoryTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDistributionBoard
boost::optional< ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value > Ifc4x3_rc2::IfcDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionBoard::declaration() const { return *IFC4X3_RC2_IfcDistributionBoard_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionBoard::Class() { return *IFC4X3_RC2_IfcDistributionBoard_type; }
Ifc4x3_rc2::IfcDistributionBoard::IfcDistributionBoard(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionBoard_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionBoard::IfcDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDistributionBoardTypeEnum::Value Ifc4x3_rc2::IfcDistributionBoardType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDistributionBoardType::setPredefinedType(::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionBoardType::declaration() const { return *IFC4X3_RC2_IfcDistributionBoardType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionBoardType::Class() { return *IFC4X3_RC2_IfcDistributionBoardType_type; }
Ifc4x3_rc2::IfcDistributionBoardType::IfcDistributionBoardType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionBoardType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionBoardType::IfcDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDistributionBoardTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDistributionChamberElement
boost::optional< ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value > Ifc4x3_rc2::IfcDistributionChamberElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDistributionChamberElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionChamberElement::declaration() const { return *IFC4X3_RC2_IfcDistributionChamberElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionChamberElement::Class() { return *IFC4X3_RC2_IfcDistributionChamberElement_type; }
Ifc4x3_rc2::IfcDistributionChamberElement::IfcDistributionChamberElement(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionChamberElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionChamberElement::IfcDistributionChamberElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDistributionChamberElementTypeEnum::Value Ifc4x3_rc2::IfcDistributionChamberElementType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDistributionChamberElementType::setPredefinedType(::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionChamberElementType::declaration() const { return *IFC4X3_RC2_IfcDistributionChamberElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionChamberElementType::Class() { return *IFC4X3_RC2_IfcDistributionChamberElementType_type; }
Ifc4x3_rc2::IfcDistributionChamberElementType::IfcDistributionChamberElementType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionChamberElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionChamberElementType::IfcDistributionChamberElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDistributionChamberElementTypeEnum::Value v10_PredefinedType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDistributionChamberElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDistributionCircuit


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionCircuit::declaration() const { return *IFC4X3_RC2_IfcDistributionCircuit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionCircuit::Class() { return *IFC4X3_RC2_IfcDistributionCircuit_type; }
Ifc4x3_rc2::IfcDistributionCircuit::IfcDistributionCircuit(IfcEntityInstanceData* e) : IfcDistributionSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionCircuit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionCircuit::IfcDistributionCircuit(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcDistributionSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRelFlowControlElements::list::ptr Ifc4x3_rc2::IfcDistributionControlElement::AssignedToFlowElement() const { return data_->getInverse(IFC4X3_RC2_IfcRelFlowControlElements_type, 4)->as<IfcRelFlowControlElements>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcDistributionControlElement::declaration() const { return *IFC4X3_RC2_IfcDistributionControlElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionControlElement::Class() { return *IFC4X3_RC2_IfcDistributionControlElement_type; }
Ifc4x3_rc2::IfcDistributionControlElement::IfcDistributionControlElement(IfcEntityInstanceData* e) : IfcDistributionElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionControlElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionControlElement::IfcDistributionControlElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDistributionControlElementType::declaration() const { return *IFC4X3_RC2_IfcDistributionControlElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionControlElementType::Class() { return *IFC4X3_RC2_IfcDistributionControlElementType_type; }
Ifc4x3_rc2::IfcDistributionControlElementType::IfcDistributionControlElementType(IfcEntityInstanceData* e) : IfcDistributionElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionControlElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionControlElementType::IfcDistributionControlElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelConnectsPortToElement::list::ptr Ifc4x3_rc2::IfcDistributionElement::HasPorts() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsPortToElement_type, 5)->as<IfcRelConnectsPortToElement>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcDistributionElement::declaration() const { return *IFC4X3_RC2_IfcDistributionElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionElement::Class() { return *IFC4X3_RC2_IfcDistributionElement_type; }
Ifc4x3_rc2::IfcDistributionElement::IfcDistributionElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionElement::IfcDistributionElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDistributionElementType::declaration() const { return *IFC4X3_RC2_IfcDistributionElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionElementType::Class() { return *IFC4X3_RC2_IfcDistributionElementType_type; }
Ifc4x3_rc2::IfcDistributionElementType::IfcDistributionElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionElementType::IfcDistributionElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelFlowControlElements::list::ptr Ifc4x3_rc2::IfcDistributionFlowElement::HasControlElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelFlowControlElements_type, 5)->as<IfcRelFlowControlElements>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcDistributionFlowElement::declaration() const { return *IFC4X3_RC2_IfcDistributionFlowElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionFlowElement::Class() { return *IFC4X3_RC2_IfcDistributionFlowElement_type; }
Ifc4x3_rc2::IfcDistributionFlowElement::IfcDistributionFlowElement(IfcEntityInstanceData* e) : IfcDistributionElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionFlowElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionFlowElement::IfcDistributionFlowElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDistributionFlowElementType::declaration() const { return *IFC4X3_RC2_IfcDistributionFlowElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionFlowElementType::Class() { return *IFC4X3_RC2_IfcDistributionFlowElementType_type; }
Ifc4x3_rc2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(IfcEntityInstanceData* e) : IfcDistributionElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionFlowElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionFlowElementType::IfcDistributionFlowElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowDirectionEnum::Value > Ifc4x3_rc2::IfcDistributionPort::FlowDirection() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFlowDirectionEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcDistributionPort::setFlowDirection(boost::optional< ::Ifc4x3_rc2::IfcFlowDirectionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowDirectionEnum::ToString(*v)));}data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::Value > Ifc4x3_rc2::IfcDistributionPort::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDistributionPort::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionPortTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > Ifc4x3_rc2::IfcDistributionPort::SystemType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionSystemEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDistributionPort::setSystemType(boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionPort::declaration() const { return *IFC4X3_RC2_IfcDistributionPort_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionPort::Class() { return *IFC4X3_RC2_IfcDistributionPort_type; }
Ifc4x3_rc2::IfcDistributionPort::IfcDistributionPort(IfcEntityInstanceData* e) : IfcPort((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionPort_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionPort::IfcDistributionPort(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_rc2::IfcFlowDirectionEnum::Value > v8_FlowDirection, boost::optional< ::Ifc4x3_rc2::IfcDistributionPortTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v10_SystemType) : IfcPort((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::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_rc2::IfcDistributionSystem::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcDistributionSystem::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > Ifc4x3_rc2::IfcDistributionSystem::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDistributionSystemEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcDistributionSystem::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDistributionSystemEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDistributionSystemEnum::ToString(*v)));}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDistributionSystem::declaration() const { return *IFC4X3_RC2_IfcDistributionSystem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDistributionSystem::Class() { return *IFC4X3_RC2_IfcDistributionSystem_type; }
Ifc4x3_rc2::IfcDistributionSystem::IfcDistributionSystem(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDistributionSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDistributionSystem::IfcDistributionSystem(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcDistributionSystemEnum::Value > v7_PredefinedType) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDocumentInformation::Identification() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setIdentification(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc2::IfcDocumentInformation::Name() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Location() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Purpose() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::IntendedUse() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setIntendedUse(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Scope() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setScope(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::Revision() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setRevision(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcDocumentInformation::DocumentOwner() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcDocumentInformation::setDocumentOwner(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorSelect >::ptr > Ifc4x3_rc2::IfcDocumentInformation::Editors() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc2::IfcActorSelect >(); }
void Ifc4x3_rc2::IfcDocumentInformation::setEditors(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorSelect >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::CreationTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setCreationTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::LastRevisionTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setLastRevisionTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::ElectronicFormat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setElectronicFormat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::ValidFrom() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setValidFrom(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformation::ValidUntil() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcDocumentInformation::setValidUntil(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::Value > Ifc4x3_rc2::IfcDocumentInformation::Confidentiality() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::FromString(*data_->getArgument(15)); }
void Ifc4x3_rc2::IfcDocumentInformation::setConfidentiality(boost::optional< ::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDocumentConfidentialityEnum::ToString(*v)));}data_->setArgument(15,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDocumentStatusEnum::Value > Ifc4x3_rc2::IfcDocumentInformation::Status() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDocumentStatusEnum::FromString(*data_->getArgument(16)); }
void Ifc4x3_rc2::IfcDocumentInformation::setStatus(boost::optional< ::Ifc4x3_rc2::IfcDocumentStatusEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDocumentStatusEnum::ToString(*v)));}data_->setArgument(16,attr);} }

::Ifc4x3_rc2::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc2::IfcDocumentInformation::DocumentInfoForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesDocument_type, 5)->as<IfcRelAssociatesDocument>(); }
::Ifc4x3_rc2::IfcDocumentReference::list::ptr Ifc4x3_rc2::IfcDocumentInformation::HasDocumentReferences() const { return data_->getInverse(IFC4X3_RC2_IfcDocumentReference_type, 4)->as<IfcDocumentReference>(); }
::Ifc4x3_rc2::IfcDocumentInformationRelationship::list::ptr Ifc4x3_rc2::IfcDocumentInformation::IsPointedTo() const { return data_->getInverse(IFC4X3_RC2_IfcDocumentInformationRelationship_type, 3)->as<IfcDocumentInformationRelationship>(); }
::Ifc4x3_rc2::IfcDocumentInformationRelationship::list::ptr Ifc4x3_rc2::IfcDocumentInformation::IsPointer() const { return data_->getInverse(IFC4X3_RC2_IfcDocumentInformationRelationship_type, 2)->as<IfcDocumentInformationRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcDocumentInformation::declaration() const { return *IFC4X3_RC2_IfcDocumentInformation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDocumentInformation::Class() { return *IFC4X3_RC2_IfcDocumentInformation_type; }
Ifc4x3_rc2::IfcDocumentInformation::IfcDocumentInformation(IfcEntityInstanceData* e) : IfcExternalInformation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDocumentInformation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcActorSelect* v9_DocumentOwner, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorSelect >::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_rc2::IfcDocumentConfidentialityEnum::Value > v16_Confidentiality, boost::optional< ::Ifc4x3_rc2::IfcDocumentStatusEnum::Value > v17_Status) : IfcExternalInformation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::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_rc2::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_rc2::IfcDocumentInformation* Ifc4x3_rc2::IfcDocumentInformationRelationship::RelatingDocument() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcDocumentInformation>(true); }
void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelatingDocument(::Ifc4x3_rc2::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcDocumentInformation >::ptr Ifc4x3_rc2::IfcDocumentInformationRelationship::RelatedDocuments() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcDocumentInformation >(); }
void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelatedDocuments(aggregate_of< ::Ifc4x3_rc2::IfcDocumentInformation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDocumentInformationRelationship::RelationshipType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcDocumentInformationRelationship::setRelationshipType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDocumentInformationRelationship::declaration() const { return *IFC4X3_RC2_IfcDocumentInformationRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDocumentInformationRelationship::Class() { return *IFC4X3_RC2_IfcDocumentInformationRelationship_type; }
Ifc4x3_rc2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDocumentInformationRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDocumentInformationRelationship::IfcDocumentInformationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcDocumentInformation* v3_RelatingDocument, aggregate_of< ::Ifc4x3_rc2::IfcDocumentInformation >::ptr v4_RelatedDocuments, boost::optional< std::string > v5_RelationshipType) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDocumentReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcDocumentReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcDocumentInformation* Ifc4x3_rc2::IfcDocumentReference::ReferencedDocument() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcDocumentInformation>(true); }
void Ifc4x3_rc2::IfcDocumentReference::setReferencedDocument(::Ifc4x3_rc2::IfcDocumentInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }

::Ifc4x3_rc2::IfcRelAssociatesDocument::list::ptr Ifc4x3_rc2::IfcDocumentReference::DocumentRefForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesDocument_type, 5)->as<IfcRelAssociatesDocument>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcDocumentReference::declaration() const { return *IFC4X3_RC2_IfcDocumentReference_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDocumentReference::Class() { return *IFC4X3_RC2_IfcDocumentReference_type; }
Ifc4x3_rc2::IfcDocumentReference::IfcDocumentReference(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDocumentReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcDocumentInformation* v5_ReferencedDocument) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDoor::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcDoor::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoor::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcDoor::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > Ifc4x3_rc2::IfcDoor::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDoorTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcDoor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDoorTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > Ifc4x3_rc2::IfcDoor::OperationType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcDoor::setOperationType(boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDoorTypeOperationEnum::ToString(*v)));}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDoor::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcDoor::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDoor::declaration() const { return *IFC4X3_RC2_IfcDoor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDoor::Class() { return *IFC4X3_RC2_IfcDoor_type; }
Ifc4x3_rc2::IfcDoor::IfcDoor(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDoor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDoor::IfcDoor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcDoorLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::ThresholdDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::ThresholdThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::TransomThickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::TransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::ThresholdOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setThresholdOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::CasingThickness() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setCasingThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::CasingDepth() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setCasingDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcDoorLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(14)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); }
void Ifc4x3_rc2::IfcDoorLiningProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc2::IfcDoorLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDoorLiningProperties::declaration() const { return *IFC4X3_RC2_IfcDoorLiningProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDoorLiningProperties::Class() { return *IFC4X3_RC2_IfcDoorLiningProperties_type; }
Ifc4x3_rc2::IfcDoorLiningProperties::IfcDoorLiningProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDoorLiningProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDoorLiningProperties::IfcDoorLiningProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcShapeAspect* v15_ShapeAspectStyle, boost::optional< double > v16_LiningToPanelOffsetX, boost::optional< double > v17_LiningToPanelOffsetY) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDoorPanelProperties::PanelDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcDoorPanelOperationEnum::Value Ifc4x3_rc2::IfcDoorPanelProperties::PanelOperation() const {  return ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelOperation(::Ifc4x3_rc2::IfcDoorPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorPanelOperationEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcDoorPanelProperties::PanelWidth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcDoorPanelPositionEnum::Value Ifc4x3_rc2::IfcDoorPanelProperties::PanelPosition() const {  return ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcDoorPanelProperties::setPanelPosition(::Ifc4x3_rc2::IfcDoorPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorPanelPositionEnum::ToString(v)));data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcDoorPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); }
void Ifc4x3_rc2::IfcDoorPanelProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDoorPanelProperties::declaration() const { return *IFC4X3_RC2_IfcDoorPanelProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDoorPanelProperties::Class() { return *IFC4X3_RC2_IfcDoorPanelProperties_type; }
Ifc4x3_rc2::IfcDoorPanelProperties::IfcDoorPanelProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDoorPanelProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDoorPanelProperties::IfcDoorPanelProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< double > v5_PanelDepth, ::Ifc4x3_rc2::IfcDoorPanelOperationEnum::Value v6_PanelOperation, boost::optional< double > v7_PanelWidth, ::Ifc4x3_rc2::IfcDoorPanelPositionEnum::Value v8_PanelPosition, ::Ifc4x3_rc2::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcDoorStandardCase::declaration() const { return *IFC4X3_RC2_IfcDoorStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDoorStandardCase::Class() { return *IFC4X3_RC2_IfcDoorStandardCase_type; }
Ifc4x3_rc2::IfcDoorStandardCase::IfcDoorStandardCase(IfcEntityInstanceData* e) : IfcDoor((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDoorStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDoorStandardCase::IfcDoorStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc2::IfcDoorTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value > v12_OperationType, boost::optional< std::string > v13_UserDefinedOperationType) : IfcDoor((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcDoorStyleOperationEnum::Value Ifc4x3_rc2::IfcDoorStyle::OperationType() const {  return ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDoorStyle::setOperationType(::Ifc4x3_rc2::IfcDoorStyleOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorStyleOperationEnum::ToString(v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::Value Ifc4x3_rc2::IfcDoorStyle::ConstructionType() const {  return ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDoorStyle::setConstructionType(::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::ToString(v)));data_->setArgument(9,attr);} }
bool Ifc4x3_rc2::IfcDoorStyle::ParameterTakesPrecedence() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcDoorStyle::setParameterTakesPrecedence(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
bool Ifc4x3_rc2::IfcDoorStyle::Sizeable() const {  bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcDoorStyle::setSizeable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDoorStyle::declaration() const { return *IFC4X3_RC2_IfcDoorStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDoorStyle::Class() { return *IFC4X3_RC2_IfcDoorStyle_type; }
Ifc4x3_rc2::IfcDoorStyle::IfcDoorStyle(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDoorStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDoorStyle::IfcDoorStyle(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc2::IfcDoorStyleOperationEnum::Value v9_OperationType, ::Ifc4x3_rc2::IfcDoorStyleConstructionEnum::Value v10_ConstructionType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDoorStyleOperationEnum::ToString(v9_OperationType))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_ConstructionType,::Ifc4x3_rc2::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_rc2::IfcDoorTypeEnum::Value Ifc4x3_rc2::IfcDoorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDoorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDoorType::setPredefinedType(::Ifc4x3_rc2::IfcDoorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value Ifc4x3_rc2::IfcDoorType::OperationType() const {  return ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcDoorType::setOperationType(::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDoorTypeOperationEnum::ToString(v)));data_->setArgument(10,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcDoorType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcDoorType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcDoorType::UserDefinedOperationType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcDoorType::setUserDefinedOperationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDoorType::declaration() const { return *IFC4X3_RC2_IfcDoorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDoorType::Class() { return *IFC4X3_RC2_IfcDoorType_type; }
Ifc4x3_rc2::IfcDoorType::IfcDoorType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDoorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDoorType::IfcDoorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDoorTypeEnum::Value v10_PredefinedType, ::Ifc4x3_rc2::IfcDoorTypeOperationEnum::Value v11_OperationType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedOperationType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDoorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_OperationType,::Ifc4x3_rc2::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_rc2::IfcDraughtingPreDefinedColour::declaration() const { return *IFC4X3_RC2_IfcDraughtingPreDefinedColour_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDraughtingPreDefinedColour::Class() { return *IFC4X3_RC2_IfcDraughtingPreDefinedColour_type; }
Ifc4x3_rc2::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(IfcEntityInstanceData* e) : IfcPreDefinedColour((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDraughtingPreDefinedColour_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDraughtingPreDefinedColour::IfcDraughtingPreDefinedColour(std::string v1_Name) : IfcPreDefinedColour((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDraughtingPreDefinedColour_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcDraughtingPreDefinedCurveFont


const IfcParse::entity& Ifc4x3_rc2::IfcDraughtingPreDefinedCurveFont::declaration() const { return *IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDraughtingPreDefinedCurveFont::Class() { return *IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type; }
Ifc4x3_rc2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(IfcEntityInstanceData* e) : IfcPreDefinedCurveFont((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDraughtingPreDefinedCurveFont::IfcDraughtingPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedCurveFont((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcDraughtingPreDefinedCurveFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcDuctFitting
boost::optional< ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value > Ifc4x3_rc2::IfcDuctFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDuctFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDuctFitting::declaration() const { return *IFC4X3_RC2_IfcDuctFitting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDuctFitting::Class() { return *IFC4X3_RC2_IfcDuctFitting_type; }
Ifc4x3_rc2::IfcDuctFitting::IfcDuctFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDuctFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDuctFitting::IfcDuctFitting(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDuctFittingTypeEnum::Value Ifc4x3_rc2::IfcDuctFittingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDuctFittingType::setPredefinedType(::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDuctFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDuctFittingType::declaration() const { return *IFC4X3_RC2_IfcDuctFittingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDuctFittingType::Class() { return *IFC4X3_RC2_IfcDuctFittingType_type; }
Ifc4x3_rc2::IfcDuctFittingType::IfcDuctFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDuctFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDuctFittingType::IfcDuctFittingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDuctFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDuctFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDuctSegment
boost::optional< ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value > Ifc4x3_rc2::IfcDuctSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDuctSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDuctSegment::declaration() const { return *IFC4X3_RC2_IfcDuctSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDuctSegment::Class() { return *IFC4X3_RC2_IfcDuctSegment_type; }
Ifc4x3_rc2::IfcDuctSegment::IfcDuctSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDuctSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDuctSegment::IfcDuctSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDuctSegmentTypeEnum::Value Ifc4x3_rc2::IfcDuctSegmentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDuctSegmentType::setPredefinedType(::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDuctSegmentType::declaration() const { return *IFC4X3_RC2_IfcDuctSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDuctSegmentType::Class() { return *IFC4X3_RC2_IfcDuctSegmentType_type; }
Ifc4x3_rc2::IfcDuctSegmentType::IfcDuctSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDuctSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDuctSegmentType::IfcDuctSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDuctSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDuctSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcDuctSilencer
boost::optional< ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value > Ifc4x3_rc2::IfcDuctSilencer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcDuctSilencer::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDuctSilencer::declaration() const { return *IFC4X3_RC2_IfcDuctSilencer_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDuctSilencer::Class() { return *IFC4X3_RC2_IfcDuctSilencer_type; }
Ifc4x3_rc2::IfcDuctSilencer::IfcDuctSilencer(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDuctSilencer_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDuctSilencer::IfcDuctSilencer(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDuctSilencerTypeEnum::Value Ifc4x3_rc2::IfcDuctSilencerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcDuctSilencerType::setPredefinedType(::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcDuctSilencerType::declaration() const { return *IFC4X3_RC2_IfcDuctSilencerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcDuctSilencerType::Class() { return *IFC4X3_RC2_IfcDuctSilencerType_type; }
Ifc4x3_rc2::IfcDuctSilencerType::IfcDuctSilencerType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcDuctSilencerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcDuctSilencerType::IfcDuctSilencerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcDuctSilencerTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDuctSilencerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEarthworksCut
boost::optional< ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Value > Ifc4x3_rc2::IfcEarthworksCut::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcEarthworksCut::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksCut::declaration() const { return *IFC4X3_RC2_IfcEarthworksCut_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksCut::Class() { return *IFC4X3_RC2_IfcEarthworksCut_type; }
Ifc4x3_rc2::IfcEarthworksCut::IfcEarthworksCut(IfcEntityInstanceData* e) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEarthworksCut_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEarthworksCut::IfcEarthworksCut(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcEarthworksCutTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEarthworksElement::declaration() const { return *IFC4X3_RC2_IfcEarthworksElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksElement::Class() { return *IFC4X3_RC2_IfcEarthworksElement_type; }
Ifc4x3_rc2::IfcEarthworksElement::IfcEarthworksElement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEarthworksElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEarthworksElement::IfcEarthworksElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEarthworksFillTypeEnum::Value > Ifc4x3_rc2::IfcEarthworksFill::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcEarthworksFill::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksFill::declaration() const { return *IFC4X3_RC2_IfcEarthworksFill_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEarthworksFill::Class() { return *IFC4X3_RC2_IfcEarthworksFill_type; }
Ifc4x3_rc2::IfcEarthworksFill::IfcEarthworksFill(IfcEntityInstanceData* e) : IfcEarthworksElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEarthworksFill_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEarthworksFill::IfcEarthworksFill(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcEarthworksFillTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVertex* Ifc4x3_rc2::IfcEdge::EdgeStart() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcVertex>(true); }
void Ifc4x3_rc2::IfcEdge::setEdgeStart(::Ifc4x3_rc2::IfcVertex* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcVertex* Ifc4x3_rc2::IfcEdge::EdgeEnd() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcVertex>(true); }
void Ifc4x3_rc2::IfcEdge::setEdgeEnd(::Ifc4x3_rc2::IfcVertex* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEdge::declaration() const { return *IFC4X3_RC2_IfcEdge_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEdge::Class() { return *IFC4X3_RC2_IfcEdge_type; }
Ifc4x3_rc2::IfcEdge::IfcEdge(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEdge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEdge::IfcEdge(::Ifc4x3_rc2::IfcVertex* v1_EdgeStart, ::Ifc4x3_rc2::IfcVertex* v2_EdgeEnd) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurve* Ifc4x3_rc2::IfcEdgeCurve::EdgeGeometry() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcEdgeCurve::setEdgeGeometry(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
bool Ifc4x3_rc2::IfcEdgeCurve::SameSense() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcEdgeCurve::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEdgeCurve::declaration() const { return *IFC4X3_RC2_IfcEdgeCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEdgeCurve::Class() { return *IFC4X3_RC2_IfcEdgeCurve_type; }
Ifc4x3_rc2::IfcEdgeCurve::IfcEdgeCurve(IfcEntityInstanceData* e) : IfcEdge((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEdgeCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEdgeCurve::IfcEdgeCurve(::Ifc4x3_rc2::IfcVertex* v1_EdgeStart, ::Ifc4x3_rc2::IfcVertex* v2_EdgeEnd, ::Ifc4x3_rc2::IfcCurve* v3_EdgeGeometry, bool v4_SameSense) : IfcEdge((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOrientedEdge >::ptr Ifc4x3_rc2::IfcEdgeLoop::EdgeList() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcOrientedEdge >(); }
void Ifc4x3_rc2::IfcEdgeLoop::setEdgeList(aggregate_of< ::Ifc4x3_rc2::IfcOrientedEdge >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEdgeLoop::declaration() const { return *IFC4X3_RC2_IfcEdgeLoop_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEdgeLoop::Class() { return *IFC4X3_RC2_IfcEdgeLoop_type; }
Ifc4x3_rc2::IfcEdgeLoop::IfcEdgeLoop(IfcEntityInstanceData* e) : IfcLoop((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEdgeLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEdgeLoop::IfcEdgeLoop(aggregate_of< ::Ifc4x3_rc2::IfcOrientedEdge >::ptr v1_EdgeList) : IfcLoop((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEdgeLoop_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_EdgeList)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcElectricAppliance
boost::optional< ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value > Ifc4x3_rc2::IfcElectricAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricAppliance::declaration() const { return *IFC4X3_RC2_IfcElectricAppliance_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricAppliance::Class() { return *IFC4X3_RC2_IfcElectricAppliance_type; }
Ifc4x3_rc2::IfcElectricAppliance::IfcElectricAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricAppliance::IfcElectricAppliance(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricApplianceTypeEnum::Value Ifc4x3_rc2::IfcElectricApplianceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricApplianceType::setPredefinedType(::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricApplianceType::declaration() const { return *IFC4X3_RC2_IfcElectricApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricApplianceType::Class() { return *IFC4X3_RC2_IfcElectricApplianceType_type; }
Ifc4x3_rc2::IfcElectricApplianceType::IfcElectricApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricApplianceType::IfcElectricApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricDistributionBoard
boost::optional< ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value > Ifc4x3_rc2::IfcElectricDistributionBoard::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricDistributionBoard::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricDistributionBoard::declaration() const { return *IFC4X3_RC2_IfcElectricDistributionBoard_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricDistributionBoard::Class() { return *IFC4X3_RC2_IfcElectricDistributionBoard_type; }
Ifc4x3_rc2::IfcElectricDistributionBoard::IfcElectricDistributionBoard(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricDistributionBoard_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricDistributionBoard::IfcElectricDistributionBoard(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricDistributionBoardTypeEnum::Value Ifc4x3_rc2::IfcElectricDistributionBoardType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricDistributionBoardType::setPredefinedType(::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricDistributionBoardType::declaration() const { return *IFC4X3_RC2_IfcElectricDistributionBoardType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricDistributionBoardType::Class() { return *IFC4X3_RC2_IfcElectricDistributionBoardType_type; }
Ifc4x3_rc2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricDistributionBoardType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricDistributionBoardType::IfcElectricDistributionBoardType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricDistributionBoardTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricDistributionBoardTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricFlowStorageDevice
boost::optional< ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value > Ifc4x3_rc2::IfcElectricFlowStorageDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricFlowStorageDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowStorageDevice::declaration() const { return *IFC4X3_RC2_IfcElectricFlowStorageDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowStorageDevice::Class() { return *IFC4X3_RC2_IfcElectricFlowStorageDevice_type; }
Ifc4x3_rc2::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(IfcEntityInstanceData* e) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricFlowStorageDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricFlowStorageDevice::IfcElectricFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::declaration() const { return *IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::Class() { return *IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type; }
Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(IfcEntityInstanceData* e) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricFlowStorageDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricFlowStorageDeviceType::IfcElectricFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricFlowStorageDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricFlowStorageDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricFlowTreatmentDevice
boost::optional< ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::declaration() const { return *IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::Class() { return *IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type; }
Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricFlowTreatmentDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricFlowTreatmentDevice::IfcElectricFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::declaration() const { return *IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::Class() { return *IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type; }
Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricFlowTreatmentDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceType::IfcElectricFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricFlowTreatmentDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricGenerator
boost::optional< ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value > Ifc4x3_rc2::IfcElectricGenerator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricGenerator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricGenerator::declaration() const { return *IFC4X3_RC2_IfcElectricGenerator_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricGenerator::Class() { return *IFC4X3_RC2_IfcElectricGenerator_type; }
Ifc4x3_rc2::IfcElectricGenerator::IfcElectricGenerator(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricGenerator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricGenerator::IfcElectricGenerator(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricGeneratorTypeEnum::Value Ifc4x3_rc2::IfcElectricGeneratorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricGeneratorType::setPredefinedType(::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricGeneratorType::declaration() const { return *IFC4X3_RC2_IfcElectricGeneratorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricGeneratorType::Class() { return *IFC4X3_RC2_IfcElectricGeneratorType_type; }
Ifc4x3_rc2::IfcElectricGeneratorType::IfcElectricGeneratorType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricGeneratorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricGeneratorType::IfcElectricGeneratorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricGeneratorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricGeneratorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricMotor
boost::optional< ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value > Ifc4x3_rc2::IfcElectricMotor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricMotor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricMotorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricMotor::declaration() const { return *IFC4X3_RC2_IfcElectricMotor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricMotor::Class() { return *IFC4X3_RC2_IfcElectricMotor_type; }
Ifc4x3_rc2::IfcElectricMotor::IfcElectricMotor(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricMotor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricMotor::IfcElectricMotor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricMotorTypeEnum::Value Ifc4x3_rc2::IfcElectricMotorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricMotorType::setPredefinedType(::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricMotorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricMotorType::declaration() const { return *IFC4X3_RC2_IfcElectricMotorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricMotorType::Class() { return *IFC4X3_RC2_IfcElectricMotorType_type; }
Ifc4x3_rc2::IfcElectricMotorType::IfcElectricMotorType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricMotorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricMotorType::IfcElectricMotorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricMotorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricMotorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElectricTimeControl
boost::optional< ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value > Ifc4x3_rc2::IfcElectricTimeControl::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElectricTimeControl::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricTimeControl::declaration() const { return *IFC4X3_RC2_IfcElectricTimeControl_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricTimeControl::Class() { return *IFC4X3_RC2_IfcElectricTimeControl_type; }
Ifc4x3_rc2::IfcElectricTimeControl::IfcElectricTimeControl(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricTimeControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricTimeControl::IfcElectricTimeControl(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcElectricTimeControlTypeEnum::Value Ifc4x3_rc2::IfcElectricTimeControlType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElectricTimeControlType::setPredefinedType(::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElectricTimeControlType::declaration() const { return *IFC4X3_RC2_IfcElectricTimeControlType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElectricTimeControlType::Class() { return *IFC4X3_RC2_IfcElectricTimeControlType_type; }
Ifc4x3_rc2::IfcElectricTimeControlType::IfcElectricTimeControlType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElectricTimeControlType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElectricTimeControlType::IfcElectricTimeControlType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElectricTimeControlTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElectricTimeControlTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElement
boost::optional< std::string > Ifc4x3_rc2::IfcElement::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcElement::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }

::Ifc4x3_rc2::IfcRelFillsElement::list::ptr Ifc4x3_rc2::IfcElement::FillsVoids() const { return data_->getInverse(IFC4X3_RC2_IfcRelFillsElement_type, 5)->as<IfcRelFillsElement>(); }
::Ifc4x3_rc2::IfcRelConnectsElements::list::ptr Ifc4x3_rc2::IfcElement::ConnectedTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsElements_type, 5)->as<IfcRelConnectsElements>(); }
::Ifc4x3_rc2::IfcRelInterferesElements::list::ptr Ifc4x3_rc2::IfcElement::IsInterferedByElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelInterferesElements_type, 5)->as<IfcRelInterferesElements>(); }
::Ifc4x3_rc2::IfcRelInterferesElements::list::ptr Ifc4x3_rc2::IfcElement::InterferesElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelInterferesElements_type, 4)->as<IfcRelInterferesElements>(); }
::Ifc4x3_rc2::IfcRelProjectsElement::list::ptr Ifc4x3_rc2::IfcElement::HasProjections() const { return data_->getInverse(IFC4X3_RC2_IfcRelProjectsElement_type, 4)->as<IfcRelProjectsElement>(); }
::Ifc4x3_rc2::IfcRelVoidsElement::list::ptr Ifc4x3_rc2::IfcElement::HasOpenings() const { return data_->getInverse(IFC4X3_RC2_IfcRelVoidsElement_type, 4)->as<IfcRelVoidsElement>(); }
::Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::list::ptr Ifc4x3_rc2::IfcElement::IsConnectionRealization() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type, 7)->as<IfcRelConnectsWithRealizingElements>(); }
::Ifc4x3_rc2::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc2::IfcElement::ProvidesBoundaries() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary_type, 5)->as<IfcRelSpaceBoundary>(); }
::Ifc4x3_rc2::IfcRelConnectsElements::list::ptr Ifc4x3_rc2::IfcElement::ConnectedFrom() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsElements_type, 6)->as<IfcRelConnectsElements>(); }
::Ifc4x3_rc2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcElement::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, 4)->as<IfcRelContainedInSpatialStructure>(); }
::Ifc4x3_rc2::IfcRelCoversBldgElements::list::ptr Ifc4x3_rc2::IfcElement::HasCoverings() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversBldgElements_type, 4)->as<IfcRelCoversBldgElements>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcElement::declaration() const { return *IFC4X3_RC2_IfcElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElement::Class() { return *IFC4X3_RC2_IfcElement_type; }
Ifc4x3_rc2::IfcElement::IfcElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElement::IfcElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAssemblyPlaceEnum::Value > Ifc4x3_rc2::IfcElementAssembly::AssemblyPlace() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcElementAssembly::setAssemblyPlace(boost::optional< ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcAssemblyPlaceEnum::ToString(*v)));}data_->setArgument(8,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value > Ifc4x3_rc2::IfcElementAssembly::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElementAssembly::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElementAssembly::declaration() const { return *IFC4X3_RC2_IfcElementAssembly_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementAssembly::Class() { return *IFC4X3_RC2_IfcElementAssembly_type; }
Ifc4x3_rc2::IfcElementAssembly::IfcElementAssembly(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementAssembly_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementAssembly::IfcElementAssembly(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value > v9_AssemblyPlace, boost::optional< ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value > v10_PredefinedType) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcElementAssemblyTypeEnum::Value Ifc4x3_rc2::IfcElementAssemblyType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcElementAssemblyType::setPredefinedType(::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElementAssemblyType::declaration() const { return *IFC4X3_RC2_IfcElementAssemblyType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementAssemblyType::Class() { return *IFC4X3_RC2_IfcElementAssemblyType_type; }
Ifc4x3_rc2::IfcElementAssemblyType::IfcElementAssemblyType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementAssemblyType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementAssemblyType::IfcElementAssemblyType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcElementAssemblyTypeEnum::Value v10_PredefinedType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElementAssemblyTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcElementComponent


const IfcParse::entity& Ifc4x3_rc2::IfcElementComponent::declaration() const { return *IFC4X3_RC2_IfcElementComponent_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementComponent::Class() { return *IFC4X3_RC2_IfcElementComponent_type; }
Ifc4x3_rc2::IfcElementComponent::IfcElementComponent(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementComponent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementComponent::IfcElementComponent(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElementComponentType::declaration() const { return *IFC4X3_RC2_IfcElementComponentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementComponentType::Class() { return *IFC4X3_RC2_IfcElementComponentType_type; }
Ifc4x3_rc2::IfcElementComponentType::IfcElementComponentType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementComponentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementComponentType::IfcElementComponentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElementQuantity::MethodOfMeasurement() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcElementQuantity::setMethodOfMeasurement(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr Ifc4x3_rc2::IfcElementQuantity::Quantities() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcPhysicalQuantity >(); }
void Ifc4x3_rc2::IfcElementQuantity::setQuantities(aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElementQuantity::declaration() const { return *IFC4X3_RC2_IfcElementQuantity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementQuantity::Class() { return *IFC4X3_RC2_IfcElementQuantity_type; }
Ifc4x3_rc2::IfcElementQuantity::IfcElementQuantity(IfcEntityInstanceData* e) : IfcQuantitySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementQuantity::IfcElementQuantity(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_MethodOfMeasurement, aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr v6_Quantities) : IfcQuantitySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElementType::declaration() const { return *IFC4X3_RC2_IfcElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementType::Class() { return *IFC4X3_RC2_IfcElementType_type; }
Ifc4x3_rc2::IfcElementType::IfcElementType(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementType::IfcElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcElementarySurface::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcElementarySurface::setPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcElementarySurface::declaration() const { return *IFC4X3_RC2_IfcElementarySurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcElementarySurface::Class() { return *IFC4X3_RC2_IfcElementarySurface_type; }
Ifc4x3_rc2::IfcElementarySurface::IfcElementarySurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcElementarySurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcElementarySurface::IfcElementarySurface(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position) : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcElementarySurface_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcEllipse
double Ifc4x3_rc2::IfcEllipse::SemiAxis1() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcEllipse::setSemiAxis1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcEllipse::SemiAxis2() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcEllipse::setSemiAxis2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEllipse::declaration() const { return *IFC4X3_RC2_IfcEllipse_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEllipse::Class() { return *IFC4X3_RC2_IfcEllipse_type; }
Ifc4x3_rc2::IfcEllipse::IfcEllipse(IfcEntityInstanceData* e) : IfcConic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEllipse_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEllipse::IfcEllipse(::Ifc4x3_rc2::IfcAxis2Placement* v1_Position, double v2_SemiAxis1, double v3_SemiAxis2) : IfcConic((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEllipseProfileDef::SemiAxis1() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcEllipseProfileDef::setSemiAxis1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcEllipseProfileDef::SemiAxis2() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcEllipseProfileDef::setSemiAxis2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEllipseProfileDef::declaration() const { return *IFC4X3_RC2_IfcEllipseProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEllipseProfileDef::Class() { return *IFC4X3_RC2_IfcEllipseProfileDef_type; }
Ifc4x3_rc2::IfcEllipseProfileDef::IfcEllipseProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEllipseProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEllipseProfileDef::IfcEllipseProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position, double v4_SemiAxis1, double v5_SemiAxis2) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcEllipseProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcEnergyConversionDevice::declaration() const { return *IFC4X3_RC2_IfcEnergyConversionDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEnergyConversionDevice::Class() { return *IFC4X3_RC2_IfcEnergyConversionDevice_type; }
Ifc4x3_rc2::IfcEnergyConversionDevice::IfcEnergyConversionDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEnergyConversionDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEnergyConversionDevice::IfcEnergyConversionDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEnergyConversionDeviceType::declaration() const { return *IFC4X3_RC2_IfcEnergyConversionDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEnergyConversionDeviceType::Class() { return *IFC4X3_RC2_IfcEnergyConversionDeviceType_type; }
Ifc4x3_rc2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEnergyConversionDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEnergyConversionDeviceType::IfcEnergyConversionDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEngineTypeEnum::Value > Ifc4x3_rc2::IfcEngine::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEngineTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcEngine::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEngineTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEngineTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEngine::declaration() const { return *IFC4X3_RC2_IfcEngine_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEngine::Class() { return *IFC4X3_RC2_IfcEngine_type; }
Ifc4x3_rc2::IfcEngine::IfcEngine(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEngine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEngine::IfcEngine(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcEngineTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEngineTypeEnum::Value Ifc4x3_rc2::IfcEngineType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcEngineTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcEngineType::setPredefinedType(::Ifc4x3_rc2::IfcEngineTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcEngineTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEngineType::declaration() const { return *IFC4X3_RC2_IfcEngineType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEngineType::Class() { return *IFC4X3_RC2_IfcEngineType_type; }
Ifc4x3_rc2::IfcEngineType::IfcEngineType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEngineType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEngineType::IfcEngineType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcEngineTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEngineTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEvaporativeCooler
boost::optional< ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value > Ifc4x3_rc2::IfcEvaporativeCooler::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcEvaporativeCooler::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEvaporativeCooler::declaration() const { return *IFC4X3_RC2_IfcEvaporativeCooler_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEvaporativeCooler::Class() { return *IFC4X3_RC2_IfcEvaporativeCooler_type; }
Ifc4x3_rc2::IfcEvaporativeCooler::IfcEvaporativeCooler(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEvaporativeCooler_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEvaporativeCooler::IfcEvaporativeCooler(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEvaporativeCoolerTypeEnum::Value Ifc4x3_rc2::IfcEvaporativeCoolerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcEvaporativeCoolerType::setPredefinedType(::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEvaporativeCoolerType::declaration() const { return *IFC4X3_RC2_IfcEvaporativeCoolerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEvaporativeCoolerType::Class() { return *IFC4X3_RC2_IfcEvaporativeCoolerType_type; }
Ifc4x3_rc2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEvaporativeCoolerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEvaporativeCoolerType::IfcEvaporativeCoolerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcEvaporativeCoolerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEvaporativeCoolerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEvaporator
boost::optional< ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value > Ifc4x3_rc2::IfcEvaporator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcEvaporator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEvaporatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEvaporator::declaration() const { return *IFC4X3_RC2_IfcEvaporator_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEvaporator::Class() { return *IFC4X3_RC2_IfcEvaporator_type; }
Ifc4x3_rc2::IfcEvaporator::IfcEvaporator(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEvaporator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEvaporator::IfcEvaporator(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcEvaporatorTypeEnum::Value Ifc4x3_rc2::IfcEvaporatorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcEvaporatorType::setPredefinedType(::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcEvaporatorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEvaporatorType::declaration() const { return *IFC4X3_RC2_IfcEvaporatorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEvaporatorType::Class() { return *IFC4X3_RC2_IfcEvaporatorType_type; }
Ifc4x3_rc2::IfcEvaporatorType::IfcEvaporatorType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEvaporatorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEvaporatorType::IfcEvaporatorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcEvaporatorTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEvaporatorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcEvent
boost::optional< ::Ifc4x3_rc2::IfcEventTypeEnum::Value > Ifc4x3_rc2::IfcEvent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEventTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcEvent::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcEventTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEventTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value > Ifc4x3_rc2::IfcEvent::EventTriggerType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcEvent::setEventTriggerType(boost::optional< ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcEventTriggerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcEvent::UserDefinedEventTriggerType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcEvent::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcEventTime* Ifc4x3_rc2::IfcEvent::EventOccurenceTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcEventTime>(true); }
void Ifc4x3_rc2::IfcEvent::setEventOccurenceTime(::Ifc4x3_rc2::IfcEventTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEvent::declaration() const { return *IFC4X3_RC2_IfcEvent_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEvent::Class() { return *IFC4X3_RC2_IfcEvent_type; }
Ifc4x3_rc2::IfcEvent::IfcEvent(IfcEntityInstanceData* e) : IfcProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEvent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEvent::IfcEvent(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcEventTypeEnum::Value > v8_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value > v9_EventTriggerType, boost::optional< std::string > v10_UserDefinedEventTriggerType, ::Ifc4x3_rc2::IfcEventTime* v11_EventOccurenceTime) : IfcProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcEventTime::ActualDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcEventTime::setActualDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::EarlyDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcEventTime::setEarlyDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::LateDate() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcEventTime::setLateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcEventTime::ScheduleDate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcEventTime::setScheduleDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEventTime::declaration() const { return *IFC4X3_RC2_IfcEventTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEventTime::Class() { return *IFC4X3_RC2_IfcEventTime_type; }
Ifc4x3_rc2::IfcEventTime::IfcEventTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEventTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEventTime::IfcEventTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::IfcEventTypeEnum::Value Ifc4x3_rc2::IfcEventType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcEventTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcEventType::setPredefinedType(::Ifc4x3_rc2::IfcEventTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcEventTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value Ifc4x3_rc2::IfcEventType::EventTriggerType() const {  return ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcEventType::setEventTriggerType(::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcEventTriggerTypeEnum::ToString(v)));data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcEventType::UserDefinedEventTriggerType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcEventType::setUserDefinedEventTriggerType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcEventType::declaration() const { return *IFC4X3_RC2_IfcEventType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcEventType::Class() { return *IFC4X3_RC2_IfcEventType_type; }
Ifc4x3_rc2::IfcEventType::IfcEventType(IfcEntityInstanceData* e) : IfcTypeProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcEventType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcEventType::IfcEventType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_rc2::IfcEventTypeEnum::Value v10_PredefinedType, ::Ifc4x3_rc2::IfcEventTriggerTypeEnum::Value v11_EventTriggerType, boost::optional< std::string > v12_UserDefinedEventTriggerType) : IfcTypeProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcEventTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_EventTriggerType,::Ifc4x3_rc2::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_rc2::IfcExtendedProperties::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcExtendedProperties::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcExtendedProperties::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcExtendedProperties::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr Ifc4x3_rc2::IfcExtendedProperties::Properties() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcProperty >(); }
void Ifc4x3_rc2::IfcExtendedProperties::setProperties(aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcExtendedProperties::declaration() const { return *IFC4X3_RC2_IfcExtendedProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExtendedProperties::Class() { return *IFC4X3_RC2_IfcExtendedProperties_type; }
Ifc4x3_rc2::IfcExtendedProperties::IfcExtendedProperties(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExtendedProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExtendedProperties::IfcExtendedProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v3_Properties) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcExternalInformation::declaration() const { return *IFC4X3_RC2_IfcExternalInformation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternalInformation::Class() { return *IFC4X3_RC2_IfcExternalInformation_type; }
Ifc4x3_rc2::IfcExternalInformation::IfcExternalInformation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternalInformation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExternalInformation::IfcExternalInformation() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcExternalInformation_type);  }

// Function implementations for IfcExternalReference
boost::optional< std::string > Ifc4x3_rc2::IfcExternalReference::Location() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcExternalReference::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcExternalReference::Identification() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcExternalReference::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcExternalReference::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcExternalReference::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }

::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcExternalReference::ExternalReferenceForResources() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 2)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcExternalReference::declaration() const { return *IFC4X3_RC2_IfcExternalReference_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternalReference::Class() { return *IFC4X3_RC2_IfcExternalReference_type; }
Ifc4x3_rc2::IfcExternalReference::IfcExternalReference(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternalReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcExternalReference* Ifc4x3_rc2::IfcExternalReferenceRelationship::RelatingReference() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcExternalReference>(true); }
void Ifc4x3_rc2::IfcExternalReferenceRelationship::setRelatingReference(::Ifc4x3_rc2::IfcExternalReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr Ifc4x3_rc2::IfcExternalReferenceRelationship::RelatedResourceObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcResourceObjectSelect >(); }
void Ifc4x3_rc2::IfcExternalReferenceRelationship::setRelatedResourceObjects(aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcExternalReferenceRelationship::declaration() const { return *IFC4X3_RC2_IfcExternalReferenceRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternalReferenceRelationship::Class() { return *IFC4X3_RC2_IfcExternalReferenceRelationship_type; }
Ifc4x3_rc2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternalReferenceRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExternalReferenceRelationship::IfcExternalReferenceRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcExternalReference* v3_RelatingReference, aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcExternalSpatialElement
boost::optional< ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Value > Ifc4x3_rc2::IfcExternalSpatialElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcExternalSpatialElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc2::IfcExternalSpatialElement::BoundedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary_type, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcExternalSpatialElement::declaration() const { return *IFC4X3_RC2_IfcExternalSpatialElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternalSpatialElement::Class() { return *IFC4X3_RC2_IfcExternalSpatialElement_type; }
Ifc4x3_rc2::IfcExternalSpatialElement::IfcExternalSpatialElement(IfcEntityInstanceData* e) : IfcExternalSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternalSpatialElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExternalSpatialElement::IfcExternalSpatialElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcExternalSpatialElementTypeEnum::Value > v9_PredefinedType) : IfcExternalSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcExternalSpatialStructureElement::declaration() const { return *IFC4X3_RC2_IfcExternalSpatialStructureElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternalSpatialStructureElement::Class() { return *IFC4X3_RC2_IfcExternalSpatialStructureElement_type; }
Ifc4x3_rc2::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(IfcEntityInstanceData* e) : IfcSpatialElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternalSpatialStructureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExternalSpatialStructureElement::IfcExternalSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcSpatialElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcExternallyDefinedHatchStyle::declaration() const { return *IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternallyDefinedHatchStyle::Class() { return *IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type; }
Ifc4x3_rc2::IfcExternallyDefinedHatchStyle::IfcExternallyDefinedHatchStyle(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternallyDefinedHatchStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcExternallyDefinedSurfaceStyle::declaration() const { return *IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternallyDefinedSurfaceStyle::Class() { return *IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type; }
Ifc4x3_rc2::IfcExternallyDefinedSurfaceStyle::IfcExternallyDefinedSurfaceStyle(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternallyDefinedSurfaceStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcExternallyDefinedTextFont::declaration() const { return *IFC4X3_RC2_IfcExternallyDefinedTextFont_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExternallyDefinedTextFont::Class() { return *IFC4X3_RC2_IfcExternallyDefinedTextFont_type; }
Ifc4x3_rc2::IfcExternallyDefinedTextFont::IfcExternallyDefinedTextFont(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExternallyDefinedTextFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcExtrudedAreaSolid::ExtrudedDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcExtrudedAreaSolid::setExtrudedDirection(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcExtrudedAreaSolid::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcExtrudedAreaSolid::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcExtrudedAreaSolid::declaration() const { return *IFC4X3_RC2_IfcExtrudedAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExtrudedAreaSolid::Class() { return *IFC4X3_RC2_IfcExtrudedAreaSolid_type; }
Ifc4x3_rc2::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExtrudedAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExtrudedAreaSolid::IfcExtrudedAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProfileDef* Ifc4x3_rc2::IfcExtrudedAreaSolidTapered::EndSweptArea() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcExtrudedAreaSolidTapered::setEndSweptArea(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcExtrudedAreaSolidTapered::declaration() const { return *IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcExtrudedAreaSolidTapered::Class() { return *IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type; }
Ifc4x3_rc2::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(IfcEntityInstanceData* e) : IfcExtrudedAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcExtrudedAreaSolidTapered_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcExtrudedAreaSolidTapered::IfcExtrudedAreaSolidTapered(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcDirection* v3_ExtrudedDirection, double v4_Depth, ::Ifc4x3_rc2::IfcProfileDef* v5_EndSweptArea) : IfcExtrudedAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFaceBound >::ptr Ifc4x3_rc2::IfcFace::Bounds() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcFaceBound >(); }
void Ifc4x3_rc2::IfcFace::setBounds(aggregate_of< ::Ifc4x3_rc2::IfcFaceBound >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }

::Ifc4x3_rc2::IfcTextureMap::list::ptr Ifc4x3_rc2::IfcFace::HasTextureMaps() const { return data_->getInverse(IFC4X3_RC2_IfcTextureMap_type, 2)->as<IfcTextureMap>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcFace::declaration() const { return *IFC4X3_RC2_IfcFace_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFace::Class() { return *IFC4X3_RC2_IfcFace_type; }
Ifc4x3_rc2::IfcFace::IfcFace(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFace::IfcFace(aggregate_of< ::Ifc4x3_rc2::IfcFaceBound >::ptr v1_Bounds) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFace_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Bounds)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcFaceBasedSurfaceModel
aggregate_of< ::Ifc4x3_rc2::IfcConnectedFaceSet >::ptr Ifc4x3_rc2::IfcFaceBasedSurfaceModel::FbsmFaces() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcConnectedFaceSet >(); }
void Ifc4x3_rc2::IfcFaceBasedSurfaceModel::setFbsmFaces(aggregate_of< ::Ifc4x3_rc2::IfcConnectedFaceSet >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFaceBasedSurfaceModel::declaration() const { return *IFC4X3_RC2_IfcFaceBasedSurfaceModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFaceBasedSurfaceModel::Class() { return *IFC4X3_RC2_IfcFaceBasedSurfaceModel_type; }
Ifc4x3_rc2::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFaceBasedSurfaceModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFaceBasedSurfaceModel::IfcFaceBasedSurfaceModel(aggregate_of< ::Ifc4x3_rc2::IfcConnectedFaceSet >::ptr v1_FbsmFaces) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFaceBasedSurfaceModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_FbsmFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcFaceBound
::Ifc4x3_rc2::IfcLoop* Ifc4x3_rc2::IfcFaceBound::Bound() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcLoop>(true); }
void Ifc4x3_rc2::IfcFaceBound::setBound(::Ifc4x3_rc2::IfcLoop* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
bool Ifc4x3_rc2::IfcFaceBound::Orientation() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcFaceBound::setOrientation(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFaceBound::declaration() const { return *IFC4X3_RC2_IfcFaceBound_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFaceBound::Class() { return *IFC4X3_RC2_IfcFaceBound_type; }
Ifc4x3_rc2::IfcFaceBound::IfcFaceBound(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFaceBound_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFaceBound::IfcFaceBound(::Ifc4x3_rc2::IfcLoop* v1_Bound, bool v2_Orientation) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFaceOuterBound::declaration() const { return *IFC4X3_RC2_IfcFaceOuterBound_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFaceOuterBound::Class() { return *IFC4X3_RC2_IfcFaceOuterBound_type; }
Ifc4x3_rc2::IfcFaceOuterBound::IfcFaceOuterBound(IfcEntityInstanceData* e) : IfcFaceBound((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFaceOuterBound_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFaceOuterBound::IfcFaceOuterBound(::Ifc4x3_rc2::IfcLoop* v1_Bound, bool v2_Orientation) : IfcFaceBound((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurface* Ifc4x3_rc2::IfcFaceSurface::FaceSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcFaceSurface::setFaceSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
bool Ifc4x3_rc2::IfcFaceSurface::SameSense() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcFaceSurface::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFaceSurface::declaration() const { return *IFC4X3_RC2_IfcFaceSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFaceSurface::Class() { return *IFC4X3_RC2_IfcFaceSurface_type; }
Ifc4x3_rc2::IfcFaceSurface::IfcFaceSurface(IfcEntityInstanceData* e) : IfcFace((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFaceSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFaceSurface::IfcFaceSurface(aggregate_of< ::Ifc4x3_rc2::IfcFaceBound >::ptr v1_Bounds, ::Ifc4x3_rc2::IfcSurface* v2_FaceSurface, bool v3_SameSense) : IfcFace((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFacetedBrep::declaration() const { return *IFC4X3_RC2_IfcFacetedBrep_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFacetedBrep::Class() { return *IFC4X3_RC2_IfcFacetedBrep_type; }
Ifc4x3_rc2::IfcFacetedBrep::IfcFacetedBrep(IfcEntityInstanceData* e) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFacetedBrep_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFacetedBrep::IfcFacetedBrep(::Ifc4x3_rc2::IfcClosedShell* v1_Outer) : IfcManifoldSolidBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcFacetedBrep_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);} }

// Function implementations for IfcFacetedBrepWithVoids
aggregate_of< ::Ifc4x3_rc2::IfcClosedShell >::ptr Ifc4x3_rc2::IfcFacetedBrepWithVoids::Voids() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcClosedShell >(); }
void Ifc4x3_rc2::IfcFacetedBrepWithVoids::setVoids(aggregate_of< ::Ifc4x3_rc2::IfcClosedShell >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFacetedBrepWithVoids::declaration() const { return *IFC4X3_RC2_IfcFacetedBrepWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFacetedBrepWithVoids::Class() { return *IFC4X3_RC2_IfcFacetedBrepWithVoids_type; }
Ifc4x3_rc2::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(IfcEntityInstanceData* e) : IfcFacetedBrep((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFacetedBrepWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFacetedBrepWithVoids::IfcFacetedBrepWithVoids(::Ifc4x3_rc2::IfcClosedShell* v1_Outer, aggregate_of< ::Ifc4x3_rc2::IfcClosedShell >::ptr v2_Voids) : IfcFacetedBrep((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFacility::declaration() const { return *IFC4X3_RC2_IfcFacility_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFacility::Class() { return *IFC4X3_RC2_IfcFacility_type; }
Ifc4x3_rc2::IfcFacility::IfcFacility(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFacility_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFacility::IfcFacility(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFacilityPartTypeSelect* Ifc4x3_rc2::IfcFacilityPart::PredefinedType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcFacilityPartTypeSelect>(true); }
void Ifc4x3_rc2::IfcFacilityPart::setPredefinedType(::Ifc4x3_rc2::IfcFacilityPartTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcFacilityUsageEnum::Value Ifc4x3_rc2::IfcFacilityPart::UsageType() const {  return ::Ifc4x3_rc2::IfcFacilityUsageEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcFacilityPart::setUsageType(::Ifc4x3_rc2::IfcFacilityUsageEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFacilityUsageEnum::ToString(v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFacilityPart::declaration() const { return *IFC4X3_RC2_IfcFacilityPart_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFacilityPart::Class() { return *IFC4X3_RC2_IfcFacilityPart_type; }
Ifc4x3_rc2::IfcFacilityPart::IfcFacilityPart(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFacilityPart_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFacilityPart::IfcFacilityPart(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_rc2::IfcFacilityPartTypeSelect* v10_PredefinedType, ::Ifc4x3_rc2::IfcFacilityUsageEnum::Value v11_UsageType) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFacilityUsageEnum::ToString(v11_UsageType))));data_->setArgument(10,attr);} }

// Function implementations for IfcFailureConnectionCondition
boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::TensionFailureX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::TensionFailureY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::TensionFailureZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcFailureConnectionCondition::setTensionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::CompressionFailureX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::CompressionFailureY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcFailureConnectionCondition::CompressionFailureZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcFailureConnectionCondition::setCompressionFailureZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFailureConnectionCondition::declaration() const { return *IFC4X3_RC2_IfcFailureConnectionCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFailureConnectionCondition::Class() { return *IFC4X3_RC2_IfcFailureConnectionCondition_type; }
Ifc4x3_rc2::IfcFailureConnectionCondition::IfcFailureConnectionCondition(IfcEntityInstanceData* e) : IfcStructuralConnectionCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFailureConnectionCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcFanTypeEnum::Value > Ifc4x3_rc2::IfcFan::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFanTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFan::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFanTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFan::declaration() const { return *IFC4X3_RC2_IfcFan_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFan::Class() { return *IFC4X3_RC2_IfcFan_type; }
Ifc4x3_rc2::IfcFan::IfcFan(IfcEntityInstanceData* e) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFan_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFan::IfcFan(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFanTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFanTypeEnum::Value Ifc4x3_rc2::IfcFanType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFanTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFanType::setPredefinedType(::Ifc4x3_rc2::IfcFanTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFanTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFanType::declaration() const { return *IFC4X3_RC2_IfcFanType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFanType::Class() { return *IFC4X3_RC2_IfcFanType_type; }
Ifc4x3_rc2::IfcFanType::IfcFanType(IfcEntityInstanceData* e) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFanType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFanType::IfcFanType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFanTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFanTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFastener
boost::optional< ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value > Ifc4x3_rc2::IfcFastener::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFastenerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFastenerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFastener::declaration() const { return *IFC4X3_RC2_IfcFastener_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFastener::Class() { return *IFC4X3_RC2_IfcFastener_type; }
Ifc4x3_rc2::IfcFastener::IfcFastener(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFastener_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFastener::IfcFastener(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFastenerTypeEnum::Value Ifc4x3_rc2::IfcFastenerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFastenerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFastenerType::setPredefinedType(::Ifc4x3_rc2::IfcFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFastenerType::declaration() const { return *IFC4X3_RC2_IfcFastenerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFastenerType::Class() { return *IFC4X3_RC2_IfcFastenerType_type; }
Ifc4x3_rc2::IfcFastenerType::IfcFastenerType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFastenerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFastenerType::IfcFastenerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFastenerTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFastenerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFeatureElement


const IfcParse::entity& Ifc4x3_rc2::IfcFeatureElement::declaration() const { return *IFC4X3_RC2_IfcFeatureElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFeatureElement::Class() { return *IFC4X3_RC2_IfcFeatureElement_type; }
Ifc4x3_rc2::IfcFeatureElement::IfcFeatureElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFeatureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFeatureElement::IfcFeatureElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelProjectsElement::list::ptr Ifc4x3_rc2::IfcFeatureElementAddition::ProjectsElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelProjectsElement_type, 5)->as<IfcRelProjectsElement>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcFeatureElementAddition::declaration() const { return *IFC4X3_RC2_IfcFeatureElementAddition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFeatureElementAddition::Class() { return *IFC4X3_RC2_IfcFeatureElementAddition_type; }
Ifc4x3_rc2::IfcFeatureElementAddition::IfcFeatureElementAddition(IfcEntityInstanceData* e) : IfcFeatureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFeatureElementAddition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFeatureElementAddition::IfcFeatureElementAddition(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelVoidsElement::list::ptr Ifc4x3_rc2::IfcFeatureElementSubtraction::VoidsElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelVoidsElement_type, 5)->as<IfcRelVoidsElement>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcFeatureElementSubtraction::declaration() const { return *IFC4X3_RC2_IfcFeatureElementSubtraction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFeatureElementSubtraction::Class() { return *IFC4X3_RC2_IfcFeatureElementSubtraction_type; }
Ifc4x3_rc2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(IfcEntityInstanceData* e) : IfcFeatureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFeatureElementSubtraction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFeatureElementSubtraction::IfcFeatureElementSubtraction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcFeatureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcFillStyleSelect >::ptr Ifc4x3_rc2::IfcFillAreaStyle::FillStyles() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcFillStyleSelect >(); }
void Ifc4x3_rc2::IfcFillAreaStyle::setFillStyles(aggregate_of< ::Ifc4x3_rc2::IfcFillStyleSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcFillAreaStyle::ModelOrDraughting() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcFillAreaStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyle::declaration() const { return *IFC4X3_RC2_IfcFillAreaStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyle::Class() { return *IFC4X3_RC2_IfcFillAreaStyle_type; }
Ifc4x3_rc2::IfcFillAreaStyle::IfcFillAreaStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFillAreaStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFillAreaStyle::IfcFillAreaStyle(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_rc2::IfcFillStyleSelect >::ptr v2_FillStyles, boost::optional< bool > v3_ModelOrDraughting) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcCurveStyle* Ifc4x3_rc2::IfcFillAreaStyleHatching::HatchLineAppearance() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurveStyle>(true); }
void Ifc4x3_rc2::IfcFillAreaStyleHatching::setHatchLineAppearance(::Ifc4x3_rc2::IfcCurveStyle* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcHatchLineDistanceSelect* Ifc4x3_rc2::IfcFillAreaStyleHatching::StartOfNextHatchLine() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcHatchLineDistanceSelect>(true); }
void Ifc4x3_rc2::IfcFillAreaStyleHatching::setStartOfNextHatchLine(::Ifc4x3_rc2::IfcHatchLineDistanceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcFillAreaStyleHatching::PointOfReferenceHatchLine() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcFillAreaStyleHatching::setPointOfReferenceHatchLine(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcFillAreaStyleHatching::PatternStart() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcFillAreaStyleHatching::setPatternStart(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcFillAreaStyleHatching::HatchLineAngle() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcFillAreaStyleHatching::setHatchLineAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyleHatching::declaration() const { return *IFC4X3_RC2_IfcFillAreaStyleHatching_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyleHatching::Class() { return *IFC4X3_RC2_IfcFillAreaStyleHatching_type; }
Ifc4x3_rc2::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFillAreaStyleHatching_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFillAreaStyleHatching::IfcFillAreaStyleHatching(::Ifc4x3_rc2::IfcCurveStyle* v1_HatchLineAppearance, ::Ifc4x3_rc2::IfcHatchLineDistanceSelect* v2_StartOfNextHatchLine, ::Ifc4x3_rc2::IfcCartesianPoint* v3_PointOfReferenceHatchLine, ::Ifc4x3_rc2::IfcCartesianPoint* v4_PatternStart, double v5_HatchLineAngle) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcVector >::ptr Ifc4x3_rc2::IfcFillAreaStyleTiles::TilingPattern() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcVector >(); }
void Ifc4x3_rc2::IfcFillAreaStyleTiles::setTilingPattern(aggregate_of< ::Ifc4x3_rc2::IfcVector >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcStyledItem >::ptr Ifc4x3_rc2::IfcFillAreaStyleTiles::Tiles() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcStyledItem >(); }
void Ifc4x3_rc2::IfcFillAreaStyleTiles::setTiles(aggregate_of< ::Ifc4x3_rc2::IfcStyledItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcFillAreaStyleTiles::TilingScale() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcFillAreaStyleTiles::setTilingScale(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyleTiles::declaration() const { return *IFC4X3_RC2_IfcFillAreaStyleTiles_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFillAreaStyleTiles::Class() { return *IFC4X3_RC2_IfcFillAreaStyleTiles_type; }
Ifc4x3_rc2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFillAreaStyleTiles_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFillAreaStyleTiles::IfcFillAreaStyleTiles(aggregate_of< ::Ifc4x3_rc2::IfcVector >::ptr v1_TilingPattern, aggregate_of< ::Ifc4x3_rc2::IfcStyledItem >::ptr v2_Tiles, double v3_TilingScale) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFilterTypeEnum::Value > Ifc4x3_rc2::IfcFilter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFilterTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFilter::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFilterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFilterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFilter::declaration() const { return *IFC4X3_RC2_IfcFilter_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFilter::Class() { return *IFC4X3_RC2_IfcFilter_type; }
Ifc4x3_rc2::IfcFilter::IfcFilter(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFilter_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFilter::IfcFilter(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFilterTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFilterTypeEnum::Value Ifc4x3_rc2::IfcFilterType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFilterTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFilterType::setPredefinedType(::Ifc4x3_rc2::IfcFilterTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFilterTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFilterType::declaration() const { return *IFC4X3_RC2_IfcFilterType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFilterType::Class() { return *IFC4X3_RC2_IfcFilterType_type; }
Ifc4x3_rc2::IfcFilterType::IfcFilterType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFilterType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFilterType::IfcFilterType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFilterTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFilterTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFireSuppressionTerminal
boost::optional< ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value > Ifc4x3_rc2::IfcFireSuppressionTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFireSuppressionTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFireSuppressionTerminal::declaration() const { return *IFC4X3_RC2_IfcFireSuppressionTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFireSuppressionTerminal::Class() { return *IFC4X3_RC2_IfcFireSuppressionTerminal_type; }
Ifc4x3_rc2::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFireSuppressionTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFireSuppressionTerminal::IfcFireSuppressionTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFireSuppressionTerminalTypeEnum::Value Ifc4x3_rc2::IfcFireSuppressionTerminalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFireSuppressionTerminalType::setPredefinedType(::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFireSuppressionTerminalType::declaration() const { return *IFC4X3_RC2_IfcFireSuppressionTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFireSuppressionTerminalType::Class() { return *IFC4X3_RC2_IfcFireSuppressionTerminalType_type; }
Ifc4x3_rc2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFireSuppressionTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFireSuppressionTerminalType::IfcFireSuppressionTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFireSuppressionTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFireSuppressionTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFixedReferenceSweptAreaSolid
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid::FixedReference() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid::setFixedReference(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid::declaration() const { return *IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid::Class() { return *IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type; }
Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(IfcEntityInstanceData* e) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFixedReferenceSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFixedReferenceSweptAreaSolid::IfcFixedReferenceSweptAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcCurve* v3_Directrix, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_rc2::IfcDirection* v6_FixedReference) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartParam));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndParam));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_rc2::IfcFlowController::declaration() const { return *IFC4X3_RC2_IfcFlowController_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowController::Class() { return *IFC4X3_RC2_IfcFlowController_type; }
Ifc4x3_rc2::IfcFlowController::IfcFlowController(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowController_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowController::IfcFlowController(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowControllerType::declaration() const { return *IFC4X3_RC2_IfcFlowControllerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowControllerType::Class() { return *IFC4X3_RC2_IfcFlowControllerType_type; }
Ifc4x3_rc2::IfcFlowControllerType::IfcFlowControllerType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowControllerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowControllerType::IfcFlowControllerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowFitting::declaration() const { return *IFC4X3_RC2_IfcFlowFitting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowFitting::Class() { return *IFC4X3_RC2_IfcFlowFitting_type; }
Ifc4x3_rc2::IfcFlowFitting::IfcFlowFitting(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowFitting::IfcFlowFitting(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowFittingType::declaration() const { return *IFC4X3_RC2_IfcFlowFittingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowFittingType::Class() { return *IFC4X3_RC2_IfcFlowFittingType_type; }
Ifc4x3_rc2::IfcFlowFittingType::IfcFlowFittingType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowFittingType::IfcFlowFittingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowInstrumentTypeEnum::Value > Ifc4x3_rc2::IfcFlowInstrument::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFlowInstrument::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFlowInstrument::declaration() const { return *IFC4X3_RC2_IfcFlowInstrument_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowInstrument::Class() { return *IFC4X3_RC2_IfcFlowInstrument_type; }
Ifc4x3_rc2::IfcFlowInstrument::IfcFlowInstrument(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowInstrument_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowInstrument::IfcFlowInstrument(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFlowInstrumentTypeEnum::Value Ifc4x3_rc2::IfcFlowInstrumentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFlowInstrumentType::setPredefinedType(::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFlowInstrumentType::declaration() const { return *IFC4X3_RC2_IfcFlowInstrumentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowInstrumentType::Class() { return *IFC4X3_RC2_IfcFlowInstrumentType_type; }
Ifc4x3_rc2::IfcFlowInstrumentType::IfcFlowInstrumentType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowInstrumentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowInstrumentType::IfcFlowInstrumentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFlowInstrumentTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowInstrumentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFlowMeter
boost::optional< ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value > Ifc4x3_rc2::IfcFlowMeter::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFlowMeter::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFlowMeterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFlowMeter::declaration() const { return *IFC4X3_RC2_IfcFlowMeter_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowMeter::Class() { return *IFC4X3_RC2_IfcFlowMeter_type; }
Ifc4x3_rc2::IfcFlowMeter::IfcFlowMeter(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowMeter_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowMeter::IfcFlowMeter(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFlowMeterTypeEnum::Value Ifc4x3_rc2::IfcFlowMeterType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFlowMeterType::setPredefinedType(::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFlowMeterTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFlowMeterType::declaration() const { return *IFC4X3_RC2_IfcFlowMeterType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowMeterType::Class() { return *IFC4X3_RC2_IfcFlowMeterType_type; }
Ifc4x3_rc2::IfcFlowMeterType::IfcFlowMeterType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowMeterType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowMeterType::IfcFlowMeterType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFlowMeterTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowMeterTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFlowMovingDevice


const IfcParse::entity& Ifc4x3_rc2::IfcFlowMovingDevice::declaration() const { return *IFC4X3_RC2_IfcFlowMovingDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowMovingDevice::Class() { return *IFC4X3_RC2_IfcFlowMovingDevice_type; }
Ifc4x3_rc2::IfcFlowMovingDevice::IfcFlowMovingDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowMovingDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowMovingDevice::IfcFlowMovingDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowMovingDeviceType::declaration() const { return *IFC4X3_RC2_IfcFlowMovingDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowMovingDeviceType::Class() { return *IFC4X3_RC2_IfcFlowMovingDeviceType_type; }
Ifc4x3_rc2::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowMovingDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowMovingDeviceType::IfcFlowMovingDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowSegment::declaration() const { return *IFC4X3_RC2_IfcFlowSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowSegment::Class() { return *IFC4X3_RC2_IfcFlowSegment_type; }
Ifc4x3_rc2::IfcFlowSegment::IfcFlowSegment(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowSegment::IfcFlowSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowSegmentType::declaration() const { return *IFC4X3_RC2_IfcFlowSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowSegmentType::Class() { return *IFC4X3_RC2_IfcFlowSegmentType_type; }
Ifc4x3_rc2::IfcFlowSegmentType::IfcFlowSegmentType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowSegmentType::IfcFlowSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowStorageDevice::declaration() const { return *IFC4X3_RC2_IfcFlowStorageDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowStorageDevice::Class() { return *IFC4X3_RC2_IfcFlowStorageDevice_type; }
Ifc4x3_rc2::IfcFlowStorageDevice::IfcFlowStorageDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowStorageDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowStorageDevice::IfcFlowStorageDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowStorageDeviceType::declaration() const { return *IFC4X3_RC2_IfcFlowStorageDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowStorageDeviceType::Class() { return *IFC4X3_RC2_IfcFlowStorageDeviceType_type; }
Ifc4x3_rc2::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowStorageDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowStorageDeviceType::IfcFlowStorageDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowTerminal::declaration() const { return *IFC4X3_RC2_IfcFlowTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowTerminal::Class() { return *IFC4X3_RC2_IfcFlowTerminal_type; }
Ifc4x3_rc2::IfcFlowTerminal::IfcFlowTerminal(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowTerminal::IfcFlowTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowTerminalType::declaration() const { return *IFC4X3_RC2_IfcFlowTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowTerminalType::Class() { return *IFC4X3_RC2_IfcFlowTerminalType_type; }
Ifc4x3_rc2::IfcFlowTerminalType::IfcFlowTerminalType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowTerminalType::IfcFlowTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowTreatmentDevice::declaration() const { return *IFC4X3_RC2_IfcFlowTreatmentDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowTreatmentDevice::Class() { return *IFC4X3_RC2_IfcFlowTreatmentDevice_type; }
Ifc4x3_rc2::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(IfcEntityInstanceData* e) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowTreatmentDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowTreatmentDevice::IfcFlowTreatmentDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcDistributionFlowElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFlowTreatmentDeviceType::declaration() const { return *IFC4X3_RC2_IfcFlowTreatmentDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFlowTreatmentDeviceType::Class() { return *IFC4X3_RC2_IfcFlowTreatmentDeviceType_type; }
Ifc4x3_rc2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(IfcEntityInstanceData* e) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFlowTreatmentDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFlowTreatmentDeviceType::IfcFlowTreatmentDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcDistributionFlowElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFootingTypeEnum::Value > Ifc4x3_rc2::IfcFooting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFootingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFooting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFootingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFootingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFooting::declaration() const { return *IFC4X3_RC2_IfcFooting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFooting::Class() { return *IFC4X3_RC2_IfcFooting_type; }
Ifc4x3_rc2::IfcFooting::IfcFooting(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFooting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFooting::IfcFooting(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFootingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcFootingTypeEnum::Value Ifc4x3_rc2::IfcFootingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcFootingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFootingType::setPredefinedType(::Ifc4x3_rc2::IfcFootingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcFootingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFootingType::declaration() const { return *IFC4X3_RC2_IfcFootingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFootingType::Class() { return *IFC4X3_RC2_IfcFootingType_type; }
Ifc4x3_rc2::IfcFootingType::IfcFootingType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFootingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFootingType::IfcFootingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcFootingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFootingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcFurnishingElement


const IfcParse::entity& Ifc4x3_rc2::IfcFurnishingElement::declaration() const { return *IFC4X3_RC2_IfcFurnishingElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFurnishingElement::Class() { return *IFC4X3_RC2_IfcFurnishingElement_type; }
Ifc4x3_rc2::IfcFurnishingElement::IfcFurnishingElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFurnishingElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFurnishingElement::IfcFurnishingElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFurnishingElementType::declaration() const { return *IFC4X3_RC2_IfcFurnishingElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFurnishingElementType::Class() { return *IFC4X3_RC2_IfcFurnishingElementType_type; }
Ifc4x3_rc2::IfcFurnishingElementType::IfcFurnishingElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFurnishingElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFurnishingElementType::IfcFurnishingElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcFurnitureTypeEnum::Value > Ifc4x3_rc2::IfcFurniture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcFurniture::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFurniture::declaration() const { return *IFC4X3_RC2_IfcFurniture_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFurniture::Class() { return *IFC4X3_RC2_IfcFurniture_type; }
Ifc4x3_rc2::IfcFurniture::IfcFurniture(IfcEntityInstanceData* e) : IfcFurnishingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFurniture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFurniture::IfcFurniture(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAssemblyPlaceEnum::Value Ifc4x3_rc2::IfcFurnitureType::AssemblyPlace() const {  return ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcFurnitureType::setAssemblyPlace(::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAssemblyPlaceEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > Ifc4x3_rc2::IfcFurnitureType::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcFurnitureTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcFurnitureType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcFurnitureTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcFurnitureType::declaration() const { return *IFC4X3_RC2_IfcFurnitureType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcFurnitureType::Class() { return *IFC4X3_RC2_IfcFurnitureType_type; }
Ifc4x3_rc2::IfcFurnitureType::IfcFurnitureType(IfcEntityInstanceData* e) : IfcFurnishingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcFurnitureType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcFurnitureType::IfcFurnitureType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcAssemblyPlaceEnum::Value v10_AssemblyPlace, boost::optional< ::Ifc4x3_rc2::IfcFurnitureTypeEnum::Value > v11_PredefinedType) : IfcFurnishingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcGeographicElementTypeEnum::Value > Ifc4x3_rc2::IfcGeographicElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcGeographicElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcGeographicElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGeographicElement::declaration() const { return *IFC4X3_RC2_IfcGeographicElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeographicElement::Class() { return *IFC4X3_RC2_IfcGeographicElement_type; }
Ifc4x3_rc2::IfcGeographicElement::IfcGeographicElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeographicElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeographicElement::IfcGeographicElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value > v9_PredefinedType) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGeographicElementTypeEnum::Value Ifc4x3_rc2::IfcGeographicElementType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcGeographicElementType::setPredefinedType(::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcGeographicElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGeographicElementType::declaration() const { return *IFC4X3_RC2_IfcGeographicElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeographicElementType::Class() { return *IFC4X3_RC2_IfcGeographicElementType_type; }
Ifc4x3_rc2::IfcGeographicElementType::IfcGeographicElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeographicElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeographicElementType::IfcGeographicElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value v10_PredefinedType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGeographicElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcGeometricCurveSet


const IfcParse::entity& Ifc4x3_rc2::IfcGeometricCurveSet::declaration() const { return *IFC4X3_RC2_IfcGeometricCurveSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeometricCurveSet::Class() { return *IFC4X3_RC2_IfcGeometricCurveSet_type; }
Ifc4x3_rc2::IfcGeometricCurveSet::IfcGeometricCurveSet(IfcEntityInstanceData* e) : IfcGeometricSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeometricCurveSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeometricCurveSet::IfcGeometricCurveSet(aggregate_of< ::Ifc4x3_rc2::IfcGeometricSetSelect >::ptr v1_Elements) : IfcGeometricSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeometricCurveSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Elements)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcGeometricRepresentationContext
int Ifc4x3_rc2::IfcGeometricRepresentationContext::CoordinateSpaceDimension() const {  int v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcGeometricRepresentationContext::setCoordinateSpaceDimension(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcGeometricRepresentationContext::Precision() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcGeometricRepresentationContext::setPrecision(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcGeometricRepresentationContext::WorldCoordinateSystem() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcGeometricRepresentationContext::setWorldCoordinateSystem(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcGeometricRepresentationContext::TrueNorth() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcGeometricRepresentationContext::setTrueNorth(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }

::Ifc4x3_rc2::IfcGeometricRepresentationSubContext::list::ptr Ifc4x3_rc2::IfcGeometricRepresentationContext::HasSubContexts() const { return data_->getInverse(IFC4X3_RC2_IfcGeometricRepresentationSubContext_type, 6)->as<IfcGeometricRepresentationSubContext>(); }
::Ifc4x3_rc2::IfcCoordinateOperation::list::ptr Ifc4x3_rc2::IfcGeometricRepresentationContext::HasCoordinateOperation() const { return data_->getInverse(IFC4X3_RC2_IfcCoordinateOperation_type, 0)->as<IfcCoordinateOperation>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcGeometricRepresentationContext::declaration() const { return *IFC4X3_RC2_IfcGeometricRepresentationContext_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeometricRepresentationContext::Class() { return *IFC4X3_RC2_IfcGeometricRepresentationContext_type; }
Ifc4x3_rc2::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(IfcEntityInstanceData* e) : IfcRepresentationContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeometricRepresentationContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeometricRepresentationContext::IfcGeometricRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, int v3_CoordinateSpaceDimension, boost::optional< double > v4_Precision, ::Ifc4x3_rc2::IfcAxis2Placement* v5_WorldCoordinateSystem, ::Ifc4x3_rc2::IfcDirection* v6_TrueNorth) : IfcRepresentationContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGeometricRepresentationItem::declaration() const { return *IFC4X3_RC2_IfcGeometricRepresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeometricRepresentationItem::Class() { return *IFC4X3_RC2_IfcGeometricRepresentationItem_type; }
Ifc4x3_rc2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeometricRepresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeometricRepresentationItem::IfcGeometricRepresentationItem() : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeometricRepresentationItem_type);  }

// Function implementations for IfcGeometricRepresentationSubContext
::Ifc4x3_rc2::IfcGeometricRepresentationContext* Ifc4x3_rc2::IfcGeometricRepresentationSubContext::ParentContext() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcGeometricRepresentationContext>(true); }
void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setParentContext(::Ifc4x3_rc2::IfcGeometricRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcGeometricRepresentationSubContext::TargetScale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setTargetScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcGeometricProjectionEnum::Value Ifc4x3_rc2::IfcGeometricRepresentationSubContext::TargetView() const {  return ::Ifc4x3_rc2::IfcGeometricProjectionEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setTargetView(::Ifc4x3_rc2::IfcGeometricProjectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcGeometricProjectionEnum::ToString(v)));data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcGeometricRepresentationSubContext::UserDefinedTargetView() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcGeometricRepresentationSubContext::setUserDefinedTargetView(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGeometricRepresentationSubContext::declaration() const { return *IFC4X3_RC2_IfcGeometricRepresentationSubContext_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeometricRepresentationSubContext::Class() { return *IFC4X3_RC2_IfcGeometricRepresentationSubContext_type; }
Ifc4x3_rc2::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(IfcEntityInstanceData* e) : IfcGeometricRepresentationContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeometricRepresentationSubContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeometricRepresentationSubContext::IfcGeometricRepresentationSubContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType, ::Ifc4x3_rc2::IfcGeometricRepresentationContext* v7_ParentContext, boost::optional< double > v8_TargetScale, ::Ifc4x3_rc2::IfcGeometricProjectionEnum::Value v9_TargetView, boost::optional< std::string > v10_UserDefinedTargetView) : IfcGeometricRepresentationContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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< ::Ifc4x3_rc2::IfcGeometricSetSelect >::ptr Ifc4x3_rc2::IfcGeometricSet::Elements() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcGeometricSetSelect >(); }
void Ifc4x3_rc2::IfcGeometricSet::setElements(aggregate_of< ::Ifc4x3_rc2::IfcGeometricSetSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGeometricSet::declaration() const { return *IFC4X3_RC2_IfcGeometricSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeometricSet::Class() { return *IFC4X3_RC2_IfcGeometricSet_type; }
Ifc4x3_rc2::IfcGeometricSet::IfcGeometricSet(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeometricSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeometricSet::IfcGeometricSet(aggregate_of< ::Ifc4x3_rc2::IfcGeometricSetSelect >::ptr v1_Elements) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGeometricSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Elements)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcGeomodel


const IfcParse::entity& Ifc4x3_rc2::IfcGeomodel::declaration() const { return *IFC4X3_RC2_IfcGeomodel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeomodel::Class() { return *IFC4X3_RC2_IfcGeomodel_type; }
Ifc4x3_rc2::IfcGeomodel::IfcGeomodel(IfcEntityInstanceData* e) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeomodel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeomodel::IfcGeomodel(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGeoslice::declaration() const { return *IFC4X3_RC2_IfcGeoslice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeoslice::Class() { return *IFC4X3_RC2_IfcGeoslice_type; }
Ifc4x3_rc2::IfcGeoslice::IfcGeoslice(IfcEntityInstanceData* e) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeoslice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeoslice::IfcGeoslice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalAssembly((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGeotechnicalAssembly::declaration() const { return *IFC4X3_RC2_IfcGeotechnicalAssembly_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeotechnicalAssembly::Class() { return *IFC4X3_RC2_IfcGeotechnicalAssembly_type; }
Ifc4x3_rc2::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(IfcEntityInstanceData* e) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeotechnicalAssembly_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeotechnicalAssembly::IfcGeotechnicalAssembly(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGeotechnicalElement::declaration() const { return *IFC4X3_RC2_IfcGeotechnicalElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeotechnicalElement::Class() { return *IFC4X3_RC2_IfcGeotechnicalElement_type; }
Ifc4x3_rc2::IfcGeotechnicalElement::IfcGeotechnicalElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeotechnicalElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeotechnicalElement::IfcGeotechnicalElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGeotechnicalStratum::declaration() const { return *IFC4X3_RC2_IfcGeotechnicalStratum_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGeotechnicalStratum::Class() { return *IFC4X3_RC2_IfcGeotechnicalStratum_type; }
Ifc4x3_rc2::IfcGeotechnicalStratum::IfcGeotechnicalStratum(IfcEntityInstanceData* e) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGeotechnicalStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGeotechnicalStratum::IfcGeotechnicalStratum(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcGradientCurve
::Ifc4x3_rc2::IfcBoundedCurve* Ifc4x3_rc2::IfcGradientCurve::BaseCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcBoundedCurve>(true); }
void Ifc4x3_rc2::IfcGradientCurve::setBaseCurve(::Ifc4x3_rc2::IfcBoundedCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCurveSegment >::ptr Ifc4x3_rc2::IfcGradientCurve::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcCurveSegment >(); }
void Ifc4x3_rc2::IfcGradientCurve::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcCurveSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcGradientCurve::EndPoint() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcGradientCurve::setEndPoint(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGradientCurve::declaration() const { return *IFC4X3_RC2_IfcGradientCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGradientCurve::Class() { return *IFC4X3_RC2_IfcGradientCurve_type; }
Ifc4x3_rc2::IfcGradientCurve::IfcGradientCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGradientCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGradientCurve::IfcGradientCurve(::Ifc4x3_rc2::IfcBoundedCurve* v1_BaseCurve, aggregate_of< ::Ifc4x3_rc2::IfcCurveSegment >::ptr v2_Segments, ::Ifc4x3_rc2::IfcCartesianPoint* v3_EndPoint) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcGradientCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BaseCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Segments)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_EndPoint));data_->setArgument(2,attr);} }

// Function implementations for IfcGrid
aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr Ifc4x3_rc2::IfcGrid::UAxes() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcGridAxis >(); }
void Ifc4x3_rc2::IfcGrid::setUAxes(aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr Ifc4x3_rc2::IfcGrid::VAxes() const {  aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcGridAxis >(); }
void Ifc4x3_rc2::IfcGrid::setVAxes(aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr > Ifc4x3_rc2::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_rc2::IfcGridAxis >(); }
void Ifc4x3_rc2::IfcGrid::setWAxes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcGridTypeEnum::Value > Ifc4x3_rc2::IfcGrid::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcGridTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcGrid::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcGridTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcGridTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGrid::declaration() const { return *IFC4X3_RC2_IfcGrid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGrid::Class() { return *IFC4X3_RC2_IfcGrid_type; }
Ifc4x3_rc2::IfcGrid::IfcGrid(IfcEntityInstanceData* e) : IfcPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGrid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGrid::IfcGrid(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v8_UAxes, aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v9_VAxes, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr > v10_WAxes, boost::optional< ::Ifc4x3_rc2::IfcGridTypeEnum::Value > v11_PredefinedType) : IfcPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGridAxis::AxisTag() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcGridAxis::setAxisTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcGridAxis::AxisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcGridAxis::setAxisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
bool Ifc4x3_rc2::IfcGridAxis::SameSense() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcGridAxis::setSameSense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }

::Ifc4x3_rc2::IfcGrid::list::ptr Ifc4x3_rc2::IfcGridAxis::PartOfW() const { return data_->getInverse(IFC4X3_RC2_IfcGrid_type, 9)->as<IfcGrid>(); }
::Ifc4x3_rc2::IfcGrid::list::ptr Ifc4x3_rc2::IfcGridAxis::PartOfV() const { return data_->getInverse(IFC4X3_RC2_IfcGrid_type, 8)->as<IfcGrid>(); }
::Ifc4x3_rc2::IfcGrid::list::ptr Ifc4x3_rc2::IfcGridAxis::PartOfU() const { return data_->getInverse(IFC4X3_RC2_IfcGrid_type, 7)->as<IfcGrid>(); }
::Ifc4x3_rc2::IfcVirtualGridIntersection::list::ptr Ifc4x3_rc2::IfcGridAxis::HasIntersections() const { return data_->getInverse(IFC4X3_RC2_IfcVirtualGridIntersection_type, 0)->as<IfcVirtualGridIntersection>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcGridAxis::declaration() const { return *IFC4X3_RC2_IfcGridAxis_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGridAxis::Class() { return *IFC4X3_RC2_IfcGridAxis_type; }
Ifc4x3_rc2::IfcGridAxis::IfcGridAxis(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGridAxis_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGridAxis::IfcGridAxis(boost::optional< std::string > v1_AxisTag, ::Ifc4x3_rc2::IfcCurve* v2_AxisCurve, bool v3_SameSense) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcVirtualGridIntersection* Ifc4x3_rc2::IfcGridPlacement::PlacementLocation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcVirtualGridIntersection>(true); }
void Ifc4x3_rc2::IfcGridPlacement::setPlacementLocation(::Ifc4x3_rc2::IfcVirtualGridIntersection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcGridPlacementDirectionSelect* Ifc4x3_rc2::IfcGridPlacement::PlacementRefDirection() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcGridPlacementDirectionSelect>(true); }
void Ifc4x3_rc2::IfcGridPlacement::setPlacementRefDirection(::Ifc4x3_rc2::IfcGridPlacementDirectionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcGridPlacement::declaration() const { return *IFC4X3_RC2_IfcGridPlacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGridPlacement::Class() { return *IFC4X3_RC2_IfcGridPlacement_type; }
Ifc4x3_rc2::IfcGridPlacement::IfcGridPlacement(IfcEntityInstanceData* e) : IfcObjectPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGridPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGridPlacement::IfcGridPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc2::IfcVirtualGridIntersection* v2_PlacementLocation, ::Ifc4x3_rc2::IfcGridPlacementDirectionSelect* v3_PlacementRefDirection) : IfcObjectPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelAssignsToGroup::list::ptr Ifc4x3_rc2::IfcGroup::IsGroupedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToGroup_type, 6)->as<IfcRelAssignsToGroup>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcGroup::declaration() const { return *IFC4X3_RC2_IfcGroup_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcGroup::Class() { return *IFC4X3_RC2_IfcGroup_type; }
Ifc4x3_rc2::IfcGroup::IfcGroup(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcGroup::IfcGroup(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcSurface* Ifc4x3_rc2::IfcHalfSpaceSolid::BaseSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcHalfSpaceSolid::setBaseSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
bool Ifc4x3_rc2::IfcHalfSpaceSolid::AgreementFlag() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcHalfSpaceSolid::setAgreementFlag(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcHalfSpaceSolid::declaration() const { return *IFC4X3_RC2_IfcHalfSpaceSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcHalfSpaceSolid::Class() { return *IFC4X3_RC2_IfcHalfSpaceSolid_type; }
Ifc4x3_rc2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcHalfSpaceSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcHalfSpaceSolid::IfcHalfSpaceSolid(::Ifc4x3_rc2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcHeatExchangerTypeEnum::Value > Ifc4x3_rc2::IfcHeatExchanger::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcHeatExchanger::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcHeatExchanger::declaration() const { return *IFC4X3_RC2_IfcHeatExchanger_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcHeatExchanger::Class() { return *IFC4X3_RC2_IfcHeatExchanger_type; }
Ifc4x3_rc2::IfcHeatExchanger::IfcHeatExchanger(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcHeatExchanger_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcHeatExchanger::IfcHeatExchanger(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcHeatExchangerTypeEnum::Value Ifc4x3_rc2::IfcHeatExchangerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcHeatExchangerType::setPredefinedType(::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcHeatExchangerType::declaration() const { return *IFC4X3_RC2_IfcHeatExchangerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcHeatExchangerType::Class() { return *IFC4X3_RC2_IfcHeatExchangerType_type; }
Ifc4x3_rc2::IfcHeatExchangerType::IfcHeatExchangerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcHeatExchangerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcHeatExchangerType::IfcHeatExchangerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcHeatExchangerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcHeatExchangerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcHumidifier
boost::optional< ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value > Ifc4x3_rc2::IfcHumidifier::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcHumidifier::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcHumidifierTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcHumidifier::declaration() const { return *IFC4X3_RC2_IfcHumidifier_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcHumidifier::Class() { return *IFC4X3_RC2_IfcHumidifier_type; }
Ifc4x3_rc2::IfcHumidifier::IfcHumidifier(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcHumidifier_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcHumidifier::IfcHumidifier(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcHumidifierTypeEnum::Value Ifc4x3_rc2::IfcHumidifierType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcHumidifierTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcHumidifierType::setPredefinedType(::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcHumidifierTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcHumidifierType::declaration() const { return *IFC4X3_RC2_IfcHumidifierType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcHumidifierType::Class() { return *IFC4X3_RC2_IfcHumidifierType_type; }
Ifc4x3_rc2::IfcHumidifierType::IfcHumidifierType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcHumidifierType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcHumidifierType::IfcHumidifierType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcHumidifierTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcHumidifierTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcIShapeProfileDef
double Ifc4x3_rc2::IfcIShapeProfileDef::OverallWidth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setOverallWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcIShapeProfileDef::OverallDepth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setOverallDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcIShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcIShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcIShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcIShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcIShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcIShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcIShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIShapeProfileDef::Class() { return *IFC4X3_RC2_IfcIShapeProfileDef_type; }
Ifc4x3_rc2::IfcIShapeProfileDef::IfcIShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIShapeProfileDef::IfcIShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcIShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcImageTexture::URLReference() const {  std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcImageTexture::setURLReference(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcImageTexture::declaration() const { return *IFC4X3_RC2_IfcImageTexture_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcImageTexture::Class() { return *IFC4X3_RC2_IfcImageTexture_type; }
Ifc4x3_rc2::IfcImageTexture::IfcImageTexture(IfcEntityInstanceData* e) : IfcSurfaceTexture((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcImageTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcImageTexture::IfcImageTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter, std::string v6_URLReference) : IfcSurfaceTexture((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcImpactProtectionDeviceTypeSelect* Ifc4x3_rc2::IfcImpactProtectionDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect>(true); }
void Ifc4x3_rc2::IfcImpactProtectionDevice::setPredefinedType(::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcImpactProtectionDevice::declaration() const { return *IFC4X3_RC2_IfcImpactProtectionDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcImpactProtectionDevice::Class() { return *IFC4X3_RC2_IfcImpactProtectionDevice_type; }
Ifc4x3_rc2::IfcImpactProtectionDevice::IfcImpactProtectionDevice(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcImpactProtectionDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcImpactProtectionDevice::IfcImpactProtectionDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect* v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcImpactProtectionDeviceTypeSelect* Ifc4x3_rc2::IfcImpactProtectionDeviceType::PredefinedType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect>(true); }
void Ifc4x3_rc2::IfcImpactProtectionDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcImpactProtectionDeviceType::declaration() const { return *IFC4X3_RC2_IfcImpactProtectionDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcImpactProtectionDeviceType::Class() { return *IFC4X3_RC2_IfcImpactProtectionDeviceType_type; }
Ifc4x3_rc2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcImpactProtectionDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcImpactProtectionDeviceType::IfcImpactProtectionDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcImpactProtectionDeviceTypeSelect* v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcInclinedReferenceSweptAreaSolid::FixedAxisVertical() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } bool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::setFixedAxisVertical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcAxisLateralInclination* Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::Inclinating() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcAxisLateralInclination>(true); }
void Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::setInclinating(::Ifc4x3_rc2::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::declaration() const { return *IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::Class() { return *IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type; }
Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSolid(IfcEntityInstanceData* e) : IfcDirectrixDistanceSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcInclinedReferenceSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcInclinedReferenceSweptAreaSolid::IfcInclinedReferenceSweptAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcCurve* v3_Directrix, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v4_StartDistance, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v5_EndDistance, boost::optional< bool > v6_FixedAxisVertical, ::Ifc4x3_rc2::IfcAxisLateralInclination* v7_Inclinating) : IfcDirectrixDistanceSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTessellatedFaceSet* Ifc4x3_rc2::IfcIndexedColourMap::MappedTo() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcTessellatedFaceSet>(true); }
void Ifc4x3_rc2::IfcIndexedColourMap::setMappedTo(::Ifc4x3_rc2::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcIndexedColourMap::Opacity() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcIndexedColourMap::setOpacity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcColourRgbList* Ifc4x3_rc2::IfcIndexedColourMap::Colours() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcColourRgbList>(true); }
void Ifc4x3_rc2::IfcIndexedColourMap::setColours(::Ifc4x3_rc2::IfcColourRgbList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::vector< int > /*[1:?]*/ Ifc4x3_rc2::IfcIndexedColourMap::ColourIndex() const {  std::vector< int > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcIndexedColourMap::setColourIndex(std::vector< int > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIndexedColourMap::declaration() const { return *IFC4X3_RC2_IfcIndexedColourMap_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIndexedColourMap::Class() { return *IFC4X3_RC2_IfcIndexedColourMap_type; }
Ifc4x3_rc2::IfcIndexedColourMap::IfcIndexedColourMap(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIndexedColourMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIndexedColourMap::IfcIndexedColourMap(::Ifc4x3_rc2::IfcTessellatedFaceSet* v1_MappedTo, boost::optional< double > v2_Opacity, ::Ifc4x3_rc2::IfcColourRgbList* v3_Colours, std::vector< int > /*[1:?]*/ v4_ColourIndex) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianPointList* Ifc4x3_rc2::IfcIndexedPolyCurve::Points() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCartesianPointList>(true); }
void Ifc4x3_rc2::IfcIndexedPolyCurve::setPoints(::Ifc4x3_rc2::IfcCartesianPointList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcSegmentIndexSelect >::ptr > Ifc4x3_rc2::IfcIndexedPolyCurve::Segments() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcSegmentIndexSelect >(); }
void Ifc4x3_rc2::IfcIndexedPolyCurve::setSegments(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcSegmentIndexSelect >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcIndexedPolyCurve::SelfIntersect() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcIndexedPolyCurve::setSelfIntersect(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIndexedPolyCurve::declaration() const { return *IFC4X3_RC2_IfcIndexedPolyCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIndexedPolyCurve::Class() { return *IFC4X3_RC2_IfcIndexedPolyCurve_type; }
Ifc4x3_rc2::IfcIndexedPolyCurve::IfcIndexedPolyCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIndexedPolyCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIndexedPolyCurve::IfcIndexedPolyCurve(::Ifc4x3_rc2::IfcCartesianPointList* v1_Points, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcSegmentIndexSelect >::ptr > v2_Segments, boost::optional< bool > v3_SelfIntersect) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcIndexedPolygonalFace::CoordIndex() const {  std::vector< int > /*[3:?]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcIndexedPolygonalFace::setCoordIndex(std::vector< int > /*[3:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }

::Ifc4x3_rc2::IfcPolygonalFaceSet::list::ptr Ifc4x3_rc2::IfcIndexedPolygonalFace::ToFaceSet() const { return data_->getInverse(IFC4X3_RC2_IfcPolygonalFaceSet_type, 2)->as<IfcPolygonalFaceSet>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcIndexedPolygonalFace::declaration() const { return *IFC4X3_RC2_IfcIndexedPolygonalFace_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIndexedPolygonalFace::Class() { return *IFC4X3_RC2_IfcIndexedPolygonalFace_type; }
Ifc4x3_rc2::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(IfcEntityInstanceData* e) : IfcTessellatedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIndexedPolygonalFace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIndexedPolygonalFace::IfcIndexedPolygonalFace(std::vector< int > /*[3:?]*/ v1_CoordIndex) : IfcTessellatedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcIndexedPolygonalFaceWithVoids::InnerCoordIndices() const {  std::vector< std::vector< int > > v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::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_rc2::IfcIndexedPolygonalFaceWithVoids::declaration() const { return *IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIndexedPolygonalFaceWithVoids::Class() { return *IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type; }
Ifc4x3_rc2::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(IfcEntityInstanceData* e) : IfcIndexedPolygonalFace((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIndexedPolygonalFaceWithVoids_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIndexedPolygonalFaceWithVoids::IfcIndexedPolygonalFaceWithVoids(std::vector< int > /*[3:?]*/ v1_CoordIndex, std::vector< std::vector< int > > v2_InnerCoordIndices) : IfcIndexedPolygonalFace((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTessellatedFaceSet* Ifc4x3_rc2::IfcIndexedTextureMap::MappedTo() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcTessellatedFaceSet>(true); }
void Ifc4x3_rc2::IfcIndexedTextureMap::setMappedTo(::Ifc4x3_rc2::IfcTessellatedFaceSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcTextureVertexList* Ifc4x3_rc2::IfcIndexedTextureMap::TexCoords() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcTextureVertexList>(true); }
void Ifc4x3_rc2::IfcIndexedTextureMap::setTexCoords(::Ifc4x3_rc2::IfcTextureVertexList* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIndexedTextureMap::declaration() const { return *IFC4X3_RC2_IfcIndexedTextureMap_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIndexedTextureMap::Class() { return *IFC4X3_RC2_IfcIndexedTextureMap_type; }
Ifc4x3_rc2::IfcIndexedTextureMap::IfcIndexedTextureMap(IfcEntityInstanceData* e) : IfcTextureCoordinate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIndexedTextureMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIndexedTextureMap::IfcIndexedTextureMap(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_rc2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_rc2::IfcTextureVertexList* v3_TexCoords) : IfcTextureCoordinate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcIndexedTriangleTextureMap::setTexCoordIndex(boost::optional< std::vector< std::vector< int > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIndexedTriangleTextureMap::declaration() const { return *IFC4X3_RC2_IfcIndexedTriangleTextureMap_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIndexedTriangleTextureMap::Class() { return *IFC4X3_RC2_IfcIndexedTriangleTextureMap_type; }
Ifc4x3_rc2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(IfcEntityInstanceData* e) : IfcIndexedTextureMap((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIndexedTriangleTextureMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIndexedTriangleTextureMap::IfcIndexedTriangleTextureMap(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v1_Maps, ::Ifc4x3_rc2::IfcTessellatedFaceSet* v2_MappedTo, ::Ifc4x3_rc2::IfcTextureVertexList* v3_TexCoords, boost::optional< std::vector< std::vector< int > > > v4_TexCoordIndex) : IfcIndexedTextureMap((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcInterceptorTypeEnum::Value > Ifc4x3_rc2::IfcInterceptor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcInterceptor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcInterceptorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcInterceptor::declaration() const { return *IFC4X3_RC2_IfcInterceptor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcInterceptor::Class() { return *IFC4X3_RC2_IfcInterceptor_type; }
Ifc4x3_rc2::IfcInterceptor::IfcInterceptor(IfcEntityInstanceData* e) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcInterceptor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcInterceptor::IfcInterceptor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value > v9_PredefinedType) : IfcFlowTreatmentDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcInterceptorTypeEnum::Value Ifc4x3_rc2::IfcInterceptorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcInterceptorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcInterceptorType::setPredefinedType(::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcInterceptorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcInterceptorType::declaration() const { return *IFC4X3_RC2_IfcInterceptorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcInterceptorType::Class() { return *IFC4X3_RC2_IfcInterceptorType_type; }
Ifc4x3_rc2::IfcInterceptorType::IfcInterceptorType(IfcEntityInstanceData* e) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcInterceptorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcInterceptorType::IfcInterceptorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcInterceptorTypeEnum::Value v10_PredefinedType) : IfcFlowTreatmentDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcInterceptorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcIntersectionCurve


const IfcParse::entity& Ifc4x3_rc2::IfcIntersectionCurve::declaration() const { return *IFC4X3_RC2_IfcIntersectionCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIntersectionCurve::Class() { return *IFC4X3_RC2_IfcIntersectionCurve_type; }
Ifc4x3_rc2::IfcIntersectionCurve::IfcIntersectionCurve(IfcEntityInstanceData* e) : IfcSurfaceCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIntersectionCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIntersectionCurve::IfcIntersectionCurve(::Ifc4x3_rc2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_rc2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation))));data_->setArgument(2,attr);} }

// Function implementations for IfcInventory
boost::optional< ::Ifc4x3_rc2::IfcInventoryTypeEnum::Value > Ifc4x3_rc2::IfcInventory::PredefinedType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcInventoryTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcInventory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcInventoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcInventoryTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcInventory::Jurisdiction() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcInventory::setJurisdiction(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > Ifc4x3_rc2::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_rc2::IfcPerson >(); }
void Ifc4x3_rc2::IfcInventory::setResponsiblePersons(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcInventory::LastUpdateDate() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcInventory::setLastUpdateDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcInventory::CurrentValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcCostValue>(true); }
void Ifc4x3_rc2::IfcInventory::setCurrentValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcCostValue* Ifc4x3_rc2::IfcInventory::OriginalValue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcCostValue>(true); }
void Ifc4x3_rc2::IfcInventory::setOriginalValue(::Ifc4x3_rc2::IfcCostValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcInventory::declaration() const { return *IFC4X3_RC2_IfcInventory_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcInventory::Class() { return *IFC4X3_RC2_IfcInventory_type; }
Ifc4x3_rc2::IfcInventory::IfcInventory(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcInventory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcInventory::IfcInventory(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, boost::optional< ::Ifc4x3_rc2::IfcInventoryTypeEnum::Value > v6_PredefinedType, ::Ifc4x3_rc2::IfcActorSelect* v7_Jurisdiction, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v8_ResponsiblePersons, boost::optional< std::string > v9_LastUpdateDate, ::Ifc4x3_rc2::IfcCostValue* v10_CurrentValue, ::Ifc4x3_rc2::IfcCostValue* v11_OriginalValue) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcIrregularTimeSeriesValue >::ptr Ifc4x3_rc2::IfcIrregularTimeSeries::Values() const {  aggregate_of_instance::ptr es = *data_->getArgument(8); return es->as< ::Ifc4x3_rc2::IfcIrregularTimeSeriesValue >(); }
void Ifc4x3_rc2::IfcIrregularTimeSeries::setValues(aggregate_of< ::Ifc4x3_rc2::IfcIrregularTimeSeriesValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIrregularTimeSeries::declaration() const { return *IFC4X3_RC2_IfcIrregularTimeSeries_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIrregularTimeSeries::Class() { return *IFC4X3_RC2_IfcIrregularTimeSeries_type; }
Ifc4x3_rc2::IfcIrregularTimeSeries::IfcIrregularTimeSeries(IfcEntityInstanceData* e) : IfcTimeSeries((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIrregularTimeSeries_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIrregularTimeSeries::IfcIrregularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_rc2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_rc2::IfcUnit* v8_Unit, aggregate_of< ::Ifc4x3_rc2::IfcIrregularTimeSeriesValue >::ptr v9_Values) : IfcTimeSeries((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_DataOrigin,::Ifc4x3_rc2::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_rc2::IfcIrregularTimeSeriesValue::TimeStamp() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcIrregularTimeSeriesValue::setTimeStamp(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr Ifc4x3_rc2::IfcIrregularTimeSeriesValue::ListValues() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcIrregularTimeSeriesValue::setListValues(aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcIrregularTimeSeriesValue::declaration() const { return *IFC4X3_RC2_IfcIrregularTimeSeriesValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcIrregularTimeSeriesValue::Class() { return *IFC4X3_RC2_IfcIrregularTimeSeriesValue_type; }
Ifc4x3_rc2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcIrregularTimeSeriesValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcIrregularTimeSeriesValue::IfcIrregularTimeSeriesValue(std::string v1_TimeStamp, aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr v2_ListValues) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(1,attr);} }

// Function implementations for IfcJunctionBox
boost::optional< ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value > Ifc4x3_rc2::IfcJunctionBox::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcJunctionBox::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcJunctionBox::declaration() const { return *IFC4X3_RC2_IfcJunctionBox_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcJunctionBox::Class() { return *IFC4X3_RC2_IfcJunctionBox_type; }
Ifc4x3_rc2::IfcJunctionBox::IfcJunctionBox(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcJunctionBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcJunctionBox::IfcJunctionBox(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcJunctionBoxTypeEnum::Value Ifc4x3_rc2::IfcJunctionBoxType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcJunctionBoxType::setPredefinedType(::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcJunctionBoxType::declaration() const { return *IFC4X3_RC2_IfcJunctionBoxType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcJunctionBoxType::Class() { return *IFC4X3_RC2_IfcJunctionBoxType_type; }
Ifc4x3_rc2::IfcJunctionBoxType::IfcJunctionBoxType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcJunctionBoxType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcJunctionBoxType::IfcJunctionBoxType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcJunctionBoxTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcJunctionBoxTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcKerb
bool Ifc4x3_rc2::IfcKerb::Mountable() const {  bool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcKerb::setMountable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcKerb::declaration() const { return *IFC4X3_RC2_IfcKerb_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcKerb::Class() { return *IFC4X3_RC2_IfcKerb_type; }
Ifc4x3_rc2::IfcKerb::IfcKerb(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcKerb_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcKerb::IfcKerb(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, bool v9_Mountable) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcKerbType::Mountable() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcKerbType::setMountable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcKerbType::declaration() const { return *IFC4X3_RC2_IfcKerbType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcKerbType::Class() { return *IFC4X3_RC2_IfcKerbType_type; }
Ifc4x3_rc2::IfcKerbType::IfcKerbType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcKerbType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcKerbType::IfcKerbType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::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_RC2_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_rc2::IfcLShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcLShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::Width() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcLShapeProfileDef::setWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcLShapeProfileDef::Thickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcLShapeProfileDef::setThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::FilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcLShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcLShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLShapeProfileDef::LegSlope() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcLShapeProfileDef::setLegSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcLShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLShapeProfileDef::Class() { return *IFC4X3_RC2_IfcLShapeProfileDef_type; }
Ifc4x3_rc2::IfcLShapeProfileDef::IfcLShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLShapeProfileDef::IfcLShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcLShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcLaborResourceTypeEnum::Value > Ifc4x3_rc2::IfcLaborResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcLaborResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLaborResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLaborResource::declaration() const { return *IFC4X3_RC2_IfcLaborResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLaborResource::Class() { return *IFC4X3_RC2_IfcLaborResource_type; }
Ifc4x3_rc2::IfcLaborResource::IfcLaborResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLaborResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLaborResource::IfcLaborResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLaborResourceTypeEnum::Value Ifc4x3_rc2::IfcLaborResourceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcLaborResourceType::setPredefinedType(::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLaborResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLaborResourceType::declaration() const { return *IFC4X3_RC2_IfcLaborResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLaborResourceType::Class() { return *IFC4X3_RC2_IfcLaborResourceType_type; }
Ifc4x3_rc2::IfcLaborResourceType::IfcLaborResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLaborResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLaborResourceType::IfcLaborResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc2::IfcLaborResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLaborResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcLagTime
::Ifc4x3_rc2::IfcTimeOrRatioSelect* Ifc4x3_rc2::IfcLagTime::LagValue() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcTimeOrRatioSelect>(true); }
void Ifc4x3_rc2::IfcLagTime::setLagValue(::Ifc4x3_rc2::IfcTimeOrRatioSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcTaskDurationEnum::Value Ifc4x3_rc2::IfcLagTime::DurationType() const {  return ::Ifc4x3_rc2::IfcTaskDurationEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcLagTime::setDurationType(::Ifc4x3_rc2::IfcTaskDurationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTaskDurationEnum::ToString(v)));data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLagTime::declaration() const { return *IFC4X3_RC2_IfcLagTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLagTime::Class() { return *IFC4X3_RC2_IfcLagTime_type; }
Ifc4x3_rc2::IfcLagTime::IfcLagTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLagTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLagTime::IfcLagTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_rc2::IfcTimeOrRatioSelect* v4_LagValue, ::Ifc4x3_rc2::IfcTaskDurationEnum::Value v5_DurationType) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTaskDurationEnum::ToString(v5_DurationType))));data_->setArgument(4,attr);} }

// Function implementations for IfcLamp
boost::optional< ::Ifc4x3_rc2::IfcLampTypeEnum::Value > Ifc4x3_rc2::IfcLamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLampTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcLamp::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLamp::declaration() const { return *IFC4X3_RC2_IfcLamp_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLamp::Class() { return *IFC4X3_RC2_IfcLamp_type; }
Ifc4x3_rc2::IfcLamp::IfcLamp(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLamp_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLamp::IfcLamp(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcLampTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLampTypeEnum::Value Ifc4x3_rc2::IfcLampType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcLampTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcLampType::setPredefinedType(::Ifc4x3_rc2::IfcLampTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLampTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLampType::declaration() const { return *IFC4X3_RC2_IfcLampType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLampType::Class() { return *IFC4X3_RC2_IfcLampType_type; }
Ifc4x3_rc2::IfcLampType::IfcLampType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLampType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLampType::IfcLampType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcLampTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLampTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcLibraryInformation
std::string Ifc4x3_rc2::IfcLibraryInformation::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcLibraryInformation::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::Version() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcLibraryInformation::setVersion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcActorSelect* Ifc4x3_rc2::IfcLibraryInformation::Publisher() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcActorSelect>(true); }
void Ifc4x3_rc2::IfcLibraryInformation::setPublisher(::Ifc4x3_rc2::IfcActorSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::VersionDate() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcLibraryInformation::setVersionDate(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::Location() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcLibraryInformation::setLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcLibraryInformation::Description() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcLibraryInformation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }

::Ifc4x3_rc2::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc2::IfcLibraryInformation::LibraryInfoForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesLibrary_type, 5)->as<IfcRelAssociatesLibrary>(); }
::Ifc4x3_rc2::IfcLibraryReference::list::ptr Ifc4x3_rc2::IfcLibraryInformation::HasLibraryReferences() const { return data_->getInverse(IFC4X3_RC2_IfcLibraryReference_type, 5)->as<IfcLibraryReference>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcLibraryInformation::declaration() const { return *IFC4X3_RC2_IfcLibraryInformation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLibraryInformation::Class() { return *IFC4X3_RC2_IfcLibraryInformation_type; }
Ifc4x3_rc2::IfcLibraryInformation::IfcLibraryInformation(IfcEntityInstanceData* e) : IfcExternalInformation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLibraryInformation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLibraryInformation::IfcLibraryInformation(std::string v1_Name, boost::optional< std::string > v2_Version, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcLibraryReference::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcLibraryReference::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcLibraryReference::Language() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcLibraryReference::setLanguage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcLibraryInformation* Ifc4x3_rc2::IfcLibraryReference::ReferencedLibrary() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcLibraryInformation>(true); }
void Ifc4x3_rc2::IfcLibraryReference::setReferencedLibrary(::Ifc4x3_rc2::IfcLibraryInformation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }

::Ifc4x3_rc2::IfcRelAssociatesLibrary::list::ptr Ifc4x3_rc2::IfcLibraryReference::LibraryRefForObjects() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesLibrary_type, 5)->as<IfcRelAssociatesLibrary>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcLibraryReference::declaration() const { return *IFC4X3_RC2_IfcLibraryReference_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLibraryReference::Class() { return *IFC4X3_RC2_IfcLibraryReference_type; }
Ifc4x3_rc2::IfcLibraryReference::IfcLibraryReference(IfcEntityInstanceData* e) : IfcExternalReference((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLibraryReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcLibraryInformation* v6_ReferencedLibrary) : IfcExternalReference((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLightDistributionData::MainPlaneAngle() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcLightDistributionData::setMainPlaneAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::vector< double > /*[1:?]*/ Ifc4x3_rc2::IfcLightDistributionData::SecondaryPlaneAngle() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::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_rc2::IfcLightDistributionData::LuminousIntensity() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcLightDistributionData::setLuminousIntensity(std::vector< double > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightDistributionData::declaration() const { return *IFC4X3_RC2_IfcLightDistributionData_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightDistributionData::Class() { return *IFC4X3_RC2_IfcLightDistributionData_type; }
Ifc4x3_rc2::IfcLightDistributionData::IfcLightDistributionData(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightDistributionData_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightDistributionData::IfcLightDistributionData(double v1_MainPlaneAngle, std::vector< double > /*[1:?]*/ v2_SecondaryPlaneAngle, std::vector< double > /*[1:?]*/ v3_LuminousIntensity) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLightFixtureTypeEnum::Value > Ifc4x3_rc2::IfcLightFixture::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcLightFixture::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLightFixtureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightFixture::declaration() const { return *IFC4X3_RC2_IfcLightFixture_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightFixture::Class() { return *IFC4X3_RC2_IfcLightFixture_type; }
Ifc4x3_rc2::IfcLightFixture::IfcLightFixture(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightFixture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightFixture::IfcLightFixture(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLightFixtureTypeEnum::Value Ifc4x3_rc2::IfcLightFixtureType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcLightFixtureType::setPredefinedType(::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLightFixtureTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightFixtureType::declaration() const { return *IFC4X3_RC2_IfcLightFixtureType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightFixtureType::Class() { return *IFC4X3_RC2_IfcLightFixtureType_type; }
Ifc4x3_rc2::IfcLightFixtureType::IfcLightFixtureType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightFixtureType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightFixtureType::IfcLightFixtureType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcLightFixtureTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLightFixtureTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcLightIntensityDistribution
::Ifc4x3_rc2::IfcLightDistributionCurveEnum::Value Ifc4x3_rc2::IfcLightIntensityDistribution::LightDistributionCurve() const {  return ::Ifc4x3_rc2::IfcLightDistributionCurveEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcLightIntensityDistribution::setLightDistributionCurve(::Ifc4x3_rc2::IfcLightDistributionCurveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLightDistributionCurveEnum::ToString(v)));data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcLightDistributionData >::ptr Ifc4x3_rc2::IfcLightIntensityDistribution::DistributionData() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcLightDistributionData >(); }
void Ifc4x3_rc2::IfcLightIntensityDistribution::setDistributionData(aggregate_of< ::Ifc4x3_rc2::IfcLightDistributionData >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightIntensityDistribution::declaration() const { return *IFC4X3_RC2_IfcLightIntensityDistribution_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightIntensityDistribution::Class() { return *IFC4X3_RC2_IfcLightIntensityDistribution_type; }
Ifc4x3_rc2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightIntensityDistribution_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightIntensityDistribution::IfcLightIntensityDistribution(::Ifc4x3_rc2::IfcLightDistributionCurveEnum::Value v1_LightDistributionCurve, aggregate_of< ::Ifc4x3_rc2::IfcLightDistributionData >::ptr v2_DistributionData) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLightIntensityDistribution_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_LightDistributionCurve,::Ifc4x3_rc2::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_rc2::IfcLightSource::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcLightSource::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcLightSource::LightColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcLightSource::setLightColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLightSource::AmbientIntensity() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcLightSource::setAmbientIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLightSource::Intensity() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcLightSource::setIntensity(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightSource::declaration() const { return *IFC4X3_RC2_IfcLightSource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightSource::Class() { return *IFC4X3_RC2_IfcLightSource_type; }
Ifc4x3_rc2::IfcLightSource::IfcLightSource(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightSource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightSource::IfcLightSource(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLightSourceAmbient::declaration() const { return *IFC4X3_RC2_IfcLightSourceAmbient_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceAmbient::Class() { return *IFC4X3_RC2_IfcLightSourceAmbient_type; }
Ifc4x3_rc2::IfcLightSourceAmbient::IfcLightSourceAmbient(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightSourceAmbient_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightSourceAmbient::IfcLightSourceAmbient(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcLightSourceDirectional::Orientation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcLightSourceDirectional::setOrientation(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceDirectional::declaration() const { return *IFC4X3_RC2_IfcLightSourceDirectional_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceDirectional::Class() { return *IFC4X3_RC2_IfcLightSourceDirectional_type; }
Ifc4x3_rc2::IfcLightSourceDirectional::IfcLightSourceDirectional(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightSourceDirectional_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightSourceDirectional::IfcLightSourceDirectional(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc2::IfcDirection* v5_Orientation) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcLightSourceGoniometric::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcLightSourceGoniometric::setPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcLightSourceGoniometric::ColourAppearance() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcLightSourceGoniometric::setColourAppearance(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcLightSourceGoniometric::ColourTemperature() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcLightSourceGoniometric::setColourTemperature(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
double Ifc4x3_rc2::IfcLightSourceGoniometric::LuminousFlux() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcLightSourceGoniometric::setLuminousFlux(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcLightEmissionSourceEnum::Value Ifc4x3_rc2::IfcLightSourceGoniometric::LightEmissionSource() const {  return ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcLightSourceGoniometric::setLightEmissionSource(::Ifc4x3_rc2::IfcLightEmissionSourceEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLightEmissionSourceEnum::ToString(v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcLightDistributionDataSourceSelect* Ifc4x3_rc2::IfcLightSourceGoniometric::LightDistributionDataSource() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcLightDistributionDataSourceSelect>(true); }
void Ifc4x3_rc2::IfcLightSourceGoniometric::setLightDistributionDataSource(::Ifc4x3_rc2::IfcLightDistributionDataSourceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceGoniometric::declaration() const { return *IFC4X3_RC2_IfcLightSourceGoniometric_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceGoniometric::Class() { return *IFC4X3_RC2_IfcLightSourceGoniometric_type; }
Ifc4x3_rc2::IfcLightSourceGoniometric::IfcLightSourceGoniometric(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightSourceGoniometric_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightSourceGoniometric::IfcLightSourceGoniometric(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc2::IfcAxis2Placement3D* v5_Position, ::Ifc4x3_rc2::IfcColourRgb* v6_ColourAppearance, double v7_ColourTemperature, double v8_LuminousFlux, ::Ifc4x3_rc2::IfcLightEmissionSourceEnum::Value v9_LightEmissionSource, ::Ifc4x3_rc2::IfcLightDistributionDataSourceSelect* v10_LightDistributionDataSource) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcLightSourcePositional::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcLightSourcePositional::setPosition(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcLightSourcePositional::Radius() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcLightSourcePositional::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcLightSourcePositional::ConstantAttenuation() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcLightSourcePositional::setConstantAttenuation(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
double Ifc4x3_rc2::IfcLightSourcePositional::DistanceAttenuation() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcLightSourcePositional::setDistanceAttenuation(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
double Ifc4x3_rc2::IfcLightSourcePositional::QuadricAttenuation() const {  double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcLightSourcePositional::setQuadricAttenuation(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightSourcePositional::declaration() const { return *IFC4X3_RC2_IfcLightSourcePositional_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightSourcePositional::Class() { return *IFC4X3_RC2_IfcLightSourcePositional_type; }
Ifc4x3_rc2::IfcLightSourcePositional::IfcLightSourcePositional(IfcEntityInstanceData* e) : IfcLightSource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightSourcePositional_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightSourcePositional::IfcLightSourcePositional(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc2::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation) : IfcLightSource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDirection* Ifc4x3_rc2::IfcLightSourceSpot::Orientation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcLightSourceSpot::setOrientation(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcLightSourceSpot::ConcentrationExponent() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcLightSourceSpot::setConcentrationExponent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
double Ifc4x3_rc2::IfcLightSourceSpot::SpreadAngle() const {  double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcLightSourceSpot::setSpreadAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
double Ifc4x3_rc2::IfcLightSourceSpot::BeamWidthAngle() const {  double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcLightSourceSpot::setBeamWidthAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceSpot::declaration() const { return *IFC4X3_RC2_IfcLightSourceSpot_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLightSourceSpot::Class() { return *IFC4X3_RC2_IfcLightSourceSpot_type; }
Ifc4x3_rc2::IfcLightSourceSpot::IfcLightSourceSpot(IfcEntityInstanceData* e) : IfcLightSourcePositional((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLightSourceSpot_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLightSourceSpot::IfcLightSourceSpot(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcColourRgb* v2_LightColour, boost::optional< double > v3_AmbientIntensity, boost::optional< double > v4_Intensity, ::Ifc4x3_rc2::IfcCartesianPoint* v5_Position, double v6_Radius, double v7_ConstantAttenuation, double v8_DistanceAttenuation, double v9_QuadricAttenuation, ::Ifc4x3_rc2::IfcDirection* v10_Orientation, boost::optional< double > v11_ConcentrationExponent, double v12_SpreadAngle, double v13_BeamWidthAngle) : IfcLightSourcePositional((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianPoint* Ifc4x3_rc2::IfcLine::Pnt() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCartesianPoint>(true); }
void Ifc4x3_rc2::IfcLine::setPnt(::Ifc4x3_rc2::IfcCartesianPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcVector* Ifc4x3_rc2::IfcLine::Dir() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcVector>(true); }
void Ifc4x3_rc2::IfcLine::setDir(::Ifc4x3_rc2::IfcVector* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLine::declaration() const { return *IFC4X3_RC2_IfcLine_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLine::Class() { return *IFC4X3_RC2_IfcLine_type; }
Ifc4x3_rc2::IfcLine::IfcLine(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLine::IfcLine(::Ifc4x3_rc2::IfcCartesianPoint* v1_Pnt, ::Ifc4x3_rc2::IfcVector* v2_Dir) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLineSegment2D::declaration() const { return *IFC4X3_RC2_IfcLineSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLineSegment2D::Class() { return *IFC4X3_RC2_IfcLineSegment2D_type; }
Ifc4x3_rc2::IfcLineSegment2D::IfcLineSegment2D(IfcEntityInstanceData* e) : IfcCurveSegment2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLineSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLineSegment2D::IfcLineSegment2D(::Ifc4x3_rc2::IfcCartesianPoint* v1_StartPoint, double v2_StartDirection, double v3_SegmentLength) : IfcCurveSegment2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurve* Ifc4x3_rc2::IfcLinearAxisWithInclination::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcLinearAxisWithInclination::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcAxisLateralInclination* Ifc4x3_rc2::IfcLinearAxisWithInclination::Inclinating() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAxisLateralInclination>(true); }
void Ifc4x3_rc2::IfcLinearAxisWithInclination::setInclinating(::Ifc4x3_rc2::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLinearAxisWithInclination::declaration() const { return *IFC4X3_RC2_IfcLinearAxisWithInclination_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLinearAxisWithInclination::Class() { return *IFC4X3_RC2_IfcLinearAxisWithInclination_type; }
Ifc4x3_rc2::IfcLinearAxisWithInclination::IfcLinearAxisWithInclination(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLinearAxisWithInclination_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLinearAxisWithInclination::IfcLinearAxisWithInclination(::Ifc4x3_rc2::IfcCurve* v1_Directrix, ::Ifc4x3_rc2::IfcAxisLateralInclination* v2_Inclinating) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcLinearElement


const IfcParse::entity& Ifc4x3_rc2::IfcLinearElement::declaration() const { return *IFC4X3_RC2_IfcLinearElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLinearElement::Class() { return *IFC4X3_RC2_IfcLinearElement_type; }
Ifc4x3_rc2::IfcLinearElement::IfcLinearElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLinearElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLinearElement::IfcLinearElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLinearElement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_GlobalId));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_OwnerHistory));data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v3_Name));data_->setArgument(2,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(2, attr); } if (v4_Description) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v4_Description));data_->setArgument(3,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(3, attr); } if (v5_ObjectType) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::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 IfcLinearPlacement
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcLinearPlacement::PlacementMeasuredAlong() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcLinearPlacement::setPlacementMeasuredAlong(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcPointByDistanceExpression* Ifc4x3_rc2::IfcLinearPlacement::Distance() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcPointByDistanceExpression>(true); }
void Ifc4x3_rc2::IfcLinearPlacement::setDistance(::Ifc4x3_rc2::IfcPointByDistanceExpression* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcAxis2PlacementLinear* Ifc4x3_rc2::IfcLinearPlacement::RelativePlacement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcAxis2PlacementLinear>(true); }
void Ifc4x3_rc2::IfcLinearPlacement::setRelativePlacement(::Ifc4x3_rc2::IfcAxis2PlacementLinear* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcLinearPlacement::CartesianPosition() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcLinearPlacement::setCartesianPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLinearPlacement::declaration() const { return *IFC4X3_RC2_IfcLinearPlacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLinearPlacement::Class() { return *IFC4X3_RC2_IfcLinearPlacement_type; }
Ifc4x3_rc2::IfcLinearPlacement::IfcLinearPlacement(IfcEntityInstanceData* e) : IfcObjectPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLinearPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLinearPlacement::IfcLinearPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc2::IfcCurve* v2_PlacementMeasuredAlong, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v3_Distance, ::Ifc4x3_rc2::IfcAxis2PlacementLinear* v4_RelativePlacement, ::Ifc4x3_rc2::IfcAxis2Placement3D* v5_CartesianPosition) : IfcObjectPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_RelativePlacement));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_CartesianPosition));data_->setArgument(4,attr);} }

// Function implementations for IfcLinearPlacementWithInclination
::Ifc4x3_rc2::IfcAxisLateralInclination* Ifc4x3_rc2::IfcLinearPlacementWithInclination::Inclinating() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcAxisLateralInclination>(true); }
void Ifc4x3_rc2::IfcLinearPlacementWithInclination::setInclinating(::Ifc4x3_rc2::IfcAxisLateralInclination* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLinearPlacementWithInclination::declaration() const { return *IFC4X3_RC2_IfcLinearPlacementWithInclination_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLinearPlacementWithInclination::Class() { return *IFC4X3_RC2_IfcLinearPlacementWithInclination_type; }
Ifc4x3_rc2::IfcLinearPlacementWithInclination::IfcLinearPlacementWithInclination(IfcEntityInstanceData* e) : IfcLinearPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLinearPlacementWithInclination_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLinearPlacementWithInclination::IfcLinearPlacementWithInclination(::Ifc4x3_rc2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc2::IfcCurve* v2_PlacementMeasuredAlong, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v3_Distance, ::Ifc4x3_rc2::IfcAxis2PlacementLinear* v4_RelativePlacement, ::Ifc4x3_rc2::IfcAxis2Placement3D* v5_CartesianPosition, ::Ifc4x3_rc2::IfcAxisLateralInclination* v6_Inclinating) : IfcLinearPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_RelativePlacement));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_rc2::IfcCurve* Ifc4x3_rc2::IfcLinearPositioningElement::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcLinearPositioningElement::setAxis(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLinearPositioningElement::declaration() const { return *IFC4X3_RC2_IfcLinearPositioningElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLinearPositioningElement::Class() { return *IFC4X3_RC2_IfcLinearPositioningElement_type; }
Ifc4x3_rc2::IfcLinearPositioningElement::IfcLinearPositioningElement(IfcEntityInstanceData* e) : IfcPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLinearPositioningElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLinearPositioningElement::IfcLinearPositioningElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcCurve* v8_Axis) : IfcPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLinearSpanPlacement::Span() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcLinearSpanPlacement::setSpan(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLinearSpanPlacement::declaration() const { return *IFC4X3_RC2_IfcLinearSpanPlacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLinearSpanPlacement::Class() { return *IFC4X3_RC2_IfcLinearSpanPlacement_type; }
Ifc4x3_rc2::IfcLinearSpanPlacement::IfcLinearSpanPlacement(IfcEntityInstanceData* e) : IfcLinearPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLinearSpanPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLinearSpanPlacement::IfcLinearSpanPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc2::IfcCurve* v2_PlacementMeasuredAlong, ::Ifc4x3_rc2::IfcPointByDistanceExpression* v3_Distance, ::Ifc4x3_rc2::IfcAxis2PlacementLinear* v4_RelativePlacement, ::Ifc4x3_rc2::IfcAxis2Placement3D* v5_CartesianPosition, double v6_Span) : IfcLinearPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_RelativePlacement));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_rc2::IfcLiquidTerminalTypeEnum::Value > Ifc4x3_rc2::IfcLiquidTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcLiquidTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLiquidTerminal::declaration() const { return *IFC4X3_RC2_IfcLiquidTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLiquidTerminal::Class() { return *IFC4X3_RC2_IfcLiquidTerminal_type; }
Ifc4x3_rc2::IfcLiquidTerminal::IfcLiquidTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLiquidTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLiquidTerminal::IfcLiquidTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcLiquidTerminalTypeEnum::Value Ifc4x3_rc2::IfcLiquidTerminalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcLiquidTerminalType::setPredefinedType(::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLiquidTerminalType::declaration() const { return *IFC4X3_RC2_IfcLiquidTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLiquidTerminalType::Class() { return *IFC4X3_RC2_IfcLiquidTerminalType_type; }
Ifc4x3_rc2::IfcLiquidTerminalType::IfcLiquidTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLiquidTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLiquidTerminalType::IfcLiquidTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcLiquidTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLiquidTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcLocalPlacement
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcLocalPlacement::RelativePlacement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcLocalPlacement::setRelativePlacement(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcLocalPlacement::declaration() const { return *IFC4X3_RC2_IfcLocalPlacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLocalPlacement::Class() { return *IFC4X3_RC2_IfcLocalPlacement_type; }
Ifc4x3_rc2::IfcLocalPlacement::IfcLocalPlacement(IfcEntityInstanceData* e) : IfcObjectPlacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLocalPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLocalPlacement::IfcLocalPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v1_PlacementRelTo, ::Ifc4x3_rc2::IfcAxis2Placement* v2_RelativePlacement) : IfcObjectPlacement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLoop::declaration() const { return *IFC4X3_RC2_IfcLoop_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcLoop::Class() { return *IFC4X3_RC2_IfcLoop_type; }
Ifc4x3_rc2::IfcLoop::IfcLoop(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcLoop::IfcLoop() : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcLoop_type);  }

// Function implementations for IfcManifoldSolidBrep
::Ifc4x3_rc2::IfcClosedShell* Ifc4x3_rc2::IfcManifoldSolidBrep::Outer() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcClosedShell>(true); }
void Ifc4x3_rc2::IfcManifoldSolidBrep::setOuter(::Ifc4x3_rc2::IfcClosedShell* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcManifoldSolidBrep::declaration() const { return *IFC4X3_RC2_IfcManifoldSolidBrep_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcManifoldSolidBrep::Class() { return *IFC4X3_RC2_IfcManifoldSolidBrep_type; }
Ifc4x3_rc2::IfcManifoldSolidBrep::IfcManifoldSolidBrep(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcManifoldSolidBrep_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcManifoldSolidBrep::IfcManifoldSolidBrep(::Ifc4x3_rc2::IfcClosedShell* v1_Outer) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcManifoldSolidBrep_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Outer));data_->setArgument(0,attr);} }

// Function implementations for IfcMapConversion
double Ifc4x3_rc2::IfcMapConversion::Eastings() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcMapConversion::setEastings(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcMapConversion::Northings() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcMapConversion::setNorthings(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcMapConversion::OrthogonalHeight() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMapConversion::setOrthogonalHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMapConversion::XAxisAbscissa() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcMapConversion::setXAxisAbscissa(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMapConversion::XAxisOrdinate() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcMapConversion::setXAxisOrdinate(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMapConversion::Scale() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcMapConversion::setScale(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMapConversion::declaration() const { return *IFC4X3_RC2_IfcMapConversion_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMapConversion::Class() { return *IFC4X3_RC2_IfcMapConversion_type; }
Ifc4x3_rc2::IfcMapConversion::IfcMapConversion(IfcEntityInstanceData* e) : IfcCoordinateOperation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMapConversion_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMapConversion::IfcMapConversion(::Ifc4x3_rc2::IfcCoordinateReferenceSystemSelect* v1_SourceCRS, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcRepresentationMap* Ifc4x3_rc2::IfcMappedItem::MappingSource() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcRepresentationMap>(true); }
void Ifc4x3_rc2::IfcMappedItem::setMappingSource(::Ifc4x3_rc2::IfcRepresentationMap* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCartesianTransformationOperator* Ifc4x3_rc2::IfcMappedItem::MappingTarget() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCartesianTransformationOperator>(true); }
void Ifc4x3_rc2::IfcMappedItem::setMappingTarget(::Ifc4x3_rc2::IfcCartesianTransformationOperator* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMappedItem::declaration() const { return *IFC4X3_RC2_IfcMappedItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMappedItem::Class() { return *IFC4X3_RC2_IfcMappedItem_type; }
Ifc4x3_rc2::IfcMappedItem::IfcMappedItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMappedItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMappedItem::IfcMappedItem(::Ifc4x3_rc2::IfcRepresentationMap* v1_MappingSource, ::Ifc4x3_rc2::IfcCartesianTransformationOperator* v2_MappingTarget) : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMarineFacilityTypeEnum::Value Ifc4x3_rc2::IfcMarineFacility::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMarineFacility::setPredefinedType(::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMarineFacility::declaration() const { return *IFC4X3_RC2_IfcMarineFacility_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMarineFacility::Class() { return *IFC4X3_RC2_IfcMarineFacility_type; }
Ifc4x3_rc2::IfcMarineFacility::IfcMarineFacility(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMarineFacility_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMarineFacility::IfcMarineFacility(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, ::Ifc4x3_rc2::IfcMarineFacilityTypeEnum::Value v10_PredefinedType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMarineFacilityTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMaterial
std::string Ifc4x3_rc2::IfcMaterial::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcMaterial::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterial::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterial::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterial::Category() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcMaterial::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }

::Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::list::ptr Ifc4x3_rc2::IfcMaterial::HasRepresentation() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type, 3)->as<IfcMaterialDefinitionRepresentation>(); }
::Ifc4x3_rc2::IfcMaterialRelationship::list::ptr Ifc4x3_rc2::IfcMaterial::IsRelatedWith() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialRelationship_type, 3)->as<IfcMaterialRelationship>(); }
::Ifc4x3_rc2::IfcMaterialRelationship::list::ptr Ifc4x3_rc2::IfcMaterial::RelatesTo() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialRelationship_type, 2)->as<IfcMaterialRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcMaterial::declaration() const { return *IFC4X3_RC2_IfcMaterial_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterial::Class() { return *IFC4X3_RC2_IfcMaterial_type; }
Ifc4x3_rc2::IfcMaterial::IfcMaterial(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterial_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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< ::Ifc4x3_rc2::IfcClassificationSelect >::ptr Ifc4x3_rc2::IfcMaterialClassificationRelationship::MaterialClassifications() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcClassificationSelect >(); }
void Ifc4x3_rc2::IfcMaterialClassificationRelationship::setMaterialClassifications(aggregate_of< ::Ifc4x3_rc2::IfcClassificationSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialClassificationRelationship::ClassifiedMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcMaterial>(true); }
void Ifc4x3_rc2::IfcMaterialClassificationRelationship::setClassifiedMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialClassificationRelationship::declaration() const { return *IFC4X3_RC2_IfcMaterialClassificationRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialClassificationRelationship::Class() { return *IFC4X3_RC2_IfcMaterialClassificationRelationship_type; }
Ifc4x3_rc2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialClassificationRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialClassificationRelationship::IfcMaterialClassificationRelationship(aggregate_of< ::Ifc4x3_rc2::IfcClassificationSelect >::ptr v1_MaterialClassifications, ::Ifc4x3_rc2::IfcMaterial* v2_ClassifiedMaterial) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMaterialClassificationRelationship_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_MaterialClassifications)->generalize());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_rc2::IfcMaterialConstituent::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcMaterialConstituent::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituent::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialConstituent::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialConstituent::Material() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcMaterial>(true); }
void Ifc4x3_rc2::IfcMaterialConstituent::setMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMaterialConstituent::Fraction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcMaterialConstituent::setFraction(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituent::Category() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMaterialConstituent::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }

::Ifc4x3_rc2::IfcMaterialConstituentSet::list::ptr Ifc4x3_rc2::IfcMaterialConstituent::ToMaterialConstituentSet() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialConstituentSet_type, 2)->as<IfcMaterialConstituentSet>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcMaterialConstituent::declaration() const { return *IFC4X3_RC2_IfcMaterialConstituent_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialConstituent::Class() { return *IFC4X3_RC2_IfcMaterialConstituent_type; }
Ifc4x3_rc2::IfcMaterialConstituent::IfcMaterialConstituent(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialConstituent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialConstituent::IfcMaterialConstituent(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcMaterial* v3_Material, boost::optional< double > v4_Fraction, boost::optional< std::string > v5_Category) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialConstituentSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcMaterialConstituentSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialConstituentSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialConstituentSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcMaterialConstituent >::ptr > Ifc4x3_rc2::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_rc2::IfcMaterialConstituent >(); }
void Ifc4x3_rc2::IfcMaterialConstituentSet::setMaterialConstituents(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcMaterialConstituent >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialConstituentSet::declaration() const { return *IFC4X3_RC2_IfcMaterialConstituentSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialConstituentSet::Class() { return *IFC4X3_RC2_IfcMaterialConstituentSet_type; }
Ifc4x3_rc2::IfcMaterialConstituentSet::IfcMaterialConstituentSet(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialConstituentSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialConstituentSet::IfcMaterialConstituentSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcMaterialConstituent >::ptr > v3_MaterialConstituents) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelAssociatesMaterial::list::ptr Ifc4x3_rc2::IfcMaterialDefinition::AssociatedTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesMaterial_type, 5)->as<IfcRelAssociatesMaterial>(); }
::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcMaterialDefinition::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc2::IfcMaterialProperties::list::ptr Ifc4x3_rc2::IfcMaterialDefinition::HasProperties() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialProperties_type, 3)->as<IfcMaterialProperties>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcMaterialDefinition::declaration() const { return *IFC4X3_RC2_IfcMaterialDefinition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialDefinition::Class() { return *IFC4X3_RC2_IfcMaterialDefinition_type; }
Ifc4x3_rc2::IfcMaterialDefinition::IfcMaterialDefinition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialDefinition::IfcMaterialDefinition() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMaterialDefinition_type);  }

// Function implementations for IfcMaterialDefinitionRepresentation
::Ifc4x3_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::RepresentedMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMaterial>(true); }
void Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::setRepresentedMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::declaration() const { return *IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::Class() { return *IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type; }
Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(IfcEntityInstanceData* e) : IfcProductRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialDefinitionRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialDefinitionRepresentation::IfcMaterialDefinitionRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr v3_Representations, ::Ifc4x3_rc2::IfcMaterial* v4_RepresentedMaterial) : IfcProductRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialLayer::Material() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcMaterial>(true); }
void Ifc4x3_rc2::IfcMaterialLayer::setMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcMaterialLayer::LayerThickness() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialLayer::setLayerThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< boost::logic::tribool > Ifc4x3_rc2::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_rc2::IfcMaterialLayer::setIsVentilated(boost::optional< boost::logic::tribool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayer::Name() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcMaterialLayer::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayer::Description() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMaterialLayer::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayer::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcMaterialLayer::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcMaterialLayer::Priority() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcMaterialLayer::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }

::Ifc4x3_rc2::IfcMaterialLayerSet::list::ptr Ifc4x3_rc2::IfcMaterialLayer::ToMaterialLayerSet() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialLayerSet_type, 0)->as<IfcMaterialLayerSet>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayer::declaration() const { return *IFC4X3_RC2_IfcMaterialLayer_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayer::Class() { return *IFC4X3_RC2_IfcMaterialLayer_type; }
Ifc4x3_rc2::IfcMaterialLayer::IfcMaterialLayer(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialLayer_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialLayer::IfcMaterialLayer(::Ifc4x3_rc2::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_RC2_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_rc2::IfcMaterialLayer >::ptr Ifc4x3_rc2::IfcMaterialLayerSet::MaterialLayers() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcMaterialLayer >(); }
void Ifc4x3_rc2::IfcMaterialLayerSet::setMaterialLayers(aggregate_of< ::Ifc4x3_rc2::IfcMaterialLayer >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayerSet::LayerSetName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialLayerSet::setLayerSetName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialLayerSet::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcMaterialLayerSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerSet::declaration() const { return *IFC4X3_RC2_IfcMaterialLayerSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerSet::Class() { return *IFC4X3_RC2_IfcMaterialLayerSet_type; }
Ifc4x3_rc2::IfcMaterialLayerSet::IfcMaterialLayerSet(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialLayerSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialLayerSet::IfcMaterialLayerSet(aggregate_of< ::Ifc4x3_rc2::IfcMaterialLayer >::ptr v1_MaterialLayers, boost::optional< std::string > v2_LayerSetName, boost::optional< std::string > v3_Description) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialLayerSet* Ifc4x3_rc2::IfcMaterialLayerSetUsage::ForLayerSet() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcMaterialLayerSet>(true); }
void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setForLayerSet(::Ifc4x3_rc2::IfcMaterialLayerSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcLayerSetDirectionEnum::Value Ifc4x3_rc2::IfcMaterialLayerSetUsage::LayerSetDirection() const {  return ::Ifc4x3_rc2::IfcLayerSetDirectionEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setLayerSetDirection(::Ifc4x3_rc2::IfcLayerSetDirectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLayerSetDirectionEnum::ToString(v)));data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcDirectionSenseEnum::Value Ifc4x3_rc2::IfcMaterialLayerSetUsage::DirectionSense() const {  return ::Ifc4x3_rc2::IfcDirectionSenseEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setDirectionSense(::Ifc4x3_rc2::IfcDirectionSenseEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDirectionSenseEnum::ToString(v)));data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcMaterialLayerSetUsage::OffsetFromReferenceLine() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setOffsetFromReferenceLine(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMaterialLayerSetUsage::ReferenceExtent() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMaterialLayerSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerSetUsage::declaration() const { return *IFC4X3_RC2_IfcMaterialLayerSetUsage_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerSetUsage::Class() { return *IFC4X3_RC2_IfcMaterialLayerSetUsage_type; }
Ifc4x3_rc2::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(IfcEntityInstanceData* e) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialLayerSetUsage_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialLayerSetUsage::IfcMaterialLayerSetUsage(::Ifc4x3_rc2::IfcMaterialLayerSet* v1_ForLayerSet, ::Ifc4x3_rc2::IfcLayerSetDirectionEnum::Value v2_LayerSetDirection, ::Ifc4x3_rc2::IfcDirectionSenseEnum::Value v3_DirectionSense, double v4_OffsetFromReferenceLine, boost::optional< double > v5_ReferenceExtent) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLayerSetDirectionEnum::ToString(v2_LayerSetDirection))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v3_DirectionSense,::Ifc4x3_rc2::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_rc2::IfcLayerSetDirectionEnum::Value Ifc4x3_rc2::IfcMaterialLayerWithOffsets::OffsetDirection() const {  return ::Ifc4x3_rc2::IfcLayerSetDirectionEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcMaterialLayerWithOffsets::setOffsetDirection(::Ifc4x3_rc2::IfcLayerSetDirectionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLayerSetDirectionEnum::ToString(v)));data_->setArgument(7,attr);} }
std::vector< double > /*[1:2]*/ Ifc4x3_rc2::IfcMaterialLayerWithOffsets::OffsetValues() const {  std::vector< double > /*[1:2]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::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_rc2::IfcMaterialLayerWithOffsets::declaration() const { return *IFC4X3_RC2_IfcMaterialLayerWithOffsets_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialLayerWithOffsets::Class() { return *IFC4X3_RC2_IfcMaterialLayerWithOffsets_type; }
Ifc4x3_rc2::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(IfcEntityInstanceData* e) : IfcMaterialLayer((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialLayerWithOffsets_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialLayerWithOffsets::IfcMaterialLayerWithOffsets(::Ifc4x3_rc2::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_rc2::IfcLayerSetDirectionEnum::Value v8_OffsetDirection, std::vector< double > /*[1:2]*/ v9_OffsetValues) : IfcMaterialLayer((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMaterial >::ptr Ifc4x3_rc2::IfcMaterialList::Materials() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcMaterial >(); }
void Ifc4x3_rc2::IfcMaterialList::setMaterials(aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialList::declaration() const { return *IFC4X3_RC2_IfcMaterialList_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialList::Class() { return *IFC4X3_RC2_IfcMaterialList_type; }
Ifc4x3_rc2::IfcMaterialList::IfcMaterialList(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialList::IfcMaterialList(aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr v1_Materials) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialProfile::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcMaterialProfile::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfile::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialProfile::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialProfile::Material() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcMaterial>(true); }
void Ifc4x3_rc2::IfcMaterialProfile::setMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcProfileDef* Ifc4x3_rc2::IfcMaterialProfile::Profile() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcMaterialProfile::setProfile(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcMaterialProfile::Priority() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMaterialProfile::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfile::Category() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcMaterialProfile::setCategory(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }

::Ifc4x3_rc2::IfcMaterialProfileSet::list::ptr Ifc4x3_rc2::IfcMaterialProfile::ToMaterialProfileSet() const { return data_->getInverse(IFC4X3_RC2_IfcMaterialProfileSet_type, 2)->as<IfcMaterialProfileSet>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfile::declaration() const { return *IFC4X3_RC2_IfcMaterialProfile_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfile::Class() { return *IFC4X3_RC2_IfcMaterialProfile_type; }
Ifc4x3_rc2::IfcMaterialProfile::IfcMaterialProfile(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialProfile_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialProfile::IfcMaterialProfile(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcMaterial* v3_Material, ::Ifc4x3_rc2::IfcProfileDef* v4_Profile, boost::optional< int > v5_Priority, boost::optional< std::string > v6_Category) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialProfileSet::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcMaterialProfileSet::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialProfileSet::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialProfileSet::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcMaterialProfile >::ptr Ifc4x3_rc2::IfcMaterialProfileSet::MaterialProfiles() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcMaterialProfile >(); }
void Ifc4x3_rc2::IfcMaterialProfileSet::setMaterialProfiles(aggregate_of< ::Ifc4x3_rc2::IfcMaterialProfile >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcCompositeProfileDef* Ifc4x3_rc2::IfcMaterialProfileSet::CompositeProfile() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCompositeProfileDef>(true); }
void Ifc4x3_rc2::IfcMaterialProfileSet::setCompositeProfile(::Ifc4x3_rc2::IfcCompositeProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSet::declaration() const { return *IFC4X3_RC2_IfcMaterialProfileSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSet::Class() { return *IFC4X3_RC2_IfcMaterialProfileSet_type; }
Ifc4x3_rc2::IfcMaterialProfileSet::IfcMaterialProfileSet(IfcEntityInstanceData* e) : IfcMaterialDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialProfileSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialProfileSet::IfcMaterialProfileSet(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcMaterialProfile >::ptr v3_MaterialProfiles, ::Ifc4x3_rc2::IfcCompositeProfileDef* v4_CompositeProfile) : IfcMaterialDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialProfileSet* Ifc4x3_rc2::IfcMaterialProfileSetUsage::ForProfileSet() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcMaterialProfileSet>(true); }
void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setForProfileSet(::Ifc4x3_rc2::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcMaterialProfileSetUsage::CardinalPoint() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } int v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setCardinalPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMaterialProfileSetUsage::ReferenceExtent() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcMaterialProfileSetUsage::setReferenceExtent(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSetUsage::declaration() const { return *IFC4X3_RC2_IfcMaterialProfileSetUsage_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSetUsage::Class() { return *IFC4X3_RC2_IfcMaterialProfileSetUsage_type; }
Ifc4x3_rc2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(IfcEntityInstanceData* e) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialProfileSetUsage_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialProfileSetUsage::IfcMaterialProfileSetUsage(::Ifc4x3_rc2::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent) : IfcMaterialUsageDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialProfileSet* Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::ForProfileEndSet() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMaterialProfileSet>(true); }
void Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::setForProfileEndSet(::Ifc4x3_rc2::IfcMaterialProfileSet* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::CardinalEndPoint() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::setCardinalEndPoint(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::declaration() const { return *IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::Class() { return *IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type; }
Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(IfcEntityInstanceData* e) : IfcMaterialProfileSetUsage((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialProfileSetUsageTapering_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialProfileSetUsageTapering::IfcMaterialProfileSetUsageTapering(::Ifc4x3_rc2::IfcMaterialProfileSet* v1_ForProfileSet, boost::optional< int > v2_CardinalPoint, boost::optional< double > v3_ReferenceExtent, ::Ifc4x3_rc2::IfcMaterialProfileSet* v4_ForProfileEndSet, boost::optional< int > v5_CardinalEndPoint) : IfcMaterialProfileSetUsage((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterialProfileWithOffsets::OffsetValues() const {  std::vector< double > /*[1:2]*/ v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::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_rc2::IfcMaterialProfileWithOffsets::declaration() const { return *IFC4X3_RC2_IfcMaterialProfileWithOffsets_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProfileWithOffsets::Class() { return *IFC4X3_RC2_IfcMaterialProfileWithOffsets_type; }
Ifc4x3_rc2::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(IfcEntityInstanceData* e) : IfcMaterialProfile((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialProfileWithOffsets_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialProfileWithOffsets::IfcMaterialProfileWithOffsets(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcMaterial* v3_Material, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcMaterialDefinition* Ifc4x3_rc2::IfcMaterialProperties::Material() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcMaterialDefinition>(true); }
void Ifc4x3_rc2::IfcMaterialProperties::setMaterial(::Ifc4x3_rc2::IfcMaterialDefinition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProperties::declaration() const { return *IFC4X3_RC2_IfcMaterialProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialProperties::Class() { return *IFC4X3_RC2_IfcMaterialProperties_type; }
Ifc4x3_rc2::IfcMaterialProperties::IfcMaterialProperties(IfcEntityInstanceData* e) : IfcExtendedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialProperties::IfcMaterialProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v3_Properties, ::Ifc4x3_rc2::IfcMaterialDefinition* v4_Material) : IfcExtendedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMaterial* Ifc4x3_rc2::IfcMaterialRelationship::RelatingMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcMaterial>(true); }
void Ifc4x3_rc2::IfcMaterialRelationship::setRelatingMaterial(::Ifc4x3_rc2::IfcMaterial* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr Ifc4x3_rc2::IfcMaterialRelationship::RelatedMaterials() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcMaterial >(); }
void Ifc4x3_rc2::IfcMaterialRelationship::setRelatedMaterials(aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMaterialRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcMaterialRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMaterialRelationship::declaration() const { return *IFC4X3_RC2_IfcMaterialRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialRelationship::Class() { return *IFC4X3_RC2_IfcMaterialRelationship_type; }
Ifc4x3_rc2::IfcMaterialRelationship::IfcMaterialRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialRelationship::IfcMaterialRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcMaterial* v3_RelatingMaterial, aggregate_of< ::Ifc4x3_rc2::IfcMaterial >::ptr v4_RelatedMaterials, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelAssociatesMaterial::list::ptr Ifc4x3_rc2::IfcMaterialUsageDefinition::AssociatedTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociatesMaterial_type, 5)->as<IfcRelAssociatesMaterial>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcMaterialUsageDefinition::declaration() const { return *IFC4X3_RC2_IfcMaterialUsageDefinition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMaterialUsageDefinition::Class() { return *IFC4X3_RC2_IfcMaterialUsageDefinition_type; }
Ifc4x3_rc2::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMaterialUsageDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMaterialUsageDefinition::IfcMaterialUsageDefinition() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMaterialUsageDefinition_type);  }

// Function implementations for IfcMeasureWithUnit
::Ifc4x3_rc2::IfcValue* Ifc4x3_rc2::IfcMeasureWithUnit::ValueComponent() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcValue>(true); }
void Ifc4x3_rc2::IfcMeasureWithUnit::setValueComponent(::Ifc4x3_rc2::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcMeasureWithUnit::UnitComponent() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcMeasureWithUnit::setUnitComponent(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMeasureWithUnit::declaration() const { return *IFC4X3_RC2_IfcMeasureWithUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMeasureWithUnit::Class() { return *IFC4X3_RC2_IfcMeasureWithUnit_type; }
Ifc4x3_rc2::IfcMeasureWithUnit::IfcMeasureWithUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMeasureWithUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMeasureWithUnit::IfcMeasureWithUnit(::Ifc4x3_rc2::IfcValue* v1_ValueComponent, ::Ifc4x3_rc2::IfcUnit* v2_UnitComponent) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMechanicalFastener::NominalDiameter() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcMechanicalFastener::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastener::NominalLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcMechanicalFastener::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value > Ifc4x3_rc2::IfcMechanicalFastener::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcMechanicalFastener::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMechanicalFastener::declaration() const { return *IFC4X3_RC2_IfcMechanicalFastener_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMechanicalFastener::Class() { return *IFC4X3_RC2_IfcMechanicalFastener_type; }
Ifc4x3_rc2::IfcMechanicalFastener::IfcMechanicalFastener(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMechanicalFastener_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMechanicalFastener::IfcMechanicalFastener(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_NominalDiameter, boost::optional< double > v10_NominalLength, boost::optional< ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value > v11_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMechanicalFastenerTypeEnum::Value Ifc4x3_rc2::IfcMechanicalFastenerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMechanicalFastenerType::setPredefinedType(::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastenerType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcMechanicalFastenerType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcMechanicalFastenerType::NominalLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcMechanicalFastenerType::setNominalLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMechanicalFastenerType::declaration() const { return *IFC4X3_RC2_IfcMechanicalFastenerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMechanicalFastenerType::Class() { return *IFC4X3_RC2_IfcMechanicalFastenerType_type; }
Ifc4x3_rc2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMechanicalFastenerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMechanicalFastenerType::IfcMechanicalFastenerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcMechanicalFastenerTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_NominalLength) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMedicalDeviceTypeEnum::Value > Ifc4x3_rc2::IfcMedicalDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcMedicalDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMedicalDevice::declaration() const { return *IFC4X3_RC2_IfcMedicalDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMedicalDevice::Class() { return *IFC4X3_RC2_IfcMedicalDevice_type; }
Ifc4x3_rc2::IfcMedicalDevice::IfcMedicalDevice(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMedicalDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMedicalDevice::IfcMedicalDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMedicalDeviceTypeEnum::Value Ifc4x3_rc2::IfcMedicalDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMedicalDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMedicalDeviceType::declaration() const { return *IFC4X3_RC2_IfcMedicalDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMedicalDeviceType::Class() { return *IFC4X3_RC2_IfcMedicalDeviceType_type; }
Ifc4x3_rc2::IfcMedicalDeviceType::IfcMedicalDeviceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMedicalDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMedicalDeviceType::IfcMedicalDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcMedicalDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMedicalDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMember
boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > Ifc4x3_rc2::IfcMember::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMemberTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcMember::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMemberTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMember::declaration() const { return *IFC4X3_RC2_IfcMember_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMember::Class() { return *IFC4X3_RC2_IfcMember_type; }
Ifc4x3_rc2::IfcMember::IfcMember(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMember::IfcMember(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMemberStandardCase::declaration() const { return *IFC4X3_RC2_IfcMemberStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMemberStandardCase::Class() { return *IFC4X3_RC2_IfcMemberStandardCase_type; }
Ifc4x3_rc2::IfcMemberStandardCase::IfcMemberStandardCase(IfcEntityInstanceData* e) : IfcMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMemberStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMemberStandardCase::IfcMemberStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcMemberTypeEnum::Value > v9_PredefinedType) : IfcMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMemberTypeEnum::Value Ifc4x3_rc2::IfcMemberType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMemberTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMemberType::setPredefinedType(::Ifc4x3_rc2::IfcMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMemberTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMemberType::declaration() const { return *IFC4X3_RC2_IfcMemberType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMemberType::Class() { return *IFC4X3_RC2_IfcMemberType_type; }
Ifc4x3_rc2::IfcMemberType::IfcMemberType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMemberType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMemberType::IfcMemberType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcMemberTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMemberTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMetric
::Ifc4x3_rc2::IfcBenchmarkEnum::Value Ifc4x3_rc2::IfcMetric::Benchmark() const {  return ::Ifc4x3_rc2::IfcBenchmarkEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcMetric::setBenchmark(::Ifc4x3_rc2::IfcBenchmarkEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcBenchmarkEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcMetric::ValueSource() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcMetric::setValueSource(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcMetricValueSelect* Ifc4x3_rc2::IfcMetric::DataValue() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcMetricValueSelect>(true); }
void Ifc4x3_rc2::IfcMetric::setDataValue(::Ifc4x3_rc2::IfcMetricValueSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcReference* Ifc4x3_rc2::IfcMetric::ReferencePath() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcReference>(true); }
void Ifc4x3_rc2::IfcMetric::setReferencePath(::Ifc4x3_rc2::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMetric::declaration() const { return *IFC4X3_RC2_IfcMetric_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMetric::Class() { return *IFC4X3_RC2_IfcMetric_type; }
Ifc4x3_rc2::IfcMetric::IfcMetric(IfcEntityInstanceData* e) : IfcConstraint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMetric_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMetric::IfcMetric(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_rc2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, ::Ifc4x3_rc2::IfcBenchmarkEnum::Value v8_Benchmark, boost::optional< std::string > v9_ValueSource, ::Ifc4x3_rc2::IfcMetricValueSelect* v10_DataValue, ::Ifc4x3_rc2::IfcReference* v11_ReferencePath) : IfcConstraint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcMirroredProfileDef::declaration() const { return *IFC4X3_RC2_IfcMirroredProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMirroredProfileDef::Class() { return *IFC4X3_RC2_IfcMirroredProfileDef_type; }
Ifc4x3_rc2::IfcMirroredProfileDef::IfcMirroredProfileDef(IfcEntityInstanceData* e) : IfcDerivedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMirroredProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMirroredProfileDef::IfcMirroredProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcProfileDef* v3_ParentProfile, boost::optional< std::string > v5_Label) : IfcDerivedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMirroredProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::declaration() const { return *IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::Class() { return *IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type; }
Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMobileTelecommunicationsAppliance_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMobileTelecommunicationsAppliance::IfcMobileTelecommunicationsAppliance(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType::setPredefinedType(::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType::declaration() const { return *IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType::Class() { return *IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type; }
Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMobileTelecommunicationsApplianceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceType::IfcMobileTelecommunicationsApplianceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMobileTelecommunicationsApplianceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMonetaryUnit
std::string Ifc4x3_rc2::IfcMonetaryUnit::Currency() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcMonetaryUnit::setCurrency(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMonetaryUnit::declaration() const { return *IFC4X3_RC2_IfcMonetaryUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMonetaryUnit::Class() { return *IFC4X3_RC2_IfcMonetaryUnit_type; }
Ifc4x3_rc2::IfcMonetaryUnit::IfcMonetaryUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMonetaryUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMonetaryUnit::IfcMonetaryUnit(std::string v1_Currency) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcMonetaryUnit_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Currency));data_->setArgument(0,attr);} }

// Function implementations for IfcMooringDevice
boost::optional< ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value > Ifc4x3_rc2::IfcMooringDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcMooringDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMooringDevice::declaration() const { return *IFC4X3_RC2_IfcMooringDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMooringDevice::Class() { return *IFC4X3_RC2_IfcMooringDevice_type; }
Ifc4x3_rc2::IfcMooringDevice::IfcMooringDevice(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMooringDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMooringDevice::IfcMooringDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMooringDeviceTypeEnum::Value Ifc4x3_rc2::IfcMooringDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMooringDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMooringDeviceType::declaration() const { return *IFC4X3_RC2_IfcMooringDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMooringDeviceType::Class() { return *IFC4X3_RC2_IfcMooringDeviceType_type; }
Ifc4x3_rc2::IfcMooringDeviceType::IfcMooringDeviceType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMooringDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMooringDeviceType::IfcMooringDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcMooringDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMooringDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcMotorConnection
boost::optional< ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value > Ifc4x3_rc2::IfcMotorConnection::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcMotorConnection::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMotorConnection::declaration() const { return *IFC4X3_RC2_IfcMotorConnection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMotorConnection::Class() { return *IFC4X3_RC2_IfcMotorConnection_type; }
Ifc4x3_rc2::IfcMotorConnection::IfcMotorConnection(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMotorConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMotorConnection::IfcMotorConnection(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcMotorConnectionTypeEnum::Value Ifc4x3_rc2::IfcMotorConnectionType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcMotorConnectionType::setPredefinedType(::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcMotorConnectionType::declaration() const { return *IFC4X3_RC2_IfcMotorConnectionType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcMotorConnectionType::Class() { return *IFC4X3_RC2_IfcMotorConnectionType_type; }
Ifc4x3_rc2::IfcMotorConnectionType::IfcMotorConnectionType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcMotorConnectionType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcMotorConnectionType::IfcMotorConnectionType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcMotorConnectionTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcMotorConnectionTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcNamedUnit
::Ifc4x3_rc2::IfcDimensionalExponents* Ifc4x3_rc2::IfcNamedUnit::Dimensions() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcDimensionalExponents>(true); }
void Ifc4x3_rc2::IfcNamedUnit::setDimensions(::Ifc4x3_rc2::IfcDimensionalExponents* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcUnitEnum::Value Ifc4x3_rc2::IfcNamedUnit::UnitType() const {  return ::Ifc4x3_rc2::IfcUnitEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc2::IfcNamedUnit::setUnitType(::Ifc4x3_rc2::IfcUnitEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcUnitEnum::ToString(v)));data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcNamedUnit::declaration() const { return *IFC4X3_RC2_IfcNamedUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcNamedUnit::Class() { return *IFC4X3_RC2_IfcNamedUnit_type; }
Ifc4x3_rc2::IfcNamedUnit::IfcNamedUnit(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcNamedUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcNamedUnit::IfcNamedUnit(::Ifc4x3_rc2::IfcDimensionalExponents* v1_Dimensions, ::Ifc4x3_rc2::IfcUnitEnum::Value v2_UnitType) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcUnitEnum::ToString(v2_UnitType))));data_->setArgument(1,attr);} }

// Function implementations for IfcNavigationElement
boost::optional< ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value > Ifc4x3_rc2::IfcNavigationElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcNavigationElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcNavigationElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcNavigationElement::declaration() const { return *IFC4X3_RC2_IfcNavigationElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcNavigationElement::Class() { return *IFC4X3_RC2_IfcNavigationElement_type; }
Ifc4x3_rc2::IfcNavigationElement::IfcNavigationElement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcNavigationElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcNavigationElement::IfcNavigationElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcNavigationElementTypeEnum::Value Ifc4x3_rc2::IfcNavigationElementType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcNavigationElementType::setPredefinedType(::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcNavigationElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcNavigationElementType::declaration() const { return *IFC4X3_RC2_IfcNavigationElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcNavigationElementType::Class() { return *IFC4X3_RC2_IfcNavigationElementType_type; }
Ifc4x3_rc2::IfcNavigationElementType::IfcNavigationElementType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcNavigationElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcNavigationElementType::IfcNavigationElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcNavigationElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcNavigationElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcObject
boost::optional< std::string > Ifc4x3_rc2::IfcObject::ObjectType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcObject::setObjectType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }

::Ifc4x3_rc2::IfcRelDefinesByObject::list::ptr Ifc4x3_rc2::IfcObject::IsDeclaredBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByObject_type, 4)->as<IfcRelDefinesByObject>(); }
::Ifc4x3_rc2::IfcRelDefinesByObject::list::ptr Ifc4x3_rc2::IfcObject::Declares() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByObject_type, 5)->as<IfcRelDefinesByObject>(); }
::Ifc4x3_rc2::IfcRelDefinesByType::list::ptr Ifc4x3_rc2::IfcObject::IsTypedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByType_type, 4)->as<IfcRelDefinesByType>(); }
::Ifc4x3_rc2::IfcRelDefinesByProperties::list::ptr Ifc4x3_rc2::IfcObject::IsDefinedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByProperties_type, 4)->as<IfcRelDefinesByProperties>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcObject::declaration() const { return *IFC4X3_RC2_IfcObject_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcObject::Class() { return *IFC4X3_RC2_IfcObject_type; }
Ifc4x3_rc2::IfcObject::IfcObject(IfcEntityInstanceData* e) : IfcObjectDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcObject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcObject::IfcObject(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcRelAssigns::list::ptr Ifc4x3_rc2::IfcObjectDefinition::HasAssignments() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssigns_type, 4)->as<IfcRelAssigns>(); }
::Ifc4x3_rc2::IfcRelNests::list::ptr Ifc4x3_rc2::IfcObjectDefinition::Nests() const { return data_->getInverse(IFC4X3_RC2_IfcRelNests_type, 5)->as<IfcRelNests>(); }
::Ifc4x3_rc2::IfcRelNests::list::ptr Ifc4x3_rc2::IfcObjectDefinition::IsNestedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelNests_type, 4)->as<IfcRelNests>(); }
::Ifc4x3_rc2::IfcRelDeclares::list::ptr Ifc4x3_rc2::IfcObjectDefinition::HasContext() const { return data_->getInverse(IFC4X3_RC2_IfcRelDeclares_type, 5)->as<IfcRelDeclares>(); }
::Ifc4x3_rc2::IfcRelAggregates::list::ptr Ifc4x3_rc2::IfcObjectDefinition::IsDecomposedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelAggregates_type, 4)->as<IfcRelAggregates>(); }
::Ifc4x3_rc2::IfcRelAggregates::list::ptr Ifc4x3_rc2::IfcObjectDefinition::Decomposes() const { return data_->getInverse(IFC4X3_RC2_IfcRelAggregates_type, 5)->as<IfcRelAggregates>(); }
::Ifc4x3_rc2::IfcRelAssociates::list::ptr Ifc4x3_rc2::IfcObjectDefinition::HasAssociations() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociates_type, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcObjectDefinition::declaration() const { return *IFC4X3_RC2_IfcObjectDefinition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcObjectDefinition::Class() { return *IFC4X3_RC2_IfcObjectDefinition_type; }
Ifc4x3_rc2::IfcObjectDefinition::IfcObjectDefinition(IfcEntityInstanceData* e) : IfcRoot((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcObjectDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcObjectDefinition::IfcObjectDefinition(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcObjectPlacement* Ifc4x3_rc2::IfcObjectPlacement::PlacementRelTo() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcObjectPlacement>(true); }
void Ifc4x3_rc2::IfcObjectPlacement::setPlacementRelTo(::Ifc4x3_rc2::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }

::Ifc4x3_rc2::IfcProduct::list::ptr Ifc4x3_rc2::IfcObjectPlacement::PlacesObject() const { return data_->getInverse(IFC4X3_RC2_IfcProduct_type, 5)->as<IfcProduct>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcObjectPlacement::declaration() const { return *IFC4X3_RC2_IfcObjectPlacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcObjectPlacement::Class() { return *IFC4X3_RC2_IfcObjectPlacement_type; }
Ifc4x3_rc2::IfcObjectPlacement::IfcObjectPlacement(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcObjectPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcObjectPlacement::IfcObjectPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v1_PlacementRelTo) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConstraint >::ptr > Ifc4x3_rc2::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_rc2::IfcConstraint >(); }
void Ifc4x3_rc2::IfcObjective::setBenchmarkValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcConstraint >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcLogicalOperatorEnum::Value > Ifc4x3_rc2::IfcObjective::LogicalAggregator() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcLogicalOperatorEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcObjective::setLogicalAggregator(boost::optional< ::Ifc4x3_rc2::IfcLogicalOperatorEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcLogicalOperatorEnum::ToString(*v)));}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcObjectiveEnum::Value Ifc4x3_rc2::IfcObjective::ObjectiveQualifier() const {  return ::Ifc4x3_rc2::IfcObjectiveEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcObjective::setObjectiveQualifier(::Ifc4x3_rc2::IfcObjectiveEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcObjectiveEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcObjective::UserDefinedQualifier() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcObjective::setUserDefinedQualifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcObjective::declaration() const { return *IFC4X3_RC2_IfcObjective_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcObjective::Class() { return *IFC4X3_RC2_IfcObjective_type; }
Ifc4x3_rc2::IfcObjective::IfcObjective(IfcEntityInstanceData* e) : IfcConstraint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcObjective_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcObjective::IfcObjective(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcConstraintEnum::Value v3_ConstraintGrade, boost::optional< std::string > v4_ConstraintSource, ::Ifc4x3_rc2::IfcActorSelect* v5_CreatingActor, boost::optional< std::string > v6_CreationTime, boost::optional< std::string > v7_UserDefinedGrade, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcConstraint >::ptr > v8_BenchmarkValues, boost::optional< ::Ifc4x3_rc2::IfcLogicalOperatorEnum::Value > v9_LogicalAggregator, ::Ifc4x3_rc2::IfcObjectiveEnum::Value v10_ObjectiveQualifier, boost::optional< std::string > v11_UserDefinedQualifier) : IfcConstraint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::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_rc2::IfcOccupantTypeEnum::Value > Ifc4x3_rc2::IfcOccupant::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcOccupantTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcOccupant::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOccupantTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOccupantTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOccupant::declaration() const { return *IFC4X3_RC2_IfcOccupant_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOccupant::Class() { return *IFC4X3_RC2_IfcOccupant_type; }
Ifc4x3_rc2::IfcOccupant::IfcOccupant(IfcEntityInstanceData* e) : IfcActor((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOccupant_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOccupant::IfcOccupant(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcActorSelect* v6_TheActor, boost::optional< ::Ifc4x3_rc2::IfcOccupantTypeEnum::Value > v7_PredefinedType) : IfcActor((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCurve* Ifc4x3_rc2::IfcOffsetCurve::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcOffsetCurve::setBasisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurve::declaration() const { return *IFC4X3_RC2_IfcOffsetCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurve::Class() { return *IFC4X3_RC2_IfcOffsetCurve_type; }
Ifc4x3_rc2::IfcOffsetCurve::IfcOffsetCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOffsetCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOffsetCurve::IfcOffsetCurve(::Ifc4x3_rc2::IfcCurve* v1_BasisCurve) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOffsetCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BasisCurve));data_->setArgument(0,attr);} }

// Function implementations for IfcOffsetCurve2D
double Ifc4x3_rc2::IfcOffsetCurve2D::Distance() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcOffsetCurve2D::setDistance(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcOffsetCurve2D::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcOffsetCurve2D::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurve2D::declaration() const { return *IFC4X3_RC2_IfcOffsetCurve2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurve2D::Class() { return *IFC4X3_RC2_IfcOffsetCurve2D_type; }
Ifc4x3_rc2::IfcOffsetCurve2D::IfcOffsetCurve2D(IfcEntityInstanceData* e) : IfcOffsetCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOffsetCurve2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOffsetCurve2D::IfcOffsetCurve2D(::Ifc4x3_rc2::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect) : IfcOffsetCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOffsetCurve3D::Distance() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcOffsetCurve3D::setDistance(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcOffsetCurve3D::SelfIntersect() const {  boost::logic::tribool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcOffsetCurve3D::setSelfIntersect(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcOffsetCurve3D::RefDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcOffsetCurve3D::setRefDirection(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurve3D::declaration() const { return *IFC4X3_RC2_IfcOffsetCurve3D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurve3D::Class() { return *IFC4X3_RC2_IfcOffsetCurve3D_type; }
Ifc4x3_rc2::IfcOffsetCurve3D::IfcOffsetCurve3D(IfcEntityInstanceData* e) : IfcOffsetCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOffsetCurve3D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOffsetCurve3D::IfcOffsetCurve3D(::Ifc4x3_rc2::IfcCurve* v1_BasisCurve, double v2_Distance, boost::logic::tribool v3_SelfIntersect, ::Ifc4x3_rc2::IfcDirection* v4_RefDirection) : IfcOffsetCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPointByDistanceExpression >::ptr Ifc4x3_rc2::IfcOffsetCurveByDistances::OffsetValues() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcPointByDistanceExpression >(); }
void Ifc4x3_rc2::IfcOffsetCurveByDistances::setOffsetValues(aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcOffsetCurveByDistances::Tag() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcOffsetCurveByDistances::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurveByDistances::declaration() const { return *IFC4X3_RC2_IfcOffsetCurveByDistances_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOffsetCurveByDistances::Class() { return *IFC4X3_RC2_IfcOffsetCurveByDistances_type; }
Ifc4x3_rc2::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(IfcEntityInstanceData* e) : IfcOffsetCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOffsetCurveByDistances_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOffsetCurveByDistances::IfcOffsetCurveByDistances(::Ifc4x3_rc2::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v2_OffsetValues, boost::optional< std::string > v3_Tag) : IfcOffsetCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOpenCrossProfileDef::HorizontalWidths() const {  bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcOpenCrossProfileDef::setHorizontalWidths(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::vector< double > /*[1:?]*/ Ifc4x3_rc2::IfcOpenCrossProfileDef::Widths() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::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_rc2::IfcOpenCrossProfileDef::Slopes() const {  std::vector< double > /*[1:?]*/ v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::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_rc2::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_rc2::IfcOpenCrossProfileDef::setTags(boost::optional< std::vector< std::string > /*[2:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOpenCrossProfileDef::declaration() const { return *IFC4X3_RC2_IfcOpenCrossProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOpenCrossProfileDef::Class() { return *IFC4X3_RC2_IfcOpenCrossProfileDef_type; }
Ifc4x3_rc2::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOpenCrossProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOpenCrossProfileDef::IfcOpenCrossProfileDef(::Ifc4x3_rc2::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_RC2_IfcOpenCrossProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcOpenShell::declaration() const { return *IFC4X3_RC2_IfcOpenShell_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOpenShell::Class() { return *IFC4X3_RC2_IfcOpenShell_type; }
Ifc4x3_rc2::IfcOpenShell::IfcOpenShell(IfcEntityInstanceData* e) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOpenShell_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOpenShell::IfcOpenShell(aggregate_of< ::Ifc4x3_rc2::IfcFace >::ptr v1_CfsFaces) : IfcConnectedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcOpenShell_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_CfsFaces)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcOpeningElement
boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > Ifc4x3_rc2::IfcOpeningElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcOpeningElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOpeningElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelFillsElement::list::ptr Ifc4x3_rc2::IfcOpeningElement::HasFillings() const { return data_->getInverse(IFC4X3_RC2_IfcRelFillsElement_type, 4)->as<IfcRelFillsElement>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcOpeningElement::declaration() const { return *IFC4X3_RC2_IfcOpeningElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOpeningElement::Class() { return *IFC4X3_RC2_IfcOpeningElement_type; }
Ifc4x3_rc2::IfcOpeningElement::IfcOpeningElement(IfcEntityInstanceData* e) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOpeningElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOpeningElement::IfcOpeningElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcOpeningStandardCase::declaration() const { return *IFC4X3_RC2_IfcOpeningStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOpeningStandardCase::Class() { return *IFC4X3_RC2_IfcOpeningStandardCase_type; }
Ifc4x3_rc2::IfcOpeningStandardCase::IfcOpeningStandardCase(IfcEntityInstanceData* e) : IfcOpeningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOpeningStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOpeningStandardCase::IfcOpeningStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcOpeningElementTypeEnum::Value > v9_PredefinedType) : IfcOpeningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcOrganization::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcOrganization::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
std::string Ifc4x3_rc2::IfcOrganization::Name() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcOrganization::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcOrganization::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcOrganization::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > Ifc4x3_rc2::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_rc2::IfcActorRole >(); }
void Ifc4x3_rc2::IfcOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > Ifc4x3_rc2::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_rc2::IfcAddress >(); }
void Ifc4x3_rc2::IfcOrganization::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(4,attr);} }

::Ifc4x3_rc2::IfcOrganizationRelationship::list::ptr Ifc4x3_rc2::IfcOrganization::IsRelatedBy() const { return data_->getInverse(IFC4X3_RC2_IfcOrganizationRelationship_type, 3)->as<IfcOrganizationRelationship>(); }
::Ifc4x3_rc2::IfcOrganizationRelationship::list::ptr Ifc4x3_rc2::IfcOrganization::Relates() const { return data_->getInverse(IFC4X3_RC2_IfcOrganizationRelationship_type, 2)->as<IfcOrganizationRelationship>(); }
::Ifc4x3_rc2::IfcPersonAndOrganization::list::ptr Ifc4x3_rc2::IfcOrganization::Engages() const { return data_->getInverse(IFC4X3_RC2_IfcPersonAndOrganization_type, 1)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcOrganization::declaration() const { return *IFC4X3_RC2_IfcOrganization_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOrganization::Class() { return *IFC4X3_RC2_IfcOrganization_type; }
Ifc4x3_rc2::IfcOrganization::IfcOrganization(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOrganization_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOrganization::IfcOrganization(boost::optional< std::string > v1_Identification, std::string v2_Name, boost::optional< std::string > v3_Description, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v4_Roles, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v5_Addresses) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOrganization* Ifc4x3_rc2::IfcOrganizationRelationship::RelatingOrganization() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcOrganization>(true); }
void Ifc4x3_rc2::IfcOrganizationRelationship::setRelatingOrganization(::Ifc4x3_rc2::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcOrganization >::ptr Ifc4x3_rc2::IfcOrganizationRelationship::RelatedOrganizations() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcOrganization >(); }
void Ifc4x3_rc2::IfcOrganizationRelationship::setRelatedOrganizations(aggregate_of< ::Ifc4x3_rc2::IfcOrganization >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOrganizationRelationship::declaration() const { return *IFC4X3_RC2_IfcOrganizationRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOrganizationRelationship::Class() { return *IFC4X3_RC2_IfcOrganizationRelationship_type; }
Ifc4x3_rc2::IfcOrganizationRelationship::IfcOrganizationRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOrganizationRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOrganizationRelationship::IfcOrganizationRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcOrganization* v3_RelatingOrganization, aggregate_of< ::Ifc4x3_rc2::IfcOrganization >::ptr v4_RelatedOrganizations) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcOrientedEdge
::Ifc4x3_rc2::IfcEdge* Ifc4x3_rc2::IfcOrientedEdge::EdgeElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcEdge>(true); }
void Ifc4x3_rc2::IfcOrientedEdge::setEdgeElement(::Ifc4x3_rc2::IfcEdge* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
bool Ifc4x3_rc2::IfcOrientedEdge::Orientation() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcOrientedEdge::setOrientation(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOrientedEdge::declaration() const { return *IFC4X3_RC2_IfcOrientedEdge_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOrientedEdge::Class() { return *IFC4X3_RC2_IfcOrientedEdge_type; }
Ifc4x3_rc2::IfcOrientedEdge::IfcOrientedEdge(IfcEntityInstanceData* e) : IfcEdge((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOrientedEdge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOrientedEdge::IfcOrientedEdge(::Ifc4x3_rc2::IfcEdge* v3_EdgeElement, bool v4_Orientation) : IfcEdge((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOuterBoundaryCurve::declaration() const { return *IFC4X3_RC2_IfcOuterBoundaryCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOuterBoundaryCurve::Class() { return *IFC4X3_RC2_IfcOuterBoundaryCurve_type; }
Ifc4x3_rc2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(IfcEntityInstanceData* e) : IfcBoundaryCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOuterBoundaryCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOuterBoundaryCurve::IfcOuterBoundaryCurve(aggregate_of< ::Ifc4x3_rc2::IfcSegment >::ptr v1_Segments, boost::logic::tribool v2_SelfIntersect) : IfcBoundaryCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOutletTypeEnum::Value > Ifc4x3_rc2::IfcOutlet::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcOutletTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcOutlet::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcOutletTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcOutletTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOutlet::declaration() const { return *IFC4X3_RC2_IfcOutlet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOutlet::Class() { return *IFC4X3_RC2_IfcOutlet_type; }
Ifc4x3_rc2::IfcOutlet::IfcOutlet(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOutlet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOutlet::IfcOutlet(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcOutletTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcOutletTypeEnum::Value Ifc4x3_rc2::IfcOutletType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcOutletTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcOutletType::setPredefinedType(::Ifc4x3_rc2::IfcOutletTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcOutletTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOutletType::declaration() const { return *IFC4X3_RC2_IfcOutletType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOutletType::Class() { return *IFC4X3_RC2_IfcOutletType_type; }
Ifc4x3_rc2::IfcOutletType::IfcOutletType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOutletType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOutletType::IfcOutletType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcOutletTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOutletTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcOwnerHistory
::Ifc4x3_rc2::IfcPersonAndOrganization* Ifc4x3_rc2::IfcOwnerHistory::OwningUser() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPersonAndOrganization>(true); }
void Ifc4x3_rc2::IfcOwnerHistory::setOwningUser(::Ifc4x3_rc2::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcApplication* Ifc4x3_rc2::IfcOwnerHistory::OwningApplication() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcApplication>(true); }
void Ifc4x3_rc2::IfcOwnerHistory::setOwningApplication(::Ifc4x3_rc2::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > Ifc4x3_rc2::IfcOwnerHistory::State() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStateEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcOwnerHistory::setState(boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStateEnum::ToString(*v)));}data_->setArgument(2,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcChangeActionEnum::Value > Ifc4x3_rc2::IfcOwnerHistory::ChangeAction() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcChangeActionEnum::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc2::IfcOwnerHistory::setChangeAction(boost::optional< ::Ifc4x3_rc2::IfcChangeActionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcChangeActionEnum::ToString(*v)));}data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcOwnerHistory::LastModifiedDate() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcOwnerHistory::setLastModifiedDate(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcPersonAndOrganization* Ifc4x3_rc2::IfcOwnerHistory::LastModifyingUser() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcPersonAndOrganization>(true); }
void Ifc4x3_rc2::IfcOwnerHistory::setLastModifyingUser(::Ifc4x3_rc2::IfcPersonAndOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcApplication* Ifc4x3_rc2::IfcOwnerHistory::LastModifyingApplication() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcApplication>(true); }
void Ifc4x3_rc2::IfcOwnerHistory::setLastModifyingApplication(::Ifc4x3_rc2::IfcApplication* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
int Ifc4x3_rc2::IfcOwnerHistory::CreationDate() const {  int v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcOwnerHistory::setCreationDate(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcOwnerHistory::declaration() const { return *IFC4X3_RC2_IfcOwnerHistory_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcOwnerHistory::Class() { return *IFC4X3_RC2_IfcOwnerHistory_type; }
Ifc4x3_rc2::IfcOwnerHistory::IfcOwnerHistory(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcOwnerHistory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcOwnerHistory::IfcOwnerHistory(::Ifc4x3_rc2::IfcPersonAndOrganization* v1_OwningUser, ::Ifc4x3_rc2::IfcApplication* v2_OwningApplication, boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v3_State, boost::optional< ::Ifc4x3_rc2::IfcChangeActionEnum::Value > v4_ChangeAction, boost::optional< int > v5_LastModifiedDate, ::Ifc4x3_rc2::IfcPersonAndOrganization* v6_LastModifyingUser, ::Ifc4x3_rc2::IfcApplication* v7_LastModifyingApplication, int v8_CreationDate) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcAxis2Placement2D* Ifc4x3_rc2::IfcParameterizedProfileDef::Position() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAxis2Placement2D>(true); }
void Ifc4x3_rc2::IfcParameterizedProfileDef::setPosition(::Ifc4x3_rc2::IfcAxis2Placement2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcParameterizedProfileDef::declaration() const { return *IFC4X3_RC2_IfcParameterizedProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcParameterizedProfileDef::Class() { return *IFC4X3_RC2_IfcParameterizedProfileDef_type; }
Ifc4x3_rc2::IfcParameterizedProfileDef::IfcParameterizedProfileDef(IfcEntityInstanceData* e) : IfcProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcParameterizedProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcParameterizedProfileDef::IfcParameterizedProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position) : IfcProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcParameterizedProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcOrientedEdge >::ptr Ifc4x3_rc2::IfcPath::EdgeList() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcOrientedEdge >(); }
void Ifc4x3_rc2::IfcPath::setEdgeList(aggregate_of< ::Ifc4x3_rc2::IfcOrientedEdge >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPath::declaration() const { return *IFC4X3_RC2_IfcPath_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPath::Class() { return *IFC4X3_RC2_IfcPath_type; }
Ifc4x3_rc2::IfcPath::IfcPath(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPath_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPath::IfcPath(aggregate_of< ::Ifc4x3_rc2::IfcOrientedEdge >::ptr v1_EdgeList) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPavement::Flexible() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } bool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcPavement::setFlexible(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPavement::declaration() const { return *IFC4X3_RC2_IfcPavement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPavement::Class() { return *IFC4X3_RC2_IfcPavement_type; }
Ifc4x3_rc2::IfcPavement::IfcPavement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPavement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPavement::IfcPavement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< bool > v9_Flexible) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPavementType::Flexible() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcPavementType::setFlexible(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPavementType::declaration() const { return *IFC4X3_RC2_IfcPavementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPavementType::Class() { return *IFC4X3_RC2_IfcPavementType_type; }
Ifc4x3_rc2::IfcPavementType::IfcPavementType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPavementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPavementType::IfcPavementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::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_RC2_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_rc2::IfcSurface* Ifc4x3_rc2::IfcPcurve::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcPcurve::setBasisSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcPcurve::ReferenceCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcPcurve::setReferenceCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPcurve::declaration() const { return *IFC4X3_RC2_IfcPcurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPcurve::Class() { return *IFC4X3_RC2_IfcPcurve_type; }
Ifc4x3_rc2::IfcPcurve::IfcPcurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPcurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPcurve::IfcPcurve(::Ifc4x3_rc2::IfcSurface* v1_BasisSurface, ::Ifc4x3_rc2::IfcCurve* v2_ReferenceCurve) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPerformanceHistory::LifeCyclePhase() const {  std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcPerformanceHistory::setLifeCyclePhase(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::Value > Ifc4x3_rc2::IfcPerformanceHistory::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcPerformanceHistory::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPerformanceHistoryTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPerformanceHistory::declaration() const { return *IFC4X3_RC2_IfcPerformanceHistory_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPerformanceHistory::Class() { return *IFC4X3_RC2_IfcPerformanceHistory_type; }
Ifc4x3_rc2::IfcPerformanceHistory::IfcPerformanceHistory(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPerformanceHistory_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPerformanceHistory::IfcPerformanceHistory(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPerformanceHistoryTypeEnum::Value > v8_PredefinedType) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPermeableCoveringOperationEnum::Value Ifc4x3_rc2::IfcPermeableCoveringProperties::OperationType() const {  return ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcPermeableCoveringProperties::setOperationType(::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::ToString(v)));data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value Ifc4x3_rc2::IfcPermeableCoveringProperties::PanelPosition() const {  return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcPermeableCoveringProperties::setPanelPosition(::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcPermeableCoveringProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcPermeableCoveringProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcPermeableCoveringProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcPermeableCoveringProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcPermeableCoveringProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); }
void Ifc4x3_rc2::IfcPermeableCoveringProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPermeableCoveringProperties::declaration() const { return *IFC4X3_RC2_IfcPermeableCoveringProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPermeableCoveringProperties::Class() { return *IFC4X3_RC2_IfcPermeableCoveringProperties_type; }
Ifc4x3_rc2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPermeableCoveringProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPermeableCoveringProperties::IfcPermeableCoveringProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcPermeableCoveringOperationEnum::Value v5_OperationType, ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_rc2::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPermeableCoveringOperationEnum::ToString(v5_OperationType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PanelPosition,::Ifc4x3_rc2::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_rc2::IfcPermitTypeEnum::Value > Ifc4x3_rc2::IfcPermit::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPermitTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcPermit::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPermitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPermitTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPermit::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcPermit::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPermit::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcPermit::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPermit::declaration() const { return *IFC4X3_RC2_IfcPermit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPermit::Class() { return *IFC4X3_RC2_IfcPermit_type; }
Ifc4x3_rc2::IfcPermit::IfcPermit(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPermit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPermit::IfcPermit(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPermitTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPerson::Identification() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPerson::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPerson::FamilyName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPerson::setFamilyName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPerson::GivenName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcPerson::setGivenName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcPerson::setMiddleNames(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcPerson::setPrefixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcPerson::setSuffixTitles(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > Ifc4x3_rc2::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_rc2::IfcActorRole >(); }
void Ifc4x3_rc2::IfcPerson::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > Ifc4x3_rc2::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_rc2::IfcAddress >(); }
void Ifc4x3_rc2::IfcPerson::setAddresses(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }

::Ifc4x3_rc2::IfcPersonAndOrganization::list::ptr Ifc4x3_rc2::IfcPerson::EngagedIn() const { return data_->getInverse(IFC4X3_RC2_IfcPersonAndOrganization_type, 0)->as<IfcPersonAndOrganization>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPerson::declaration() const { return *IFC4X3_RC2_IfcPerson_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPerson::Class() { return *IFC4X3_RC2_IfcPerson_type; }
Ifc4x3_rc2::IfcPerson::IfcPerson(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPerson_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcActorRole >::ptr > v7_Roles, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAddress >::ptr > v8_Addresses) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPerson* Ifc4x3_rc2::IfcPersonAndOrganization::ThePerson() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPerson>(true); }
void Ifc4x3_rc2::IfcPersonAndOrganization::setThePerson(::Ifc4x3_rc2::IfcPerson* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcOrganization* Ifc4x3_rc2::IfcPersonAndOrganization::TheOrganization() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcOrganization>(true); }
void Ifc4x3_rc2::IfcPersonAndOrganization::setTheOrganization(::Ifc4x3_rc2::IfcOrganization* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > Ifc4x3_rc2::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_rc2::IfcActorRole >(); }
void Ifc4x3_rc2::IfcPersonAndOrganization::setRoles(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPersonAndOrganization::declaration() const { return *IFC4X3_RC2_IfcPersonAndOrganization_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPersonAndOrganization::Class() { return *IFC4X3_RC2_IfcPersonAndOrganization_type; }
Ifc4x3_rc2::IfcPersonAndOrganization::IfcPersonAndOrganization(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPersonAndOrganization_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPersonAndOrganization::IfcPersonAndOrganization(::Ifc4x3_rc2::IfcPerson* v1_ThePerson, ::Ifc4x3_rc2::IfcOrganization* v2_TheOrganization, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcActorRole >::ptr > v3_Roles) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPhysicalQuantity >::ptr Ifc4x3_rc2::IfcPhysicalComplexQuantity::HasQuantities() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcPhysicalQuantity >(); }
void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setHasQuantities(aggregate_of< ::Ifc4x3_rc2::IfcPhysicalQuantity >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
std::string Ifc4x3_rc2::IfcPhysicalComplexQuantity::Discrimination() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setDiscrimination(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPhysicalComplexQuantity::Quality() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setQuality(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPhysicalComplexQuantity::Usage() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcPhysicalComplexQuantity::setUsage(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalComplexQuantity::declaration() const { return *IFC4X3_RC2_IfcPhysicalComplexQuantity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalComplexQuantity::Class() { return *IFC4X3_RC2_IfcPhysicalComplexQuantity_type; }
Ifc4x3_rc2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(IfcEntityInstanceData* e) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPhysicalComplexQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPhysicalComplexQuantity::IfcPhysicalComplexQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::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_RC2_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_rc2::IfcPhysicalQuantity::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPhysicalQuantity::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPhysicalQuantity::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPhysicalQuantity::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }

::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcPhysicalQuantity::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc2::IfcPhysicalComplexQuantity::list::ptr Ifc4x3_rc2::IfcPhysicalQuantity::PartOfComplex() const { return data_->getInverse(IFC4X3_RC2_IfcPhysicalComplexQuantity_type, 2)->as<IfcPhysicalComplexQuantity>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalQuantity::declaration() const { return *IFC4X3_RC2_IfcPhysicalQuantity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalQuantity::Class() { return *IFC4X3_RC2_IfcPhysicalQuantity_type; }
Ifc4x3_rc2::IfcPhysicalQuantity::IfcPhysicalQuantity(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPhysicalQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPhysicalQuantity::IfcPhysicalQuantity(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcNamedUnit* Ifc4x3_rc2::IfcPhysicalSimpleQuantity::Unit() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcNamedUnit>(true); }
void Ifc4x3_rc2::IfcPhysicalSimpleQuantity::setUnit(::Ifc4x3_rc2::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalSimpleQuantity::declaration() const { return *IFC4X3_RC2_IfcPhysicalSimpleQuantity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPhysicalSimpleQuantity::Class() { return *IFC4X3_RC2_IfcPhysicalSimpleQuantity_type; }
Ifc4x3_rc2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(IfcEntityInstanceData* e) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPhysicalSimpleQuantity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPhysicalSimpleQuantity::IfcPhysicalSimpleQuantity(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit) : IfcPhysicalQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPileTypeEnum::Value > Ifc4x3_rc2::IfcPile::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPileTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcPile::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPileTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPileTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcPileConstructionEnum::Value > Ifc4x3_rc2::IfcPile::ConstructionType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPileConstructionEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcPile::setConstructionType(boost::optional< ::Ifc4x3_rc2::IfcPileConstructionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPileConstructionEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPile::declaration() const { return *IFC4X3_RC2_IfcPile_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPile::Class() { return *IFC4X3_RC2_IfcPile_type; }
Ifc4x3_rc2::IfcPile::IfcPile(IfcEntityInstanceData* e) : IfcDeepFoundation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPile_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPile::IfcPile(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcPileTypeEnum::Value > v9_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcPileConstructionEnum::Value > v10_ConstructionType) : IfcDeepFoundation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcPileTypeEnum::Value Ifc4x3_rc2::IfcPileType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcPileTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcPileType::setPredefinedType(::Ifc4x3_rc2::IfcPileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPileTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPileType::declaration() const { return *IFC4X3_RC2_IfcPileType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPileType::Class() { return *IFC4X3_RC2_IfcPileType_type; }
Ifc4x3_rc2::IfcPileType::IfcPileType(IfcEntityInstanceData* e) : IfcDeepFoundationType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPileType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPileType::IfcPileType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcPileTypeEnum::Value v10_PredefinedType) : IfcDeepFoundationType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPileTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPipeFitting
boost::optional< ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value > Ifc4x3_rc2::IfcPipeFitting::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcPipeFitting::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPipeFittingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPipeFitting::declaration() const { return *IFC4X3_RC2_IfcPipeFitting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPipeFitting::Class() { return *IFC4X3_RC2_IfcPipeFitting_type; }
Ifc4x3_rc2::IfcPipeFitting::IfcPipeFitting(IfcEntityInstanceData* e) : IfcFlowFitting((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPipeFitting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPipeFitting::IfcPipeFitting(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value > v9_PredefinedType) : IfcFlowFitting((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPipeFittingTypeEnum::Value Ifc4x3_rc2::IfcPipeFittingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcPipeFittingType::setPredefinedType(::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPipeFittingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPipeFittingType::declaration() const { return *IFC4X3_RC2_IfcPipeFittingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPipeFittingType::Class() { return *IFC4X3_RC2_IfcPipeFittingType_type; }
Ifc4x3_rc2::IfcPipeFittingType::IfcPipeFittingType(IfcEntityInstanceData* e) : IfcFlowFittingType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPipeFittingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPipeFittingType::IfcPipeFittingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcPipeFittingTypeEnum::Value v10_PredefinedType) : IfcFlowFittingType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPipeFittingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPipeSegment
boost::optional< ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value > Ifc4x3_rc2::IfcPipeSegment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcPipeSegment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPipeSegment::declaration() const { return *IFC4X3_RC2_IfcPipeSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPipeSegment::Class() { return *IFC4X3_RC2_IfcPipeSegment_type; }
Ifc4x3_rc2::IfcPipeSegment::IfcPipeSegment(IfcEntityInstanceData* e) : IfcFlowSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPipeSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPipeSegment::IfcPipeSegment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value > v9_PredefinedType) : IfcFlowSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPipeSegmentTypeEnum::Value Ifc4x3_rc2::IfcPipeSegmentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcPipeSegmentType::setPredefinedType(::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPipeSegmentType::declaration() const { return *IFC4X3_RC2_IfcPipeSegmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPipeSegmentType::Class() { return *IFC4X3_RC2_IfcPipeSegmentType_type; }
Ifc4x3_rc2::IfcPipeSegmentType::IfcPipeSegmentType(IfcEntityInstanceData* e) : IfcFlowSegmentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPipeSegmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPipeSegmentType::IfcPipeSegmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcPipeSegmentTypeEnum::Value v10_PredefinedType) : IfcFlowSegmentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPipeSegmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPixelTexture
int Ifc4x3_rc2::IfcPixelTexture::Width() const {  int v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcPixelTexture::setWidth(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
int Ifc4x3_rc2::IfcPixelTexture::Height() const {  int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcPixelTexture::setHeight(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
int Ifc4x3_rc2::IfcPixelTexture::ColourComponents() const {  int v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcPixelTexture::setColourComponents(int v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
std::vector< boost::dynamic_bitset<> > /*[1:?]*/ Ifc4x3_rc2::IfcPixelTexture::Pixel() const {  std::vector< boost::dynamic_bitset<> > /*[1:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::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_rc2::IfcPixelTexture::declaration() const { return *IFC4X3_RC2_IfcPixelTexture_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPixelTexture::Class() { return *IFC4X3_RC2_IfcPixelTexture_type; }
Ifc4x3_rc2::IfcPixelTexture::IfcPixelTexture(IfcEntityInstanceData* e) : IfcSurfaceTexture((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPixelTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPixelTexture::IfcPixelTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcPoint* Ifc4x3_rc2::IfcPlacement::Location() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPoint>(true); }
void Ifc4x3_rc2::IfcPlacement::setLocation(::Ifc4x3_rc2::IfcPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPlacement::declaration() const { return *IFC4X3_RC2_IfcPlacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlacement::Class() { return *IFC4X3_RC2_IfcPlacement_type; }
Ifc4x3_rc2::IfcPlacement::IfcPlacement(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlacement::IfcPlacement(::Ifc4x3_rc2::IfcPoint* v1_Location) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPlacement_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Location));data_->setArgument(0,attr);} }

// Function implementations for IfcPlanarBox
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcPlanarBox::Placement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcPlanarBox::setPlacement(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPlanarBox::declaration() const { return *IFC4X3_RC2_IfcPlanarBox_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlanarBox::Class() { return *IFC4X3_RC2_IfcPlanarBox_type; }
Ifc4x3_rc2::IfcPlanarBox::IfcPlanarBox(IfcEntityInstanceData* e) : IfcPlanarExtent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlanarBox_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlanarBox::IfcPlanarBox(double v1_SizeInX, double v2_SizeInY, ::Ifc4x3_rc2::IfcAxis2Placement* v3_Placement) : IfcPlanarExtent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPlanarExtent::SizeInX() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPlanarExtent::setSizeInX(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcPlanarExtent::SizeInY() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPlanarExtent::setSizeInY(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPlanarExtent::declaration() const { return *IFC4X3_RC2_IfcPlanarExtent_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlanarExtent::Class() { return *IFC4X3_RC2_IfcPlanarExtent_type; }
Ifc4x3_rc2::IfcPlanarExtent::IfcPlanarExtent(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlanarExtent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlanarExtent::IfcPlanarExtent(double v1_SizeInX, double v2_SizeInY) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPlane::declaration() const { return *IFC4X3_RC2_IfcPlane_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlane::Class() { return *IFC4X3_RC2_IfcPlane_type; }
Ifc4x3_rc2::IfcPlane::IfcPlane(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlane_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlane::IfcPlane(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPlane_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);} }

// Function implementations for IfcPlant


const IfcParse::entity& Ifc4x3_rc2::IfcPlant::declaration() const { return *IFC4X3_RC2_IfcPlant_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlant::Class() { return *IFC4X3_RC2_IfcPlant_type; }
Ifc4x3_rc2::IfcPlant::IfcPlant(IfcEntityInstanceData* e) : IfcGeographicElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlant_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlant::IfcPlant(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcGeographicElementTypeEnum::Value > v9_PredefinedType) : IfcGeographicElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPlateTypeEnum::Value > Ifc4x3_rc2::IfcPlate::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPlateTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcPlate::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPlateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPlateTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPlate::declaration() const { return *IFC4X3_RC2_IfcPlate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlate::Class() { return *IFC4X3_RC2_IfcPlate_type; }
Ifc4x3_rc2::IfcPlate::IfcPlate(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlate::IfcPlate(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcPlateTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPlateStandardCase::declaration() const { return *IFC4X3_RC2_IfcPlateStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlateStandardCase::Class() { return *IFC4X3_RC2_IfcPlateStandardCase_type; }
Ifc4x3_rc2::IfcPlateStandardCase::IfcPlateStandardCase(IfcEntityInstanceData* e) : IfcPlate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlateStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlateStandardCase::IfcPlateStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcPlateTypeEnum::Value > v9_PredefinedType) : IfcPlate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPlateTypeEnum::Value Ifc4x3_rc2::IfcPlateType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcPlateTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcPlateType::setPredefinedType(::Ifc4x3_rc2::IfcPlateTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPlateTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPlateType::declaration() const { return *IFC4X3_RC2_IfcPlateType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPlateType::Class() { return *IFC4X3_RC2_IfcPlateType_type; }
Ifc4x3_rc2::IfcPlateType::IfcPlateType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPlateType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPlateType::IfcPlateType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcPlateTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPlateTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcPoint


const IfcParse::entity& Ifc4x3_rc2::IfcPoint::declaration() const { return *IFC4X3_RC2_IfcPoint_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPoint::Class() { return *IFC4X3_RC2_IfcPoint_type; }
Ifc4x3_rc2::IfcPoint::IfcPoint(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPoint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPoint::IfcPoint() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPoint_type);  }

// Function implementations for IfcPointByDistanceExpression
::Ifc4x3_rc2::IfcCurveMeasureSelect* Ifc4x3_rc2::IfcPointByDistanceExpression::DistanceAlong() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurveMeasureSelect>(true); }
void Ifc4x3_rc2::IfcPointByDistanceExpression::setDistanceAlong(::Ifc4x3_rc2::IfcCurveMeasureSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcPointByDistanceExpression::OffsetLateral() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetLateral(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcPointByDistanceExpression::OffsetVertical() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetVertical(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcPointByDistanceExpression::OffsetLongitudinal() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcPointByDistanceExpression::setOffsetLongitudinal(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcPointByDistanceExpression::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcPointByDistanceExpression::setBasisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPointByDistanceExpression::declaration() const { return *IFC4X3_RC2_IfcPointByDistanceExpression_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPointByDistanceExpression::Class() { return *IFC4X3_RC2_IfcPointByDistanceExpression_type; }
Ifc4x3_rc2::IfcPointByDistanceExpression::IfcPointByDistanceExpression(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPointByDistanceExpression_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPointByDistanceExpression::IfcPointByDistanceExpression(::Ifc4x3_rc2::IfcCurveMeasureSelect* v1_DistanceAlong, boost::optional< double > v2_OffsetLateral, boost::optional< double > v3_OffsetVertical, boost::optional< double > v4_OffsetLongitudinal, ::Ifc4x3_rc2::IfcCurve* v5_BasisCurve) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPointByDistanceExpression_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); }{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_BasisCurve));data_->setArgument(4,attr);} }

// Function implementations for IfcPointOnCurve
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcPointOnCurve::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcPointOnCurve::setBasisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcPointOnCurve::PointParameter() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPointOnCurve::setPointParameter(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPointOnCurve::declaration() const { return *IFC4X3_RC2_IfcPointOnCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPointOnCurve::Class() { return *IFC4X3_RC2_IfcPointOnCurve_type; }
Ifc4x3_rc2::IfcPointOnCurve::IfcPointOnCurve(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPointOnCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPointOnCurve::IfcPointOnCurve(::Ifc4x3_rc2::IfcCurve* v1_BasisCurve, double v2_PointParameter) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurface* Ifc4x3_rc2::IfcPointOnSurface::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcPointOnSurface::setBasisSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcPointOnSurface::PointParameterU() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPointOnSurface::setPointParameterU(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcPointOnSurface::PointParameterV() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcPointOnSurface::setPointParameterV(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPointOnSurface::declaration() const { return *IFC4X3_RC2_IfcPointOnSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPointOnSurface::Class() { return *IFC4X3_RC2_IfcPointOnSurface_type; }
Ifc4x3_rc2::IfcPointOnSurface::IfcPointOnSurface(IfcEntityInstanceData* e) : IfcPoint((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPointOnSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPointOnSurface::IfcPointOnSurface(::Ifc4x3_rc2::IfcSurface* v1_BasisSurface, double v2_PointParameterU, double v3_PointParameterV) : IfcPoint((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianPoint >::ptr Ifc4x3_rc2::IfcPolyLoop::Polygon() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcCartesianPoint >(); }
void Ifc4x3_rc2::IfcPolyLoop::setPolygon(aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPolyLoop::declaration() const { return *IFC4X3_RC2_IfcPolyLoop_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPolyLoop::Class() { return *IFC4X3_RC2_IfcPolyLoop_type; }
Ifc4x3_rc2::IfcPolyLoop::IfcPolyLoop(IfcEntityInstanceData* e) : IfcLoop((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPolyLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPolyLoop::IfcPolyLoop(aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v1_Polygon) : IfcLoop((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPolyLoop_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Polygon)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcPolygonalBoundedHalfSpace
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::setPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcBoundedCurve* Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::PolygonalBoundary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcBoundedCurve>(true); }
void Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::setPolygonalBoundary(::Ifc4x3_rc2::IfcBoundedCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::declaration() const { return *IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::Class() { return *IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type; }
Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(IfcEntityInstanceData* e) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPolygonalBoundedHalfSpace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPolygonalBoundedHalfSpace::IfcPolygonalBoundedHalfSpace(::Ifc4x3_rc2::IfcSurface* v1_BaseSurface, bool v2_AgreementFlag, ::Ifc4x3_rc2::IfcAxis2Placement3D* v3_Position, ::Ifc4x3_rc2::IfcBoundedCurve* v4_PolygonalBoundary) : IfcHalfSpaceSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPolygonalFaceSet::Closed() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPolygonalFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >::ptr Ifc4x3_rc2::IfcPolygonalFaceSet::Faces() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >(); }
void Ifc4x3_rc2::IfcPolygonalFaceSet::setFaces(aggregate_of< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcPolygonalFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPolygonalFaceSet::declaration() const { return *IFC4X3_RC2_IfcPolygonalFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPolygonalFaceSet::Class() { return *IFC4X3_RC2_IfcPolygonalFaceSet_type; }
Ifc4x3_rc2::IfcPolygonalFaceSet::IfcPolygonalFaceSet(IfcEntityInstanceData* e) : IfcTessellatedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPolygonalFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPolygonalFaceSet::IfcPolygonalFaceSet(::Ifc4x3_rc2::IfcCartesianPointList3D* v1_Coordinates, boost::optional< bool > v2_Closed, aggregate_of< ::Ifc4x3_rc2::IfcIndexedPolygonalFace >::ptr v3_Faces, boost::optional< std::vector< int > /*[1:?]*/ > v4_PnIndex) : IfcTessellatedFaceSet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCartesianPoint >::ptr Ifc4x3_rc2::IfcPolyline::Points() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcCartesianPoint >(); }
void Ifc4x3_rc2::IfcPolyline::setPoints(aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPolyline::declaration() const { return *IFC4X3_RC2_IfcPolyline_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPolyline::Class() { return *IFC4X3_RC2_IfcPolyline_type; }
Ifc4x3_rc2::IfcPolyline::IfcPolyline(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPolyline_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPolyline::IfcPolyline(aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v1_Points) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPolyline_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Points)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcPort

::Ifc4x3_rc2::IfcRelConnectsPortToElement::list::ptr Ifc4x3_rc2::IfcPort::ContainedIn() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsPortToElement_type, 4)->as<IfcRelConnectsPortToElement>(); }
::Ifc4x3_rc2::IfcRelConnectsPorts::list::ptr Ifc4x3_rc2::IfcPort::ConnectedFrom() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsPorts_type, 5)->as<IfcRelConnectsPorts>(); }
::Ifc4x3_rc2::IfcRelConnectsPorts::list::ptr Ifc4x3_rc2::IfcPort::ConnectedTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsPorts_type, 4)->as<IfcRelConnectsPorts>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPort::declaration() const { return *IFC4X3_RC2_IfcPort_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPort::Class() { return *IFC4X3_RC2_IfcPort_type; }
Ifc4x3_rc2::IfcPort::IfcPort(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPort_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPort::IfcPort(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcPositioningElement::ContainedInStructure() const { return data_->getInverse(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, 4)->as<IfcRelContainedInSpatialStructure>(); }
::Ifc4x3_rc2::IfcRelPositions::list::ptr Ifc4x3_rc2::IfcPositioningElement::Positions() const { return data_->getInverse(IFC4X3_RC2_IfcRelPositions_type, 4)->as<IfcRelPositions>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPositioningElement::declaration() const { return *IFC4X3_RC2_IfcPositioningElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPositioningElement::Class() { return *IFC4X3_RC2_IfcPositioningElement_type; }
Ifc4x3_rc2::IfcPositioningElement::IfcPositioningElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPositioningElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPositioningElement::IfcPositioningElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPostalAddress::InternalLocation() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcPostalAddress::setInternalLocation(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcPostalAddress::setAddressLines(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::PostalBox() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcPostalAddress::setPostalBox(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::Town() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcPostalAddress::setTown(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::Region() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcPostalAddress::setRegion(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::PostalCode() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcPostalAddress::setPostalCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPostalAddress::Country() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcPostalAddress::setCountry(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPostalAddress::declaration() const { return *IFC4X3_RC2_IfcPostalAddress_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPostalAddress::Class() { return *IFC4X3_RC2_IfcPostalAddress_type; }
Ifc4x3_rc2::IfcPostalAddress::IfcPostalAddress(IfcEntityInstanceData* e) : IfcAddress((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPostalAddress_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPostalAddress::IfcPostalAddress(boost::optional< ::Ifc4x3_rc2::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_RC2_IfcPostalAddress_type);  if (v1_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v1_Purpose,::Ifc4x3_rc2::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_rc2::IfcPreDefinedColour::declaration() const { return *IFC4X3_RC2_IfcPreDefinedColour_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedColour::Class() { return *IFC4X3_RC2_IfcPreDefinedColour_type; }
Ifc4x3_rc2::IfcPreDefinedColour::IfcPreDefinedColour(IfcEntityInstanceData* e) : IfcPreDefinedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPreDefinedColour_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPreDefinedColour::IfcPreDefinedColour(std::string v1_Name) : IfcPreDefinedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreDefinedColour_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPreDefinedCurveFont


const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedCurveFont::declaration() const { return *IFC4X3_RC2_IfcPreDefinedCurveFont_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedCurveFont::Class() { return *IFC4X3_RC2_IfcPreDefinedCurveFont_type; }
Ifc4x3_rc2::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(IfcEntityInstanceData* e) : IfcPreDefinedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPreDefinedCurveFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPreDefinedCurveFont::IfcPreDefinedCurveFont(std::string v1_Name) : IfcPreDefinedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreDefinedCurveFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPreDefinedItem
std::string Ifc4x3_rc2::IfcPreDefinedItem::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPreDefinedItem::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedItem::declaration() const { return *IFC4X3_RC2_IfcPreDefinedItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedItem::Class() { return *IFC4X3_RC2_IfcPreDefinedItem_type; }
Ifc4x3_rc2::IfcPreDefinedItem::IfcPreDefinedItem(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPreDefinedItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPreDefinedItem::IfcPreDefinedItem(std::string v1_Name) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreDefinedItem_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPreDefinedProperties


const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedProperties::declaration() const { return *IFC4X3_RC2_IfcPreDefinedProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedProperties::Class() { return *IFC4X3_RC2_IfcPreDefinedProperties_type; }
Ifc4x3_rc2::IfcPreDefinedProperties::IfcPreDefinedProperties(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPreDefinedProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPreDefinedProperties::IfcPreDefinedProperties() : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreDefinedProperties_type);  }

// Function implementations for IfcPreDefinedPropertySet


const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedPropertySet::declaration() const { return *IFC4X3_RC2_IfcPreDefinedPropertySet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedPropertySet::Class() { return *IFC4X3_RC2_IfcPreDefinedPropertySet_type; }
Ifc4x3_rc2::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(IfcEntityInstanceData* e) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPreDefinedPropertySet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPreDefinedPropertySet::IfcPreDefinedPropertySet(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPreDefinedTextFont::declaration() const { return *IFC4X3_RC2_IfcPreDefinedTextFont_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPreDefinedTextFont::Class() { return *IFC4X3_RC2_IfcPreDefinedTextFont_type; }
Ifc4x3_rc2::IfcPreDefinedTextFont::IfcPreDefinedTextFont(IfcEntityInstanceData* e) : IfcPreDefinedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPreDefinedTextFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPreDefinedTextFont::IfcPreDefinedTextFont(std::string v1_Name) : IfcPreDefinedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPreDefinedTextFont_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Name));data_->setArgument(0,attr);} }

// Function implementations for IfcPresentationItem


const IfcParse::entity& Ifc4x3_rc2::IfcPresentationItem::declaration() const { return *IFC4X3_RC2_IfcPresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPresentationItem::Class() { return *IFC4X3_RC2_IfcPresentationItem_type; }
Ifc4x3_rc2::IfcPresentationItem::IfcPresentationItem(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPresentationItem::IfcPresentationItem() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPresentationItem_type);  }

// Function implementations for IfcPresentationLayerAssignment
std::string Ifc4x3_rc2::IfcPresentationLayerAssignment::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPresentationLayerAssignment::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPresentationLayerAssignment::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcPresentationLayerAssignment::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcLayeredItem >::ptr Ifc4x3_rc2::IfcPresentationLayerAssignment::AssignedItems() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcLayeredItem >(); }
void Ifc4x3_rc2::IfcPresentationLayerAssignment::setAssignedItems(aggregate_of< ::Ifc4x3_rc2::IfcLayeredItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPresentationLayerAssignment::Identifier() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcPresentationLayerAssignment::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPresentationLayerAssignment::declaration() const { return *IFC4X3_RC2_IfcPresentationLayerAssignment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPresentationLayerAssignment::Class() { return *IFC4X3_RC2_IfcPresentationLayerAssignment_type; }
Ifc4x3_rc2::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPresentationLayerAssignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPresentationLayerAssignment::IfcPresentationLayerAssignment(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcLayeredItem >::ptr v3_AssignedItems, boost::optional< std::string > v4_Identifier) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcPresentationLayerWithStyle::LayerOn() const {  boost::logic::tribool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcPresentationLayerWithStyle::setLayerOn(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcPresentationLayerWithStyle::LayerFrozen() const {  boost::logic::tribool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcPresentationLayerWithStyle::setLayerFrozen(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcPresentationLayerWithStyle::LayerBlocked() const {  boost::logic::tribool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcPresentationLayerWithStyle::setLayerBlocked(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcPresentationStyle >::ptr Ifc4x3_rc2::IfcPresentationLayerWithStyle::LayerStyles() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcPresentationStyle >(); }
void Ifc4x3_rc2::IfcPresentationLayerWithStyle::setLayerStyles(aggregate_of< ::Ifc4x3_rc2::IfcPresentationStyle >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPresentationLayerWithStyle::declaration() const { return *IFC4X3_RC2_IfcPresentationLayerWithStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPresentationLayerWithStyle::Class() { return *IFC4X3_RC2_IfcPresentationLayerWithStyle_type; }
Ifc4x3_rc2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(IfcEntityInstanceData* e) : IfcPresentationLayerAssignment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPresentationLayerWithStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPresentationLayerWithStyle::IfcPresentationLayerWithStyle(std::string v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcLayeredItem >::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_rc2::IfcPresentationStyle >::ptr v8_LayerStyles) : IfcPresentationLayerAssignment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcPresentationStyle::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPresentationStyle::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPresentationStyle::declaration() const { return *IFC4X3_RC2_IfcPresentationStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPresentationStyle::Class() { return *IFC4X3_RC2_IfcPresentationStyle_type; }
Ifc4x3_rc2::IfcPresentationStyle::IfcPresentationStyle(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPresentationStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPresentationStyle::IfcPresentationStyle(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcPresentationStyleSelect >::ptr Ifc4x3_rc2::IfcPresentationStyleAssignment::Styles() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcPresentationStyleSelect >(); }
void Ifc4x3_rc2::IfcPresentationStyleAssignment::setStyles(aggregate_of< ::Ifc4x3_rc2::IfcPresentationStyleSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPresentationStyleAssignment::declaration() const { return *IFC4X3_RC2_IfcPresentationStyleAssignment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPresentationStyleAssignment::Class() { return *IFC4X3_RC2_IfcPresentationStyleAssignment_type; }
Ifc4x3_rc2::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPresentationStyleAssignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPresentationStyleAssignment::IfcPresentationStyleAssignment(aggregate_of< ::Ifc4x3_rc2::IfcPresentationStyleSelect >::ptr v1_Styles) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPresentationStyleAssignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Styles)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcProcedure
boost::optional< ::Ifc4x3_rc2::IfcProcedureTypeEnum::Value > Ifc4x3_rc2::IfcProcedure::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProcedureTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcProcedure::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProcedureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProcedureTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProcedure::declaration() const { return *IFC4X3_RC2_IfcProcedure_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProcedure::Class() { return *IFC4X3_RC2_IfcProcedure_type; }
Ifc4x3_rc2::IfcProcedure::IfcProcedure(IfcEntityInstanceData* e) : IfcProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProcedure_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProcedure::IfcProcedure(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcProcedureTypeEnum::Value > v8_PredefinedType) : IfcProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProcedureTypeEnum::Value Ifc4x3_rc2::IfcProcedureType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcProcedureTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcProcedureType::setPredefinedType(::Ifc4x3_rc2::IfcProcedureTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcProcedureTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProcedureType::declaration() const { return *IFC4X3_RC2_IfcProcedureType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProcedureType::Class() { return *IFC4X3_RC2_IfcProcedureType_type; }
Ifc4x3_rc2::IfcProcedureType::IfcProcedureType(IfcEntityInstanceData* e) : IfcTypeProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProcedureType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProcedureType::IfcProcedureType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_rc2::IfcProcedureTypeEnum::Value v10_PredefinedType) : IfcTypeProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProcedureTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcProcess
boost::optional< std::string > Ifc4x3_rc2::IfcProcess::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProcess::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }

::Ifc4x3_rc2::IfcRelSequence::list::ptr Ifc4x3_rc2::IfcProcess::IsPredecessorTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelSequence_type, 4)->as<IfcRelSequence>(); }
::Ifc4x3_rc2::IfcRelSequence::list::ptr Ifc4x3_rc2::IfcProcess::IsSuccessorFrom() const { return data_->getInverse(IFC4X3_RC2_IfcRelSequence_type, 5)->as<IfcRelSequence>(); }
::Ifc4x3_rc2::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc2::IfcProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToProcess_type, 6)->as<IfcRelAssignsToProcess>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcProcess::declaration() const { return *IFC4X3_RC2_IfcProcess_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProcess::Class() { return *IFC4X3_RC2_IfcProcess_type; }
Ifc4x3_rc2::IfcProcess::IfcProcess(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProcess_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProcess::IfcProcess(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcObjectPlacement* Ifc4x3_rc2::IfcProduct::ObjectPlacement() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcObjectPlacement>(true); }
void Ifc4x3_rc2::IfcProduct::setObjectPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcProductRepresentation* Ifc4x3_rc2::IfcProduct::Representation() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcProductRepresentation>(true); }
void Ifc4x3_rc2::IfcProduct::setRepresentation(::Ifc4x3_rc2::IfcProductRepresentation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }

::Ifc4x3_rc2::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc2::IfcProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToProduct_type, 6)->as<IfcRelAssignsToProduct>(); }
::Ifc4x3_rc2::IfcRelPositions::list::ptr Ifc4x3_rc2::IfcProduct::PositionedRelativeTo() const { return data_->getInverse(IFC4X3_RC2_IfcRelPositions_type, 5)->as<IfcRelPositions>(); }
::Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcProduct::ReferencedInStructures() const { return data_->getInverse(IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type, 4)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcProduct::declaration() const { return *IFC4X3_RC2_IfcProduct_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProduct::Class() { return *IFC4X3_RC2_IfcProduct_type; }
Ifc4x3_rc2::IfcProduct::IfcProduct(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProduct_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProduct::IfcProduct(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation) : IfcObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProduct::list::ptr Ifc4x3_rc2::IfcProductDefinitionShape::ShapeOfProduct() const { return data_->getInverse(IFC4X3_RC2_IfcProduct_type, 6)->as<IfcProduct>(); }
::Ifc4x3_rc2::IfcShapeAspect::list::ptr Ifc4x3_rc2::IfcProductDefinitionShape::HasShapeAspects() const { return data_->getInverse(IFC4X3_RC2_IfcShapeAspect_type, 4)->as<IfcShapeAspect>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcProductDefinitionShape::declaration() const { return *IFC4X3_RC2_IfcProductDefinitionShape_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProductDefinitionShape::Class() { return *IFC4X3_RC2_IfcProductDefinitionShape_type; }
Ifc4x3_rc2::IfcProductDefinitionShape::IfcProductDefinitionShape(IfcEntityInstanceData* e) : IfcProductRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProductDefinitionShape_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProductDefinitionShape::IfcProductDefinitionShape(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr v3_Representations) : IfcProductRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProductRepresentation::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcProductRepresentation::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProductRepresentation::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcProductRepresentation::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr Ifc4x3_rc2::IfcProductRepresentation::Representations() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcRepresentation >(); }
void Ifc4x3_rc2::IfcProductRepresentation::setRepresentations(aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProductRepresentation::declaration() const { return *IFC4X3_RC2_IfcProductRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProductRepresentation::Class() { return *IFC4X3_RC2_IfcProductRepresentation_type; }
Ifc4x3_rc2::IfcProductRepresentation::IfcProductRepresentation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProductRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProductRepresentation::IfcProductRepresentation(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcRepresentation >::ptr v3_Representations) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProfileTypeEnum::Value Ifc4x3_rc2::IfcProfileDef::ProfileType() const {  return ::Ifc4x3_rc2::IfcProfileTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcProfileDef::setProfileType(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcProfileTypeEnum::ToString(v)));data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProfileDef::ProfileName() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcProfileDef::setProfileName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }

::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcProfileDef::HasExternalReference() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }
::Ifc4x3_rc2::IfcProfileProperties::list::ptr Ifc4x3_rc2::IfcProfileDef::HasProperties() const { return data_->getInverse(IFC4X3_RC2_IfcProfileProperties_type, 3)->as<IfcProfileProperties>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcProfileDef::declaration() const { return *IFC4X3_RC2_IfcProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProfileDef::Class() { return *IFC4X3_RC2_IfcProfileDef_type; }
Ifc4x3_rc2::IfcProfileDef::IfcProfileDef(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProfileDef::IfcProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcProfileDef* Ifc4x3_rc2::IfcProfileProperties::ProfileDefinition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcProfileProperties::setProfileDefinition(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProfileProperties::declaration() const { return *IFC4X3_RC2_IfcProfileProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProfileProperties::Class() { return *IFC4X3_RC2_IfcProfileProperties_type; }
Ifc4x3_rc2::IfcProfileProperties::IfcProfileProperties(IfcEntityInstanceData* e) : IfcExtendedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProfileProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProfileProperties::IfcProfileProperties(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v3_Properties, ::Ifc4x3_rc2::IfcProfileDef* v4_ProfileDefinition) : IfcExtendedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProject::declaration() const { return *IFC4X3_RC2_IfcProject_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProject::Class() { return *IFC4X3_RC2_IfcProject_type; }
Ifc4x3_rc2::IfcProject::IfcProject(IfcEntityInstanceData* e) : IfcContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProject::IfcProject(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_rc2::IfcUnitAssignment* v9_UnitsInContext) : IfcContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProjectLibrary::declaration() const { return *IFC4X3_RC2_IfcProjectLibrary_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProjectLibrary::Class() { return *IFC4X3_RC2_IfcProjectLibrary_type; }
Ifc4x3_rc2::IfcProjectLibrary::IfcProjectLibrary(IfcEntityInstanceData* e) : IfcContext((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProjectLibrary_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProjectLibrary::IfcProjectLibrary(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcRepresentationContext >::ptr > v8_RepresentationContexts, ::Ifc4x3_rc2::IfcUnitAssignment* v9_UnitsInContext) : IfcContext((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProjectOrderTypeEnum::Value > Ifc4x3_rc2::IfcProjectOrder::PredefinedType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcProjectOrder::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProjectOrderTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectOrderTypeEnum::ToString(*v)));}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProjectOrder::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcProjectOrder::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProjectOrder::LongDescription() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcProjectOrder::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProjectOrder::declaration() const { return *IFC4X3_RC2_IfcProjectOrder_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProjectOrder::Class() { return *IFC4X3_RC2_IfcProjectOrder_type; }
Ifc4x3_rc2::IfcProjectOrder::IfcProjectOrder(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProjectOrder_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProjectOrder::IfcProjectOrder(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcProjectOrderTypeEnum::Value > v7_PredefinedType, boost::optional< std::string > v8_Status, boost::optional< std::string > v9_LongDescription) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProjectedCRS::MapProjection() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcProjectedCRS::setMapProjection(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProjectedCRS::MapZone() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcProjectedCRS::setMapZone(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcNamedUnit* Ifc4x3_rc2::IfcProjectedCRS::MapUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcNamedUnit>(true); }
void Ifc4x3_rc2::IfcProjectedCRS::setMapUnit(::Ifc4x3_rc2::IfcNamedUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProjectedCRS::declaration() const { return *IFC4X3_RC2_IfcProjectedCRS_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProjectedCRS::Class() { return *IFC4X3_RC2_IfcProjectedCRS_type; }
Ifc4x3_rc2::IfcProjectedCRS::IfcProjectedCRS(IfcEntityInstanceData* e) : IfcCoordinateReferenceSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProjectedCRS_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcNamedUnit* v7_MapUnit) : IfcCoordinateReferenceSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProjectionElementTypeEnum::Value > Ifc4x3_rc2::IfcProjectionElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcProjectionElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectionElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProjectionElement::declaration() const { return *IFC4X3_RC2_IfcProjectionElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProjectionElement::Class() { return *IFC4X3_RC2_IfcProjectionElement_type; }
Ifc4x3_rc2::IfcProjectionElement::IfcProjectionElement(IfcEntityInstanceData* e) : IfcFeatureElementAddition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProjectionElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProjectionElement::IfcProjectionElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcProjectionElementTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementAddition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProperty::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcProperty::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProperty::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcProperty::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }

::Ifc4x3_rc2::IfcPropertySet::list::ptr Ifc4x3_rc2::IfcProperty::PartOfPset() const { return data_->getInverse(IFC4X3_RC2_IfcPropertySet_type, 4)->as<IfcPropertySet>(); }
::Ifc4x3_rc2::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc2::IfcProperty::PropertyForDependance() const { return data_->getInverse(IFC4X3_RC2_IfcPropertyDependencyRelationship_type, 2)->as<IfcPropertyDependencyRelationship>(); }
::Ifc4x3_rc2::IfcPropertyDependencyRelationship::list::ptr Ifc4x3_rc2::IfcProperty::PropertyDependsOn() const { return data_->getInverse(IFC4X3_RC2_IfcPropertyDependencyRelationship_type, 3)->as<IfcPropertyDependencyRelationship>(); }
::Ifc4x3_rc2::IfcComplexProperty::list::ptr Ifc4x3_rc2::IfcProperty::PartOfComplex() const { return data_->getInverse(IFC4X3_RC2_IfcComplexProperty_type, 3)->as<IfcComplexProperty>(); }
::Ifc4x3_rc2::IfcResourceConstraintRelationship::list::ptr Ifc4x3_rc2::IfcProperty::HasConstraints() const { return data_->getInverse(IFC4X3_RC2_IfcResourceConstraintRelationship_type, 3)->as<IfcResourceConstraintRelationship>(); }
::Ifc4x3_rc2::IfcResourceApprovalRelationship::list::ptr Ifc4x3_rc2::IfcProperty::HasApprovals() const { return data_->getInverse(IFC4X3_RC2_IfcResourceApprovalRelationship_type, 2)->as<IfcResourceApprovalRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcProperty::declaration() const { return *IFC4X3_RC2_IfcProperty_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProperty::Class() { return *IFC4X3_RC2_IfcProperty_type; }
Ifc4x3_rc2::IfcProperty::IfcProperty(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProperty_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProperty::IfcProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcPropertyAbstraction::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPropertyAbstraction::declaration() const { return *IFC4X3_RC2_IfcPropertyAbstraction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyAbstraction::Class() { return *IFC4X3_RC2_IfcPropertyAbstraction_type; }
Ifc4x3_rc2::IfcPropertyAbstraction::IfcPropertyAbstraction(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyAbstraction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyAbstraction::IfcPropertyAbstraction() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcPropertyAbstraction_type);  }

// Function implementations for IfcPropertyBoundedValue
::Ifc4x3_rc2::IfcValue* Ifc4x3_rc2::IfcPropertyBoundedValue::UpperBoundValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcValue>(true); }
void Ifc4x3_rc2::IfcPropertyBoundedValue::setUpperBoundValue(::Ifc4x3_rc2::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcValue* Ifc4x3_rc2::IfcPropertyBoundedValue::LowerBoundValue() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcValue>(true); }
void Ifc4x3_rc2::IfcPropertyBoundedValue::setLowerBoundValue(::Ifc4x3_rc2::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyBoundedValue::Unit() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcPropertyBoundedValue::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcValue* Ifc4x3_rc2::IfcPropertyBoundedValue::SetPointValue() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcValue>(true); }
void Ifc4x3_rc2::IfcPropertyBoundedValue::setSetPointValue(::Ifc4x3_rc2::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyBoundedValue::declaration() const { return *IFC4X3_RC2_IfcPropertyBoundedValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyBoundedValue::Class() { return *IFC4X3_RC2_IfcPropertyBoundedValue_type; }
Ifc4x3_rc2::IfcPropertyBoundedValue::IfcPropertyBoundedValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyBoundedValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyBoundedValue::IfcPropertyBoundedValue(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcValue* v3_UpperBoundValue, ::Ifc4x3_rc2::IfcValue* v4_LowerBoundValue, ::Ifc4x3_rc2::IfcUnit* v5_Unit, ::Ifc4x3_rc2::IfcValue* v6_SetPointValue) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelDeclares::list::ptr Ifc4x3_rc2::IfcPropertyDefinition::HasContext() const { return data_->getInverse(IFC4X3_RC2_IfcRelDeclares_type, 5)->as<IfcRelDeclares>(); }
::Ifc4x3_rc2::IfcRelAssociates::list::ptr Ifc4x3_rc2::IfcPropertyDefinition::HasAssociations() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssociates_type, 4)->as<IfcRelAssociates>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPropertyDefinition::declaration() const { return *IFC4X3_RC2_IfcPropertyDefinition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyDefinition::Class() { return *IFC4X3_RC2_IfcPropertyDefinition_type; }
Ifc4x3_rc2::IfcPropertyDefinition::IfcPropertyDefinition(IfcEntityInstanceData* e) : IfcRoot((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyDefinition::IfcPropertyDefinition(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProperty* Ifc4x3_rc2::IfcPropertyDependencyRelationship::DependingProperty() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcProperty>(true); }
void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setDependingProperty(::Ifc4x3_rc2::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcProperty* Ifc4x3_rc2::IfcPropertyDependencyRelationship::DependantProperty() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcProperty>(true); }
void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setDependantProperty(::Ifc4x3_rc2::IfcProperty* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPropertyDependencyRelationship::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcPropertyDependencyRelationship::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyDependencyRelationship::declaration() const { return *IFC4X3_RC2_IfcPropertyDependencyRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyDependencyRelationship::Class() { return *IFC4X3_RC2_IfcPropertyDependencyRelationship_type; }
Ifc4x3_rc2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyDependencyRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyDependencyRelationship::IfcPropertyDependencyRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcProperty* v3_DependingProperty, ::Ifc4x3_rc2::IfcProperty* v4_DependantProperty, boost::optional< std::string > v5_Expression) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcValue >::ptr > Ifc4x3_rc2::IfcPropertyEnumeratedValue::EnumerationValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcPropertyEnumeratedValue::setEnumerationValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcPropertyEnumeration* Ifc4x3_rc2::IfcPropertyEnumeratedValue::EnumerationReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcPropertyEnumeration>(true); }
void Ifc4x3_rc2::IfcPropertyEnumeratedValue::setEnumerationReference(::Ifc4x3_rc2::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyEnumeratedValue::declaration() const { return *IFC4X3_RC2_IfcPropertyEnumeratedValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyEnumeratedValue::Class() { return *IFC4X3_RC2_IfcPropertyEnumeratedValue_type; }
Ifc4x3_rc2::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyEnumeratedValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyEnumeratedValue::IfcPropertyEnumeratedValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v3_EnumerationValues, ::Ifc4x3_rc2::IfcPropertyEnumeration* v4_EnumerationReference) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcPropertyEnumeration::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcPropertyEnumeration::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr Ifc4x3_rc2::IfcPropertyEnumeration::EnumerationValues() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcPropertyEnumeration::setEnumerationValues(aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyEnumeration::Unit() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcPropertyEnumeration::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyEnumeration::declaration() const { return *IFC4X3_RC2_IfcPropertyEnumeration_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyEnumeration::Class() { return *IFC4X3_RC2_IfcPropertyEnumeration_type; }
Ifc4x3_rc2::IfcPropertyEnumeration::IfcPropertyEnumeration(IfcEntityInstanceData* e) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyEnumeration_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyEnumeration::IfcPropertyEnumeration(std::string v1_Name, aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr v2_EnumerationValues, ::Ifc4x3_rc2::IfcUnit* v3_Unit) : IfcPropertyAbstraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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< ::Ifc4x3_rc2::IfcValue >::ptr > Ifc4x3_rc2::IfcPropertyListValue::ListValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcPropertyListValue::setListValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyListValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcPropertyListValue::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyListValue::declaration() const { return *IFC4X3_RC2_IfcPropertyListValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyListValue::Class() { return *IFC4X3_RC2_IfcPropertyListValue_type; }
Ifc4x3_rc2::IfcPropertyListValue::IfcPropertyListValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyListValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyListValue::IfcPropertyListValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v3_ListValues, ::Ifc4x3_rc2::IfcUnit* v4_Unit) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcPropertyReferenceValue::UsageName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcPropertyReferenceValue::setUsageName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcObjectReferenceSelect* Ifc4x3_rc2::IfcPropertyReferenceValue::PropertyReference() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcObjectReferenceSelect>(true); }
void Ifc4x3_rc2::IfcPropertyReferenceValue::setPropertyReference(::Ifc4x3_rc2::IfcObjectReferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyReferenceValue::declaration() const { return *IFC4X3_RC2_IfcPropertyReferenceValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyReferenceValue::Class() { return *IFC4X3_RC2_IfcPropertyReferenceValue_type; }
Ifc4x3_rc2::IfcPropertyReferenceValue::IfcPropertyReferenceValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyReferenceValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyReferenceValue::IfcPropertyReferenceValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< std::string > v3_UsageName, ::Ifc4x3_rc2::IfcObjectReferenceSelect* v4_PropertyReference) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProperty >::ptr Ifc4x3_rc2::IfcPropertySet::HasProperties() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcProperty >(); }
void Ifc4x3_rc2::IfcPropertySet::setHasProperties(aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertySet::declaration() const { return *IFC4X3_RC2_IfcPropertySet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertySet::Class() { return *IFC4X3_RC2_IfcPropertySet_type; }
Ifc4x3_rc2::IfcPropertySet::IfcPropertySet(IfcEntityInstanceData* e) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertySet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertySet::IfcPropertySet(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcProperty >::ptr v5_HasProperties) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTypeObject::list::ptr Ifc4x3_rc2::IfcPropertySetDefinition::DefinesType() const { return data_->getInverse(IFC4X3_RC2_IfcTypeObject_type, 5)->as<IfcTypeObject>(); }
::Ifc4x3_rc2::IfcRelDefinesByTemplate::list::ptr Ifc4x3_rc2::IfcPropertySetDefinition::IsDefinedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByTemplate_type, 4)->as<IfcRelDefinesByTemplate>(); }
::Ifc4x3_rc2::IfcRelDefinesByProperties::list::ptr Ifc4x3_rc2::IfcPropertySetDefinition::DefinesOccurrence() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByProperties_type, 5)->as<IfcRelDefinesByProperties>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPropertySetDefinition::declaration() const { return *IFC4X3_RC2_IfcPropertySetDefinition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertySetDefinition::Class() { return *IFC4X3_RC2_IfcPropertySetDefinition_type; }
Ifc4x3_rc2::IfcPropertySetDefinition::IfcPropertySetDefinition(IfcEntityInstanceData* e) : IfcPropertyDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertySetDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertySetDefinition::IfcPropertySetDefinition(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPropertySetTemplateTypeEnum::Value > Ifc4x3_rc2::IfcPropertySetTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcPropertySetTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPropertySetTemplate::ApplicableEntity() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcPropertySetTemplate::setApplicableEntity(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr Ifc4x3_rc2::IfcPropertySetTemplate::HasPropertyTemplates() const {  aggregate_of_instance::ptr es = *data_->getArgument(6); return es->as< ::Ifc4x3_rc2::IfcPropertyTemplate >(); }
void Ifc4x3_rc2::IfcPropertySetTemplate::setHasPropertyTemplates(aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(6,attr);} }

::Ifc4x3_rc2::IfcRelDefinesByTemplate::list::ptr Ifc4x3_rc2::IfcPropertySetTemplate::Defines() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByTemplate_type, 5)->as<IfcRelDefinesByTemplate>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPropertySetTemplate::declaration() const { return *IFC4X3_RC2_IfcPropertySetTemplate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertySetTemplate::Class() { return *IFC4X3_RC2_IfcPropertySetTemplate_type; }
Ifc4x3_rc2::IfcPropertySetTemplate::IfcPropertySetTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertySetTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertySetTemplate::IfcPropertySetTemplate(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_rc2::IfcPropertySetTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_ApplicableEntity, aggregate_of< ::Ifc4x3_rc2::IfcPropertyTemplate >::ptr v7_HasPropertyTemplates) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcValue* Ifc4x3_rc2::IfcPropertySingleValue::NominalValue() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcValue>(true); }
void Ifc4x3_rc2::IfcPropertySingleValue::setNominalValue(::Ifc4x3_rc2::IfcValue* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertySingleValue::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcPropertySingleValue::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertySingleValue::declaration() const { return *IFC4X3_RC2_IfcPropertySingleValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertySingleValue::Class() { return *IFC4X3_RC2_IfcPropertySingleValue_type; }
Ifc4x3_rc2::IfcPropertySingleValue::IfcPropertySingleValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertySingleValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertySingleValue::IfcPropertySingleValue(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcValue* v3_NominalValue, ::Ifc4x3_rc2::IfcUnit* v4_Unit) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcValue >::ptr > Ifc4x3_rc2::IfcPropertyTableValue::DefiningValues() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcPropertyTableValue::setDefiningValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > Ifc4x3_rc2::IfcPropertyTableValue::DefinedValues() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcPropertyTableValue::setDefinedValues(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcPropertyTableValue::Expression() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcPropertyTableValue::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyTableValue::DefiningUnit() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcPropertyTableValue::setDefiningUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcPropertyTableValue::DefinedUnit() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcPropertyTableValue::setDefinedUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcCurveInterpolationEnum::Value > Ifc4x3_rc2::IfcPropertyTableValue::CurveInterpolation() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcCurveInterpolationEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcPropertyTableValue::setCurveInterpolation(boost::optional< ::Ifc4x3_rc2::IfcCurveInterpolationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcCurveInterpolationEnum::ToString(*v)));}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPropertyTableValue::declaration() const { return *IFC4X3_RC2_IfcPropertyTableValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyTableValue::Class() { return *IFC4X3_RC2_IfcPropertyTableValue_type; }
Ifc4x3_rc2::IfcPropertyTableValue::IfcPropertyTableValue(IfcEntityInstanceData* e) : IfcSimpleProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyTableValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyTableValue::IfcPropertyTableValue(std::string v1_Name, boost::optional< std::string > v2_Description, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v3_DefiningValues, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v4_DefinedValues, boost::optional< std::string > v5_Expression, ::Ifc4x3_rc2::IfcUnit* v6_DefiningUnit, ::Ifc4x3_rc2::IfcUnit* v7_DefinedUnit, boost::optional< ::Ifc4x3_rc2::IfcCurveInterpolationEnum::Value > v8_CurveInterpolation) : IfcSimpleProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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)->generalize());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_rc2::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_rc2::IfcComplexPropertyTemplate::list::ptr Ifc4x3_rc2::IfcPropertyTemplate::PartOfComplexTemplate() const { return data_->getInverse(IFC4X3_RC2_IfcComplexPropertyTemplate_type, 6)->as<IfcComplexPropertyTemplate>(); }
::Ifc4x3_rc2::IfcPropertySetTemplate::list::ptr Ifc4x3_rc2::IfcPropertyTemplate::PartOfPsetTemplate() const { return data_->getInverse(IFC4X3_RC2_IfcPropertySetTemplate_type, 6)->as<IfcPropertySetTemplate>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcPropertyTemplate::declaration() const { return *IFC4X3_RC2_IfcPropertyTemplate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyTemplate::Class() { return *IFC4X3_RC2_IfcPropertyTemplate_type; }
Ifc4x3_rc2::IfcPropertyTemplate::IfcPropertyTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyTemplate::IfcPropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyTemplateDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPropertyTemplateDefinition::declaration() const { return *IFC4X3_RC2_IfcPropertyTemplateDefinition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPropertyTemplateDefinition::Class() { return *IFC4X3_RC2_IfcPropertyTemplateDefinition_type; }
Ifc4x3_rc2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(IfcEntityInstanceData* e) : IfcPropertyDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPropertyTemplateDefinition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPropertyTemplateDefinition::IfcPropertyTemplateDefinition(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertyDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProtectiveDeviceTypeEnum::Value > Ifc4x3_rc2::IfcProtectiveDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcProtectiveDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDevice::declaration() const { return *IFC4X3_RC2_IfcProtectiveDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDevice::Class() { return *IFC4X3_RC2_IfcProtectiveDevice_type; }
Ifc4x3_rc2::IfcProtectiveDevice::IfcProtectiveDevice(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProtectiveDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProtectiveDevice::IfcProtectiveDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::declaration() const { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::Class() { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type; }
Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProtectiveDeviceTrippingUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnit::IfcProtectiveDeviceTrippingUnit(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType::setPredefinedType(::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType::declaration() const { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType::Class() { return *IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type; }
Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProtectiveDeviceTrippingUnitType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitType::IfcProtectiveDeviceTrippingUnitType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProtectiveDeviceTrippingUnitTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcProtectiveDeviceType
::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value Ifc4x3_rc2::IfcProtectiveDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcProtectiveDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceType::declaration() const { return *IFC4X3_RC2_IfcProtectiveDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProtectiveDeviceType::Class() { return *IFC4X3_RC2_IfcProtectiveDeviceType_type; }
Ifc4x3_rc2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProtectiveDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProtectiveDeviceType::IfcProtectiveDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcProtectiveDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProtectiveDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcProxy
::Ifc4x3_rc2::IfcObjectTypeEnum::Value Ifc4x3_rc2::IfcProxy::ProxyType() const {  return ::Ifc4x3_rc2::IfcObjectTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcProxy::setProxyType(::Ifc4x3_rc2::IfcObjectTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcObjectTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcProxy::Tag() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcProxy::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcProxy::declaration() const { return *IFC4X3_RC2_IfcProxy_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcProxy::Class() { return *IFC4X3_RC2_IfcProxy_type; }
Ifc4x3_rc2::IfcProxy::IfcProxy(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcProxy_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcProxy::IfcProxy(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcObjectTypeEnum::Value v8_ProxyType, boost::optional< std::string > v9_Tag) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPumpTypeEnum::Value > Ifc4x3_rc2::IfcPump::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcPumpTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcPump::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcPumpTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcPumpTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPump::declaration() const { return *IFC4X3_RC2_IfcPump_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPump::Class() { return *IFC4X3_RC2_IfcPump_type; }
Ifc4x3_rc2::IfcPump::IfcPump(IfcEntityInstanceData* e) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPump_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPump::IfcPump(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcPumpTypeEnum::Value > v9_PredefinedType) : IfcFlowMovingDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcPumpTypeEnum::Value Ifc4x3_rc2::IfcPumpType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcPumpTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcPumpType::setPredefinedType(::Ifc4x3_rc2::IfcPumpTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPumpTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcPumpType::declaration() const { return *IFC4X3_RC2_IfcPumpType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcPumpType::Class() { return *IFC4X3_RC2_IfcPumpType_type; }
Ifc4x3_rc2::IfcPumpType::IfcPumpType(IfcEntityInstanceData* e) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcPumpType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcPumpType::IfcPumpType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcPumpTypeEnum::Value v10_PredefinedType) : IfcFlowMovingDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPumpTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcQuantityArea
double Ifc4x3_rc2::IfcQuantityArea::AreaValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcQuantityArea::setAreaValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcQuantityArea::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcQuantityArea::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcQuantityArea::declaration() const { return *IFC4X3_RC2_IfcQuantityArea_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantityArea::Class() { return *IFC4X3_RC2_IfcQuantityArea_type; }
Ifc4x3_rc2::IfcQuantityArea::IfcQuantityArea(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantityArea_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantityArea::IfcQuantityArea(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit, double v4_AreaValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcQuantityCount::CountValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcQuantityCount::setCountValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcQuantityCount::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcQuantityCount::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcQuantityCount::declaration() const { return *IFC4X3_RC2_IfcQuantityCount_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantityCount::Class() { return *IFC4X3_RC2_IfcQuantityCount_type; }
Ifc4x3_rc2::IfcQuantityCount::IfcQuantityCount(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantityCount_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantityCount::IfcQuantityCount(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit, double v4_CountValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcQuantityLength::LengthValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcQuantityLength::setLengthValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcQuantityLength::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcQuantityLength::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcQuantityLength::declaration() const { return *IFC4X3_RC2_IfcQuantityLength_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantityLength::Class() { return *IFC4X3_RC2_IfcQuantityLength_type; }
Ifc4x3_rc2::IfcQuantityLength::IfcQuantityLength(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantityLength_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantityLength::IfcQuantityLength(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit, double v4_LengthValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcQuantitySet::declaration() const { return *IFC4X3_RC2_IfcQuantitySet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantitySet::Class() { return *IFC4X3_RC2_IfcQuantitySet_type; }
Ifc4x3_rc2::IfcQuantitySet::IfcQuantitySet(IfcEntityInstanceData* e) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantitySet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantitySet::IfcQuantitySet(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcPropertySetDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcQuantityTime::TimeValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcQuantityTime::setTimeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcQuantityTime::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcQuantityTime::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcQuantityTime::declaration() const { return *IFC4X3_RC2_IfcQuantityTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantityTime::Class() { return *IFC4X3_RC2_IfcQuantityTime_type; }
Ifc4x3_rc2::IfcQuantityTime::IfcQuantityTime(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantityTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantityTime::IfcQuantityTime(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit, double v4_TimeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcQuantityVolume::VolumeValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcQuantityVolume::setVolumeValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcQuantityVolume::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcQuantityVolume::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcQuantityVolume::declaration() const { return *IFC4X3_RC2_IfcQuantityVolume_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantityVolume::Class() { return *IFC4X3_RC2_IfcQuantityVolume_type; }
Ifc4x3_rc2::IfcQuantityVolume::IfcQuantityVolume(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantityVolume_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantityVolume::IfcQuantityVolume(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit, double v4_VolumeValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcQuantityWeight::WeightValue() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcQuantityWeight::setWeightValue(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcQuantityWeight::Formula() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcQuantityWeight::setFormula(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcQuantityWeight::declaration() const { return *IFC4X3_RC2_IfcQuantityWeight_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcQuantityWeight::Class() { return *IFC4X3_RC2_IfcQuantityWeight_type; }
Ifc4x3_rc2::IfcQuantityWeight::IfcQuantityWeight(IfcEntityInstanceData* e) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcQuantityWeight_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcQuantityWeight::IfcQuantityWeight(std::string v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcNamedUnit* v3_Unit, double v4_WeightValue, boost::optional< std::string > v5_Formula) : IfcPhysicalSimpleQuantity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRailTypeEnum::Value > Ifc4x3_rc2::IfcRail::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRailTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcRail::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRailTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRailTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRail::declaration() const { return *IFC4X3_RC2_IfcRail_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRail::Class() { return *IFC4X3_RC2_IfcRail_type; }
Ifc4x3_rc2::IfcRail::IfcRail(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRail_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRail::IfcRail(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcRailTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRailTypeEnum::Value Ifc4x3_rc2::IfcRailType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcRailTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcRailType::setPredefinedType(::Ifc4x3_rc2::IfcRailTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRailTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRailType::declaration() const { return *IFC4X3_RC2_IfcRailType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRailType::Class() { return *IFC4X3_RC2_IfcRailType_type; }
Ifc4x3_rc2::IfcRailType::IfcRailType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRailType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRailType::IfcRailType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcRailTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRailTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRailing
boost::optional< ::Ifc4x3_rc2::IfcRailingTypeEnum::Value > Ifc4x3_rc2::IfcRailing::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRailingTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcRailing::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRailingTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRailingTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRailing::declaration() const { return *IFC4X3_RC2_IfcRailing_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRailing::Class() { return *IFC4X3_RC2_IfcRailing_type; }
Ifc4x3_rc2::IfcRailing::IfcRailing(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRailing_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRailing::IfcRailing(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcRailingTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRailingTypeEnum::Value Ifc4x3_rc2::IfcRailingType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcRailingTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcRailingType::setPredefinedType(::Ifc4x3_rc2::IfcRailingTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRailingTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRailingType::declaration() const { return *IFC4X3_RC2_IfcRailingType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRailingType::Class() { return *IFC4X3_RC2_IfcRailingType_type; }
Ifc4x3_rc2::IfcRailingType::IfcRailingType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRailingType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRailingType::IfcRailingType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcRailingTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRailingTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRailway


const IfcParse::entity& Ifc4x3_rc2::IfcRailway::declaration() const { return *IFC4X3_RC2_IfcRailway_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRailway::Class() { return *IFC4X3_RC2_IfcRailway_type; }
Ifc4x3_rc2::IfcRailway::IfcRailway(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRailway_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRailway::IfcRailway(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRampTypeEnum::Value > Ifc4x3_rc2::IfcRamp::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRampTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcRamp::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRampTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRampTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRamp::declaration() const { return *IFC4X3_RC2_IfcRamp_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRamp::Class() { return *IFC4X3_RC2_IfcRamp_type; }
Ifc4x3_rc2::IfcRamp::IfcRamp(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRamp_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRamp::IfcRamp(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcRampTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRampFlightTypeEnum::Value > Ifc4x3_rc2::IfcRampFlight::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcRampFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRampFlightTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRampFlight::declaration() const { return *IFC4X3_RC2_IfcRampFlight_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRampFlight::Class() { return *IFC4X3_RC2_IfcRampFlight_type; }
Ifc4x3_rc2::IfcRampFlight::IfcRampFlight(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRampFlight_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRampFlight::IfcRampFlight(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRampFlightTypeEnum::Value Ifc4x3_rc2::IfcRampFlightType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcRampFlightTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcRampFlightType::setPredefinedType(::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRampFlightTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRampFlightType::declaration() const { return *IFC4X3_RC2_IfcRampFlightType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRampFlightType::Class() { return *IFC4X3_RC2_IfcRampFlightType_type; }
Ifc4x3_rc2::IfcRampFlightType::IfcRampFlightType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRampFlightType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRampFlightType::IfcRampFlightType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcRampFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRampFlightTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRampType
::Ifc4x3_rc2::IfcRampTypeEnum::Value Ifc4x3_rc2::IfcRampType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcRampTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcRampType::setPredefinedType(::Ifc4x3_rc2::IfcRampTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRampTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRampType::declaration() const { return *IFC4X3_RC2_IfcRampType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRampType::Class() { return *IFC4X3_RC2_IfcRampType_type; }
Ifc4x3_rc2::IfcRampType::IfcRampType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRampType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRampType::IfcRampType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcRampTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRampTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRationalBSplineCurveWithKnots
std::vector< double > /*[2:?]*/ Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots::WeightsData() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots::setWeightsData(std::vector< double > /*[2:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots::declaration() const { return *IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots::Class() { return *IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type; }
Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(IfcEntityInstanceData* e) : IfcBSplineCurveWithKnots((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRationalBSplineCurveWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRationalBSplineCurveWithKnots::IfcRationalBSplineCurveWithKnots(int v1_Degree, aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v2_ControlPointsList, ::Ifc4x3_rc2::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_rc2::IfcKnotType::Value v8_KnotSpec, std::vector< double > /*[2:?]*/ v9_WeightsData) : IfcBSplineCurveWithKnots((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcRationalBSplineSurfaceWithKnots::WeightsData() const {  std::vector< std::vector< double > > v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::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_rc2::IfcRationalBSplineSurfaceWithKnots::declaration() const { return *IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRationalBSplineSurfaceWithKnots::Class() { return *IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type; }
Ifc4x3_rc2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(IfcEntityInstanceData* e) : IfcBSplineSurfaceWithKnots((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRationalBSplineSurfaceWithKnots_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRationalBSplineSurfaceWithKnots::IfcRationalBSplineSurfaceWithKnots(int v1_UDegree, int v2_VDegree, aggregate_of_aggregate_of< ::Ifc4x3_rc2::IfcCartesianPoint >::ptr v3_ControlPointsList, ::Ifc4x3_rc2::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_rc2::IfcKnotType::Value v12_KnotSpec, std::vector< std::vector< double > > v13_WeightsData) : IfcBSplineSurfaceWithKnots((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcRectangleHollowProfileDef::WallThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setWallThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcRectangleHollowProfileDef::InnerFilletRadius() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setInnerFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcRectangleHollowProfileDef::OuterFilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcRectangleHollowProfileDef::setOuterFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRectangleHollowProfileDef::declaration() const { return *IFC4X3_RC2_IfcRectangleHollowProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRectangleHollowProfileDef::Class() { return *IFC4X3_RC2_IfcRectangleHollowProfileDef_type; }
Ifc4x3_rc2::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(IfcEntityInstanceData* e) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRectangleHollowProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRectangleHollowProfileDef::IfcRectangleHollowProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcRectangleHollowProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcRectangleProfileDef::XDim() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcRectangleProfileDef::setXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcRectangleProfileDef::YDim() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcRectangleProfileDef::setYDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRectangleProfileDef::declaration() const { return *IFC4X3_RC2_IfcRectangleProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRectangleProfileDef::Class() { return *IFC4X3_RC2_IfcRectangleProfileDef_type; }
Ifc4x3_rc2::IfcRectangleProfileDef::IfcRectangleProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRectangleProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRectangleProfileDef::IfcRectangleProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRectangleProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcRectangularPyramid::XLength() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcRectangularPyramid::setXLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcRectangularPyramid::YLength() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcRectangularPyramid::setYLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcRectangularPyramid::Height() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcRectangularPyramid::setHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRectangularPyramid::declaration() const { return *IFC4X3_RC2_IfcRectangularPyramid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRectangularPyramid::Class() { return *IFC4X3_RC2_IfcRectangularPyramid_type; }
Ifc4x3_rc2::IfcRectangularPyramid::IfcRectangularPyramid(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRectangularPyramid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRectangularPyramid::IfcRectangularPyramid(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_XLength, double v3_YLength, double v4_Height) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurface* Ifc4x3_rc2::IfcRectangularTrimmedSurface::BasisSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setBasisSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcRectangularTrimmedSurface::U1() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setU1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcRectangularTrimmedSurface::V1() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setV1(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcRectangularTrimmedSurface::U2() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setU2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcRectangularTrimmedSurface::V2() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setV2(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
bool Ifc4x3_rc2::IfcRectangularTrimmedSurface::Usense() const {  bool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setUsense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
bool Ifc4x3_rc2::IfcRectangularTrimmedSurface::Vsense() const {  bool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcRectangularTrimmedSurface::setVsense(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRectangularTrimmedSurface::declaration() const { return *IFC4X3_RC2_IfcRectangularTrimmedSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRectangularTrimmedSurface::Class() { return *IFC4X3_RC2_IfcRectangularTrimmedSurface_type; }
Ifc4x3_rc2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(IfcEntityInstanceData* e) : IfcBoundedSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRectangularTrimmedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRectangularTrimmedSurface::IfcRectangularTrimmedSurface(::Ifc4x3_rc2::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_RC2_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_rc2::IfcRecurrenceTypeEnum::Value Ifc4x3_rc2::IfcRecurrencePattern::RecurrenceType() const {  return ::Ifc4x3_rc2::IfcRecurrenceTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcRecurrencePattern::setRecurrenceType(::Ifc4x3_rc2::IfcRecurrenceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRecurrenceTypeEnum::ToString(v)));data_->setArgument(0,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcRecurrencePattern::setDayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcRecurrencePattern::setWeekdayComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcRecurrencePattern::setMonthComponent(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcRecurrencePattern::Position() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } int v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcRecurrencePattern::setPosition(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcRecurrencePattern::Interval() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } int v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcRecurrencePattern::setInterval(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcRecurrencePattern::Occurrences() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } int v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcRecurrencePattern::setOccurrences(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTimePeriod >::ptr > Ifc4x3_rc2::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_rc2::IfcTimePeriod >(); }
void Ifc4x3_rc2::IfcRecurrencePattern::setTimePeriods(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTimePeriod >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRecurrencePattern::declaration() const { return *IFC4X3_RC2_IfcRecurrencePattern_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRecurrencePattern::Class() { return *IFC4X3_RC2_IfcRecurrencePattern_type; }
Ifc4x3_rc2::IfcRecurrencePattern::IfcRecurrencePattern(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRecurrencePattern_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRecurrencePattern::IfcRecurrencePattern(::Ifc4x3_rc2::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_rc2::IfcTimePeriod >::ptr > v8_TimePeriods) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRecurrencePattern_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_RecurrenceType,::Ifc4x3_rc2::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_rc2::IfcReference::TypeIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcReference::setTypeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcReference::AttributeIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcReference::setAttributeIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcReference::InstanceName() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcReference::setInstanceName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::vector< int > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcReference::setListPositions(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcReference* Ifc4x3_rc2::IfcReference::InnerReference() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcReference>(true); }
void Ifc4x3_rc2::IfcReference::setInnerReference(::Ifc4x3_rc2::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReference::declaration() const { return *IFC4X3_RC2_IfcReference_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReference::Class() { return *IFC4X3_RC2_IfcReference_type; }
Ifc4x3_rc2::IfcReference::IfcReference(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReference_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcReference* v5_InnerReference) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcReferentTypeEnum::Value > Ifc4x3_rc2::IfcReferent::PredefinedType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReferentTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcReferent::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReferentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReferentTypeEnum::ToString(*v)));}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReferent::RestartDistance() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcReferent::setRestartDistance(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReferent::declaration() const { return *IFC4X3_RC2_IfcReferent_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReferent::Class() { return *IFC4X3_RC2_IfcReferent_type; }
Ifc4x3_rc2::IfcReferent::IfcReferent(IfcEntityInstanceData* e) : IfcPositioningElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReferent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReferent::IfcReferent(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< ::Ifc4x3_rc2::IfcReferentTypeEnum::Value > v8_PredefinedType, boost::optional< double > v9_RestartDistance) : IfcPositioningElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRegularTimeSeries::TimeStep() const {  double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRegularTimeSeries::setTimeStep(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcTimeSeriesValue >::ptr Ifc4x3_rc2::IfcRegularTimeSeries::Values() const {  aggregate_of_instance::ptr es = *data_->getArgument(9); return es->as< ::Ifc4x3_rc2::IfcTimeSeriesValue >(); }
void Ifc4x3_rc2::IfcRegularTimeSeries::setValues(aggregate_of< ::Ifc4x3_rc2::IfcTimeSeriesValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRegularTimeSeries::declaration() const { return *IFC4X3_RC2_IfcRegularTimeSeries_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRegularTimeSeries::Class() { return *IFC4X3_RC2_IfcRegularTimeSeries_type; }
Ifc4x3_rc2::IfcRegularTimeSeries::IfcRegularTimeSeries(IfcEntityInstanceData* e) : IfcTimeSeries((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRegularTimeSeries_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRegularTimeSeries::IfcRegularTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_rc2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_rc2::IfcUnit* v8_Unit, double v9_TimeStep, aggregate_of< ::Ifc4x3_rc2::IfcTimeSeriesValue >::ptr v10_Values) : IfcTimeSeries((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_DataOrigin,::Ifc4x3_rc2::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_rc2::IfcReinforcedSoilTypeEnum::Value > Ifc4x3_rc2::IfcReinforcedSoil::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcReinforcedSoil::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcedSoil::declaration() const { return *IFC4X3_RC2_IfcReinforcedSoil_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcedSoil::Class() { return *IFC4X3_RC2_IfcReinforcedSoil_type; }
Ifc4x3_rc2::IfcReinforcedSoil::IfcReinforcedSoil(IfcEntityInstanceData* e) : IfcEarthworksElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcedSoil_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcedSoil::IfcReinforcedSoil(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcReinforcedSoilTypeEnum::Value > v9_PredefinedType) : IfcEarthworksElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcementBarProperties::TotalCrossSectionArea() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcReinforcementBarProperties::setTotalCrossSectionArea(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc2::IfcReinforcementBarProperties::SteelGrade() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcReinforcementBarProperties::setSteelGrade(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc2::IfcReinforcementBarProperties::BarSurface() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcReinforcementBarProperties::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcementBarProperties::EffectiveDepth() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcReinforcementBarProperties::setEffectiveDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcementBarProperties::NominalBarDiameter() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcReinforcementBarProperties::setNominalBarDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcementBarProperties::BarCount() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcReinforcementBarProperties::setBarCount(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcementBarProperties::declaration() const { return *IFC4X3_RC2_IfcReinforcementBarProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcementBarProperties::Class() { return *IFC4X3_RC2_IfcReinforcementBarProperties_type; }
Ifc4x3_rc2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(IfcEntityInstanceData* e) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcementBarProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcementBarProperties::IfcReinforcementBarProperties(double v1_TotalCrossSectionArea, std::string v2_SteelGrade, boost::optional< ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::IfcReinforcementDefinitionProperties::DefinitionType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcReinforcementDefinitionProperties::setDefinitionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >::ptr Ifc4x3_rc2::IfcReinforcementDefinitionProperties::ReinforcementSectionDefinitions() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >(); }
void Ifc4x3_rc2::IfcReinforcementDefinitionProperties::setReinforcementSectionDefinitions(aggregate_of< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcementDefinitionProperties::declaration() const { return *IFC4X3_RC2_IfcReinforcementDefinitionProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcementDefinitionProperties::Class() { return *IFC4X3_RC2_IfcReinforcementDefinitionProperties_type; }
Ifc4x3_rc2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcementDefinitionProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcementDefinitionProperties::IfcReinforcementDefinitionProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_DefinitionType, aggregate_of< ::Ifc4x3_rc2::IfcSectionReinforcementProperties >::ptr v6_ReinforcementSectionDefinitions) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcReinforcingBar::NominalDiameter() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcReinforcingBar::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingBar::CrossSectionArea() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcReinforcingBar::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingBar::BarLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcReinforcingBar::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value > Ifc4x3_rc2::IfcReinforcingBar::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(12)); }
void Ifc4x3_rc2::IfcReinforcingBar::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc2::IfcReinforcingBar::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc2::IfcReinforcingBar::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingBar::declaration() const { return *IFC4X3_RC2_IfcReinforcingBar_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingBar::Class() { return *IFC4X3_RC2_IfcReinforcingBar_type; }
Ifc4x3_rc2::IfcReinforcingBar::IfcReinforcingBar(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcingBar_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcingBar::IfcReinforcingBar(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::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_rc2::IfcReinforcingBarTypeEnum::Value > v13_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcReinforcingBarTypeEnum::Value Ifc4x3_rc2::IfcReinforcingBarType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcReinforcingBarType::setPredefinedType(::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingBarType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcReinforcingBarType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingBarType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcReinforcingBarType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingBarType::BarLength() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcReinforcingBarType::setBarLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > Ifc4x3_rc2::IfcReinforcingBarType::BarSurface() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc2::IfcReinforcingBarType::setBarSurface(boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::ToString(*v)));}data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcReinforcingBarType::BendingShapeCode() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcReinforcingBarType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcBendingParameterSelect >::ptr > Ifc4x3_rc2::IfcReinforcingBarType::BendingParameters() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(15); return es->as< ::Ifc4x3_rc2::IfcBendingParameterSelect >(); }
void Ifc4x3_rc2::IfcReinforcingBarType::setBendingParameters(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcBendingParameterSelect >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(15,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingBarType::declaration() const { return *IFC4X3_RC2_IfcReinforcingBarType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingBarType::Class() { return *IFC4X3_RC2_IfcReinforcingBarType_type; }
Ifc4x3_rc2::IfcReinforcingBarType::IfcReinforcingBarType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcingBarType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcingBarType::IfcReinforcingBarType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcReinforcingBarTypeEnum::Value v10_PredefinedType, boost::optional< double > v11_NominalDiameter, boost::optional< double > v12_CrossSectionArea, boost::optional< double > v13_BarLength, boost::optional< ::Ifc4x3_rc2::IfcReinforcingBarSurfaceEnum::Value > v14_BarSurface, boost::optional< std::string > v15_BendingShapeCode, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcBendingParameterSelect >::ptr > v16_BendingParameters) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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)->generalize());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_rc2::IfcReinforcingElement::SteelGrade() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcReinforcingElement::setSteelGrade(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingElement::declaration() const { return *IFC4X3_RC2_IfcReinforcingElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingElement::Class() { return *IFC4X3_RC2_IfcReinforcingElement_type; }
Ifc4x3_rc2::IfcReinforcingElement::IfcReinforcingElement(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcingElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcingElement::IfcReinforcingElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcReinforcingElementType::declaration() const { return *IFC4X3_RC2_IfcReinforcingElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingElementType::Class() { return *IFC4X3_RC2_IfcReinforcingElementType_type; }
Ifc4x3_rc2::IfcReinforcingElementType::IfcReinforcingElementType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcingElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcingElementType::IfcReinforcingElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcReinforcingMesh::MeshLength() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::MeshWidth() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::TransverseBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::TransverseBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::LongitudinalBarSpacing() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMesh::TransverseBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc2::IfcReinforcingMesh::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value > Ifc4x3_rc2::IfcReinforcingMesh::PredefinedType() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(17)); }
void Ifc4x3_rc2::IfcReinforcingMesh::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::ToString(*v)));}data_->setArgument(17,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingMesh::declaration() const { return *IFC4X3_RC2_IfcReinforcingMesh_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingMesh::Class() { return *IFC4X3_RC2_IfcReinforcingMesh_type; }
Ifc4x3_rc2::IfcReinforcingMesh::IfcReinforcingMesh(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcingMesh_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcingMesh::IfcReinforcingMesh(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::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_rc2::IfcReinforcingMeshTypeEnum::Value > v18_PredefinedType) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcReinforcingMeshTypeEnum::Value Ifc4x3_rc2::IfcReinforcingMeshType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcReinforcingMeshType::setPredefinedType(::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReinforcingMeshTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::MeshLength() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setMeshLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::MeshWidth() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setMeshWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::LongitudinalBarNominalDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::TransverseBarNominalDiameter() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::LongitudinalBarCrossSectionArea() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::TransverseBarCrossSectionArea() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::LongitudinalBarSpacing() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setLongitudinalBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcReinforcingMeshType::TransverseBarSpacing() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setTransverseBarSpacing(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcReinforcingMeshType::BendingShapeCode() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; }
void Ifc4x3_rc2::IfcReinforcingMeshType::setBendingShapeCode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcBendingParameterSelect >::ptr > Ifc4x3_rc2::IfcReinforcingMeshType::BendingParameters() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(19); return es->as< ::Ifc4x3_rc2::IfcBendingParameterSelect >(); }
void Ifc4x3_rc2::IfcReinforcingMeshType::setBendingParameters(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcBendingParameterSelect >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(19,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingMeshType::declaration() const { return *IFC4X3_RC2_IfcReinforcingMeshType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReinforcingMeshType::Class() { return *IFC4X3_RC2_IfcReinforcingMeshType_type; }
Ifc4x3_rc2::IfcReinforcingMeshType::IfcReinforcingMeshType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReinforcingMeshType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReinforcingMeshType::IfcReinforcingMeshType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::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< ::Ifc4x3_rc2::IfcBendingParameterSelect >::ptr > v20_BendingParameters) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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)->generalize());data_->setArgument(19,attr);} } else { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument(); attr->set(boost::blank()); data_->setArgument(19, attr); } }

// Function implementations for IfcRelAggregates
::Ifc4x3_rc2::IfcObjectDefinition* Ifc4x3_rc2::IfcRelAggregates::RelatingObject() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcObjectDefinition>(true); }
void Ifc4x3_rc2::IfcRelAggregates::setRelatingObject(::Ifc4x3_rc2::IfcObjectDefinition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr Ifc4x3_rc2::IfcRelAggregates::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcObjectDefinition >(); }
void Ifc4x3_rc2::IfcRelAggregates::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAggregates::declaration() const { return *IFC4X3_RC2_IfcRelAggregates_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAggregates::Class() { return *IFC4X3_RC2_IfcRelAggregates_type; }
Ifc4x3_rc2::IfcRelAggregates::IfcRelAggregates(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAggregates_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAggregates::IfcRelAggregates(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcObjectDefinition >::ptr Ifc4x3_rc2::IfcRelAssigns::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcObjectDefinition >(); }
void Ifc4x3_rc2::IfcRelAssigns::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > Ifc4x3_rc2::IfcRelAssigns::RelatedObjectsType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcObjectTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcRelAssigns::setRelatedObjectsType(boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcObjectTypeEnum::ToString(*v)));}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssigns::declaration() const { return *IFC4X3_RC2_IfcRelAssigns_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssigns::Class() { return *IFC4X3_RC2_IfcRelAssigns_type; }
Ifc4x3_rc2::IfcRelAssigns::IfcRelAssigns(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssigns_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssigns::IfcRelAssigns(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcActor* Ifc4x3_rc2::IfcRelAssignsToActor::RelatingActor() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcActor>(true); }
void Ifc4x3_rc2::IfcRelAssignsToActor::setRelatingActor(::Ifc4x3_rc2::IfcActor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcActorRole* Ifc4x3_rc2::IfcRelAssignsToActor::ActingRole() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcActorRole>(true); }
void Ifc4x3_rc2::IfcRelAssignsToActor::setActingRole(::Ifc4x3_rc2::IfcActorRole* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToActor::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToActor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToActor::Class() { return *IFC4X3_RC2_IfcRelAssignsToActor_type; }
Ifc4x3_rc2::IfcRelAssignsToActor::IfcRelAssignsToActor(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToActor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToActor::IfcRelAssignsToActor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcActor* v7_RelatingActor, ::Ifc4x3_rc2::IfcActorRole* v8_ActingRole) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcControl* Ifc4x3_rc2::IfcRelAssignsToControl::RelatingControl() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcControl>(true); }
void Ifc4x3_rc2::IfcRelAssignsToControl::setRelatingControl(::Ifc4x3_rc2::IfcControl* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToControl::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToControl_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToControl::Class() { return *IFC4X3_RC2_IfcRelAssignsToControl_type; }
Ifc4x3_rc2::IfcRelAssignsToControl::IfcRelAssignsToControl(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToControl::IfcRelAssignsToControl(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcControl* v7_RelatingControl) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcGroup* Ifc4x3_rc2::IfcRelAssignsToGroup::RelatingGroup() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcGroup>(true); }
void Ifc4x3_rc2::IfcRelAssignsToGroup::setRelatingGroup(::Ifc4x3_rc2::IfcGroup* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToGroup::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToGroup_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToGroup::Class() { return *IFC4X3_RC2_IfcRelAssignsToGroup_type; }
Ifc4x3_rc2::IfcRelAssignsToGroup::IfcRelAssignsToGroup(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToGroup::IfcRelAssignsToGroup(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcGroup* v7_RelatingGroup) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRelAssignsToGroupByFactor::Factor() const {  double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcRelAssignsToGroupByFactor::setFactor(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToGroupByFactor::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToGroupByFactor::Class() { return *IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type; }
Ifc4x3_rc2::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(IfcEntityInstanceData* e) : IfcRelAssignsToGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToGroupByFactor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToGroupByFactor::IfcRelAssignsToGroupByFactor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcGroup* v7_RelatingGroup, double v8_Factor) : IfcRelAssignsToGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProcessSelect* Ifc4x3_rc2::IfcRelAssignsToProcess::RelatingProcess() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcProcessSelect>(true); }
void Ifc4x3_rc2::IfcRelAssignsToProcess::setRelatingProcess(::Ifc4x3_rc2::IfcProcessSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcMeasureWithUnit* Ifc4x3_rc2::IfcRelAssignsToProcess::QuantityInProcess() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcMeasureWithUnit>(true); }
void Ifc4x3_rc2::IfcRelAssignsToProcess::setQuantityInProcess(::Ifc4x3_rc2::IfcMeasureWithUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToProcess::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToProcess_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToProcess::Class() { return *IFC4X3_RC2_IfcRelAssignsToProcess_type; }
Ifc4x3_rc2::IfcRelAssignsToProcess::IfcRelAssignsToProcess(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToProcess_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToProcess::IfcRelAssignsToProcess(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcProcessSelect* v7_RelatingProcess, ::Ifc4x3_rc2::IfcMeasureWithUnit* v8_QuantityInProcess) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProductSelect* Ifc4x3_rc2::IfcRelAssignsToProduct::RelatingProduct() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcProductSelect>(true); }
void Ifc4x3_rc2::IfcRelAssignsToProduct::setRelatingProduct(::Ifc4x3_rc2::IfcProductSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToProduct::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToProduct_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToProduct::Class() { return *IFC4X3_RC2_IfcRelAssignsToProduct_type; }
Ifc4x3_rc2::IfcRelAssignsToProduct::IfcRelAssignsToProduct(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToProduct_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToProduct::IfcRelAssignsToProduct(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcProductSelect* v7_RelatingProduct) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcResourceSelect* Ifc4x3_rc2::IfcRelAssignsToResource::RelatingResource() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcResourceSelect>(true); }
void Ifc4x3_rc2::IfcRelAssignsToResource::setRelatingResource(::Ifc4x3_rc2::IfcResourceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToResource::declaration() const { return *IFC4X3_RC2_IfcRelAssignsToResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssignsToResource::Class() { return *IFC4X3_RC2_IfcRelAssignsToResource_type; }
Ifc4x3_rc2::IfcRelAssignsToResource::IfcRelAssignsToResource(IfcEntityInstanceData* e) : IfcRelAssigns((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssignsToResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssignsToResource::IfcRelAssignsToResource(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, boost::optional< ::Ifc4x3_rc2::IfcObjectTypeEnum::Value > v6_RelatedObjectsType, ::Ifc4x3_rc2::IfcResourceSelect* v7_RelatingResource) : IfcRelAssigns((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr Ifc4x3_rc2::IfcRelAssociates::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcDefinitionSelect >(); }
void Ifc4x3_rc2::IfcRelAssociates::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociates::declaration() const { return *IFC4X3_RC2_IfcRelAssociates_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociates::Class() { return *IFC4X3_RC2_IfcRelAssociates_type; }
Ifc4x3_rc2::IfcRelAssociates::IfcRelAssociates(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociates_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociates::IfcRelAssociates(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(4,attr);} }

// Function implementations for IfcRelAssociatesApproval
::Ifc4x3_rc2::IfcApproval* Ifc4x3_rc2::IfcRelAssociatesApproval::RelatingApproval() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcApproval>(true); }
void Ifc4x3_rc2::IfcRelAssociatesApproval::setRelatingApproval(::Ifc4x3_rc2::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesApproval::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesApproval_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesApproval::Class() { return *IFC4X3_RC2_IfcRelAssociatesApproval_type; }
Ifc4x3_rc2::IfcRelAssociatesApproval::IfcRelAssociatesApproval(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesApproval_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesApproval::IfcRelAssociatesApproval(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcApproval* v6_RelatingApproval) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingApproval));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesClassification
::Ifc4x3_rc2::IfcClassificationSelect* Ifc4x3_rc2::IfcRelAssociatesClassification::RelatingClassification() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcClassificationSelect>(true); }
void Ifc4x3_rc2::IfcRelAssociatesClassification::setRelatingClassification(::Ifc4x3_rc2::IfcClassificationSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesClassification::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesClassification_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesClassification::Class() { return *IFC4X3_RC2_IfcRelAssociatesClassification_type; }
Ifc4x3_rc2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesClassification_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesClassification::IfcRelAssociatesClassification(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcClassificationSelect* v6_RelatingClassification) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcRelAssociatesConstraint::Intent() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcRelAssociatesConstraint::setIntent(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcConstraint* Ifc4x3_rc2::IfcRelAssociatesConstraint::RelatingConstraint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcConstraint>(true); }
void Ifc4x3_rc2::IfcRelAssociatesConstraint::setRelatingConstraint(::Ifc4x3_rc2::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesConstraint::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesConstraint_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesConstraint::Class() { return *IFC4X3_RC2_IfcRelAssociatesConstraint_type; }
Ifc4x3_rc2::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesConstraint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesConstraint::IfcRelAssociatesConstraint(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, boost::optional< std::string > v6_Intent, ::Ifc4x3_rc2::IfcConstraint* v7_RelatingConstraint) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcDocumentSelect* Ifc4x3_rc2::IfcRelAssociatesDocument::RelatingDocument() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcDocumentSelect>(true); }
void Ifc4x3_rc2::IfcRelAssociatesDocument::setRelatingDocument(::Ifc4x3_rc2::IfcDocumentSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesDocument::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesDocument_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesDocument::Class() { return *IFC4X3_RC2_IfcRelAssociatesDocument_type; }
Ifc4x3_rc2::IfcRelAssociatesDocument::IfcRelAssociatesDocument(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesDocument_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesDocument::IfcRelAssociatesDocument(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcDocumentSelect* v6_RelatingDocument) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingDocument));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesLibrary
::Ifc4x3_rc2::IfcLibrarySelect* Ifc4x3_rc2::IfcRelAssociatesLibrary::RelatingLibrary() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcLibrarySelect>(true); }
void Ifc4x3_rc2::IfcRelAssociatesLibrary::setRelatingLibrary(::Ifc4x3_rc2::IfcLibrarySelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesLibrary::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesLibrary_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesLibrary::Class() { return *IFC4X3_RC2_IfcRelAssociatesLibrary_type; }
Ifc4x3_rc2::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesLibrary_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesLibrary::IfcRelAssociatesLibrary(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcLibrarySelect* v6_RelatingLibrary) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingLibrary));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesMaterial
::Ifc4x3_rc2::IfcMaterialSelect* Ifc4x3_rc2::IfcRelAssociatesMaterial::RelatingMaterial() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcMaterialSelect>(true); }
void Ifc4x3_rc2::IfcRelAssociatesMaterial::setRelatingMaterial(::Ifc4x3_rc2::IfcMaterialSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesMaterial::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesMaterial_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesMaterial::Class() { return *IFC4X3_RC2_IfcRelAssociatesMaterial_type; }
Ifc4x3_rc2::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesMaterial_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesMaterial::IfcRelAssociatesMaterial(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcMaterialSelect* v6_RelatingMaterial) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingMaterial));data_->setArgument(5,attr);} }

// Function implementations for IfcRelAssociatesProfileDef
::Ifc4x3_rc2::IfcProfileDef* Ifc4x3_rc2::IfcRelAssociatesProfileDef::RelatingProfileDef() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcRelAssociatesProfileDef::setRelatingProfileDef(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesProfileDef::declaration() const { return *IFC4X3_RC2_IfcRelAssociatesProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelAssociatesProfileDef::Class() { return *IFC4X3_RC2_IfcRelAssociatesProfileDef_type; }
Ifc4x3_rc2::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(IfcEntityInstanceData* e) : IfcRelAssociates((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelAssociatesProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelAssociatesProfileDef::IfcRelAssociatesProfileDef(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcProfileDef* v6_RelatingProfileDef) : IfcRelAssociates((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());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_rc2::IfcRelConnects::declaration() const { return *IFC4X3_RC2_IfcRelConnects_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnects::Class() { return *IFC4X3_RC2_IfcRelConnects_type; }
Ifc4x3_rc2::IfcRelConnects::IfcRelConnects(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnects_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnects::IfcRelConnects(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConnectionGeometry* Ifc4x3_rc2::IfcRelConnectsElements::ConnectionGeometry() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcConnectionGeometry>(true); }
void Ifc4x3_rc2::IfcRelConnectsElements::setConnectionGeometry(::Ifc4x3_rc2::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcElement* Ifc4x3_rc2::IfcRelConnectsElements::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelConnectsElements::setRelatingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcElement* Ifc4x3_rc2::IfcRelConnectsElements::RelatedElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelConnectsElements::setRelatedElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsElements::declaration() const { return *IFC4X3_RC2_IfcRelConnectsElements_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsElements::Class() { return *IFC4X3_RC2_IfcRelConnectsElements_type; }
Ifc4x3_rc2::IfcRelConnectsElements::IfcRelConnectsElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsElements::IfcRelConnectsElements(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_rc2::IfcElement* v6_RelatingElement, ::Ifc4x3_rc2::IfcElement* v7_RelatedElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelConnectsPathElements::RelatingPriorities() const {  std::vector< int > /*[0:?]*/ v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::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_rc2::IfcRelConnectsPathElements::RelatedPriorities() const {  std::vector< int > /*[0:?]*/ v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRelConnectsPathElements::setRelatedPriorities(std::vector< int > /*[0:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcConnectionTypeEnum::Value Ifc4x3_rc2::IfcRelConnectsPathElements::RelatedConnectionType() const {  return ::Ifc4x3_rc2::IfcConnectionTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcRelConnectsPathElements::setRelatedConnectionType(::Ifc4x3_rc2::IfcConnectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConnectionTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcConnectionTypeEnum::Value Ifc4x3_rc2::IfcRelConnectsPathElements::RelatingConnectionType() const {  return ::Ifc4x3_rc2::IfcConnectionTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcRelConnectsPathElements::setRelatingConnectionType(::Ifc4x3_rc2::IfcConnectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcConnectionTypeEnum::ToString(v)));data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsPathElements::declaration() const { return *IFC4X3_RC2_IfcRelConnectsPathElements_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsPathElements::Class() { return *IFC4X3_RC2_IfcRelConnectsPathElements_type; }
Ifc4x3_rc2::IfcRelConnectsPathElements::IfcRelConnectsPathElements(IfcEntityInstanceData* e) : IfcRelConnectsElements((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsPathElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsPathElements::IfcRelConnectsPathElements(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_rc2::IfcElement* v6_RelatingElement, ::Ifc4x3_rc2::IfcElement* v7_RelatedElement, std::vector< int > /*[0:?]*/ v8_RelatingPriorities, std::vector< int > /*[0:?]*/ v9_RelatedPriorities, ::Ifc4x3_rc2::IfcConnectionTypeEnum::Value v10_RelatedConnectionType, ::Ifc4x3_rc2::IfcConnectionTypeEnum::Value v11_RelatingConnectionType) : IfcRelConnectsElements((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConnectionTypeEnum::ToString(v10_RelatedConnectionType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_RelatingConnectionType,::Ifc4x3_rc2::IfcConnectionTypeEnum::ToString(v11_RelatingConnectionType))));data_->setArgument(10,attr);} }

// Function implementations for IfcRelConnectsPortToElement
::Ifc4x3_rc2::IfcPort* Ifc4x3_rc2::IfcRelConnectsPortToElement::RelatingPort() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcPort>(true); }
void Ifc4x3_rc2::IfcRelConnectsPortToElement::setRelatingPort(::Ifc4x3_rc2::IfcPort* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcDistributionElement* Ifc4x3_rc2::IfcRelConnectsPortToElement::RelatedElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcDistributionElement>(true); }
void Ifc4x3_rc2::IfcRelConnectsPortToElement::setRelatedElement(::Ifc4x3_rc2::IfcDistributionElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsPortToElement::declaration() const { return *IFC4X3_RC2_IfcRelConnectsPortToElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsPortToElement::Class() { return *IFC4X3_RC2_IfcRelConnectsPortToElement_type; }
Ifc4x3_rc2::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsPortToElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsPortToElement::IfcRelConnectsPortToElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcPort* v5_RelatingPort, ::Ifc4x3_rc2::IfcDistributionElement* v6_RelatedElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPort* Ifc4x3_rc2::IfcRelConnectsPorts::RelatingPort() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcPort>(true); }
void Ifc4x3_rc2::IfcRelConnectsPorts::setRelatingPort(::Ifc4x3_rc2::IfcPort* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcPort* Ifc4x3_rc2::IfcRelConnectsPorts::RelatedPort() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcPort>(true); }
void Ifc4x3_rc2::IfcRelConnectsPorts::setRelatedPort(::Ifc4x3_rc2::IfcPort* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcElement* Ifc4x3_rc2::IfcRelConnectsPorts::RealizingElement() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelConnectsPorts::setRealizingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsPorts::declaration() const { return *IFC4X3_RC2_IfcRelConnectsPorts_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsPorts::Class() { return *IFC4X3_RC2_IfcRelConnectsPorts_type; }
Ifc4x3_rc2::IfcRelConnectsPorts::IfcRelConnectsPorts(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsPorts_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsPorts::IfcRelConnectsPorts(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcPort* v5_RelatingPort, ::Ifc4x3_rc2::IfcPort* v6_RelatedPort, ::Ifc4x3_rc2::IfcElement* v7_RealizingElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralActivityAssignmentSelect* Ifc4x3_rc2::IfcRelConnectsStructuralActivity::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcStructuralActivityAssignmentSelect>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralActivity::setRelatingElement(::Ifc4x3_rc2::IfcStructuralActivityAssignmentSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcStructuralActivity* Ifc4x3_rc2::IfcRelConnectsStructuralActivity::RelatedStructuralActivity() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcStructuralActivity>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralActivity::setRelatedStructuralActivity(::Ifc4x3_rc2::IfcStructuralActivity* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsStructuralActivity::declaration() const { return *IFC4X3_RC2_IfcRelConnectsStructuralActivity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsStructuralActivity::Class() { return *IFC4X3_RC2_IfcRelConnectsStructuralActivity_type; }
Ifc4x3_rc2::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsStructuralActivity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsStructuralActivity::IfcRelConnectsStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcStructuralActivityAssignmentSelect* v5_RelatingElement, ::Ifc4x3_rc2::IfcStructuralActivity* v6_RelatedStructuralActivity) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralMember* Ifc4x3_rc2::IfcRelConnectsStructuralMember::RelatingStructuralMember() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcStructuralMember>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setRelatingStructuralMember(::Ifc4x3_rc2::IfcStructuralMember* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcStructuralConnection* Ifc4x3_rc2::IfcRelConnectsStructuralMember::RelatedStructuralConnection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcStructuralConnection>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setRelatedStructuralConnection(::Ifc4x3_rc2::IfcStructuralConnection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcBoundaryCondition* Ifc4x3_rc2::IfcRelConnectsStructuralMember::AppliedCondition() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcBoundaryCondition>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setAppliedCondition(::Ifc4x3_rc2::IfcBoundaryCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcStructuralConnectionCondition* Ifc4x3_rc2::IfcRelConnectsStructuralMember::AdditionalConditions() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcStructuralConnectionCondition>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setAdditionalConditions(::Ifc4x3_rc2::IfcStructuralConnectionCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcRelConnectsStructuralMember::SupportedLength() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setSupportedLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcRelConnectsStructuralMember::ConditionCoordinateSystem() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcRelConnectsStructuralMember::setConditionCoordinateSystem(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsStructuralMember::declaration() const { return *IFC4X3_RC2_IfcRelConnectsStructuralMember_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsStructuralMember::Class() { return *IFC4X3_RC2_IfcRelConnectsStructuralMember_type; }
Ifc4x3_rc2::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsStructuralMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsStructuralMember::IfcRelConnectsStructuralMember(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_rc2::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_rc2::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_rc2::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_rc2::IfcAxis2Placement3D* v10_ConditionCoordinateSystem) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcConnectionGeometry* Ifc4x3_rc2::IfcRelConnectsWithEccentricity::ConnectionConstraint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcConnectionGeometry>(true); }
void Ifc4x3_rc2::IfcRelConnectsWithEccentricity::setConnectionConstraint(::Ifc4x3_rc2::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsWithEccentricity::declaration() const { return *IFC4X3_RC2_IfcRelConnectsWithEccentricity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsWithEccentricity::Class() { return *IFC4X3_RC2_IfcRelConnectsWithEccentricity_type; }
Ifc4x3_rc2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(IfcEntityInstanceData* e) : IfcRelConnectsStructuralMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsWithEccentricity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsWithEccentricity::IfcRelConnectsWithEccentricity(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcStructuralMember* v5_RelatingStructuralMember, ::Ifc4x3_rc2::IfcStructuralConnection* v6_RelatedStructuralConnection, ::Ifc4x3_rc2::IfcBoundaryCondition* v7_AppliedCondition, ::Ifc4x3_rc2::IfcStructuralConnectionCondition* v8_AdditionalConditions, boost::optional< double > v9_SupportedLength, ::Ifc4x3_rc2::IfcAxis2Placement3D* v10_ConditionCoordinateSystem, ::Ifc4x3_rc2::IfcConnectionGeometry* v11_ConnectionConstraint) : IfcRelConnectsStructuralMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElement >::ptr Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::RealizingElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(7); return es->as< ::Ifc4x3_rc2::IfcElement >(); }
void Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::setRealizingElements(aggregate_of< ::Ifc4x3_rc2::IfcElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::ConnectionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::setConnectionType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::declaration() const { return *IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::Class() { return *IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type; }
Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(IfcEntityInstanceData* e) : IfcRelConnectsElements((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelConnectsWithRealizingElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelConnectsWithRealizingElements::IfcRelConnectsWithRealizingElements(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcConnectionGeometry* v5_ConnectionGeometry, ::Ifc4x3_rc2::IfcElement* v6_RelatingElement, ::Ifc4x3_rc2::IfcElement* v7_RelatedElement, aggregate_of< ::Ifc4x3_rc2::IfcElement >::ptr v8_RealizingElements, boost::optional< std::string > v9_ConnectionType) : IfcRelConnectsElements((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProduct >::ptr Ifc4x3_rc2::IfcRelContainedInSpatialStructure::RelatedElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcProduct >(); }
void Ifc4x3_rc2::IfcRelContainedInSpatialStructure::setRelatedElements(aggregate_of< ::Ifc4x3_rc2::IfcProduct >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcSpatialElement* Ifc4x3_rc2::IfcRelContainedInSpatialStructure::RelatingStructure() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcSpatialElement>(true); }
void Ifc4x3_rc2::IfcRelContainedInSpatialStructure::setRelatingStructure(::Ifc4x3_rc2::IfcSpatialElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelContainedInSpatialStructure::declaration() const { return *IFC4X3_RC2_IfcRelContainedInSpatialStructure_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelContainedInSpatialStructure::Class() { return *IFC4X3_RC2_IfcRelContainedInSpatialStructure_type; }
Ifc4x3_rc2::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelContainedInSpatialStructure_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelContainedInSpatialStructure::IfcRelContainedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcProduct >::ptr v5_RelatedElements, ::Ifc4x3_rc2::IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElement* Ifc4x3_rc2::IfcRelCoversBldgElements::RelatingBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelCoversBldgElements::setRelatingBuildingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCovering >::ptr Ifc4x3_rc2::IfcRelCoversBldgElements::RelatedCoverings() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcCovering >(); }
void Ifc4x3_rc2::IfcRelCoversBldgElements::setRelatedCoverings(aggregate_of< ::Ifc4x3_rc2::IfcCovering >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelCoversBldgElements::declaration() const { return *IFC4X3_RC2_IfcRelCoversBldgElements_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelCoversBldgElements::Class() { return *IFC4X3_RC2_IfcRelCoversBldgElements_type; }
Ifc4x3_rc2::IfcRelCoversBldgElements::IfcRelCoversBldgElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelCoversBldgElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelCoversBldgElements::IfcRelCoversBldgElements(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcElement* v5_RelatingBuildingElement, aggregate_of< ::Ifc4x3_rc2::IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSpace* Ifc4x3_rc2::IfcRelCoversSpaces::RelatingSpace() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSpace>(true); }
void Ifc4x3_rc2::IfcRelCoversSpaces::setRelatingSpace(::Ifc4x3_rc2::IfcSpace* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCovering >::ptr Ifc4x3_rc2::IfcRelCoversSpaces::RelatedCoverings() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcCovering >(); }
void Ifc4x3_rc2::IfcRelCoversSpaces::setRelatedCoverings(aggregate_of< ::Ifc4x3_rc2::IfcCovering >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelCoversSpaces::declaration() const { return *IFC4X3_RC2_IfcRelCoversSpaces_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelCoversSpaces::Class() { return *IFC4X3_RC2_IfcRelCoversSpaces_type; }
Ifc4x3_rc2::IfcRelCoversSpaces::IfcRelCoversSpaces(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelCoversSpaces_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelCoversSpaces::IfcRelCoversSpaces(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcSpace* v5_RelatingSpace, aggregate_of< ::Ifc4x3_rc2::IfcCovering >::ptr v6_RelatedCoverings) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcContext* Ifc4x3_rc2::IfcRelDeclares::RelatingContext() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcContext>(true); }
void Ifc4x3_rc2::IfcRelDeclares::setRelatingContext(::Ifc4x3_rc2::IfcContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr Ifc4x3_rc2::IfcRelDeclares::RelatedDefinitions() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcDefinitionSelect >(); }
void Ifc4x3_rc2::IfcRelDeclares::setRelatedDefinitions(aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelDeclares::declaration() const { return *IFC4X3_RC2_IfcRelDeclares_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDeclares::Class() { return *IFC4X3_RC2_IfcRelDeclares_type; }
Ifc4x3_rc2::IfcRelDeclares::IfcRelDeclares(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDeclares_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDeclares::IfcRelDeclares(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcContext* v5_RelatingContext, aggregate_of< ::Ifc4x3_rc2::IfcDefinitionSelect >::ptr v6_RelatedDefinitions) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(5,attr);} }

// Function implementations for IfcRelDecomposes


const IfcParse::entity& Ifc4x3_rc2::IfcRelDecomposes::declaration() const { return *IFC4X3_RC2_IfcRelDecomposes_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDecomposes::Class() { return *IFC4X3_RC2_IfcRelDecomposes_type; }
Ifc4x3_rc2::IfcRelDecomposes::IfcRelDecomposes(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDecomposes_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDecomposes::IfcRelDecomposes(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelDefines::declaration() const { return *IFC4X3_RC2_IfcRelDefines_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDefines::Class() { return *IFC4X3_RC2_IfcRelDefines_type; }
Ifc4x3_rc2::IfcRelDefines::IfcRelDefines(IfcEntityInstanceData* e) : IfcRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDefines_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDefines::IfcRelDefines(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcObject >::ptr Ifc4x3_rc2::IfcRelDefinesByObject::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcObject >(); }
void Ifc4x3_rc2::IfcRelDefinesByObject::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObject >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcObject* Ifc4x3_rc2::IfcRelDefinesByObject::RelatingObject() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcObject>(true); }
void Ifc4x3_rc2::IfcRelDefinesByObject::setRelatingObject(::Ifc4x3_rc2::IfcObject* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByObject::declaration() const { return *IFC4X3_RC2_IfcRelDefinesByObject_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByObject::Class() { return *IFC4X3_RC2_IfcRelDefinesByObject_type; }
Ifc4x3_rc2::IfcRelDefinesByObject::IfcRelDefinesByObject(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDefinesByObject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDefinesByObject::IfcRelDefinesByObject(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcObject* v6_RelatingObject) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcObjectDefinition >::ptr Ifc4x3_rc2::IfcRelDefinesByProperties::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcObjectDefinition >(); }
void Ifc4x3_rc2::IfcRelDefinesByProperties::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcPropertySetDefinitionSelect* Ifc4x3_rc2::IfcRelDefinesByProperties::RelatingPropertyDefinition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcPropertySetDefinitionSelect>(true); }
void Ifc4x3_rc2::IfcRelDefinesByProperties::setRelatingPropertyDefinition(::Ifc4x3_rc2::IfcPropertySetDefinitionSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByProperties::declaration() const { return *IFC4X3_RC2_IfcRelDefinesByProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByProperties::Class() { return *IFC4X3_RC2_IfcRelDefinesByProperties_type; }
Ifc4x3_rc2::IfcRelDefinesByProperties::IfcRelDefinesByProperties(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDefinesByProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDefinesByProperties::IfcRelDefinesByProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcPropertySetDefinitionSelect* v6_RelatingPropertyDefinition) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPropertySetDefinition >::ptr Ifc4x3_rc2::IfcRelDefinesByTemplate::RelatedPropertySets() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcPropertySetDefinition >(); }
void Ifc4x3_rc2::IfcRelDefinesByTemplate::setRelatedPropertySets(aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcPropertySetTemplate* Ifc4x3_rc2::IfcRelDefinesByTemplate::RelatingTemplate() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcPropertySetTemplate>(true); }
void Ifc4x3_rc2::IfcRelDefinesByTemplate::setRelatingTemplate(::Ifc4x3_rc2::IfcPropertySetTemplate* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByTemplate::declaration() const { return *IFC4X3_RC2_IfcRelDefinesByTemplate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByTemplate::Class() { return *IFC4X3_RC2_IfcRelDefinesByTemplate_type; }
Ifc4x3_rc2::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDefinesByTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDefinesByTemplate::IfcRelDefinesByTemplate(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr v5_RelatedPropertySets, ::Ifc4x3_rc2::IfcPropertySetTemplate* v6_RelatingTemplate) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcObject >::ptr Ifc4x3_rc2::IfcRelDefinesByType::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcObject >(); }
void Ifc4x3_rc2::IfcRelDefinesByType::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObject >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcTypeObject* Ifc4x3_rc2::IfcRelDefinesByType::RelatingType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcTypeObject>(true); }
void Ifc4x3_rc2::IfcRelDefinesByType::setRelatingType(::Ifc4x3_rc2::IfcTypeObject* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByType::declaration() const { return *IFC4X3_RC2_IfcRelDefinesByType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelDefinesByType::Class() { return *IFC4X3_RC2_IfcRelDefinesByType_type; }
Ifc4x3_rc2::IfcRelDefinesByType::IfcRelDefinesByType(IfcEntityInstanceData* e) : IfcRelDefines((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelDefinesByType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelDefinesByType::IfcRelDefinesByType(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcObject >::ptr v5_RelatedObjects, ::Ifc4x3_rc2::IfcTypeObject* v6_RelatingType) : IfcRelDefines((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcOpeningElement* Ifc4x3_rc2::IfcRelFillsElement::RelatingOpeningElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcOpeningElement>(true); }
void Ifc4x3_rc2::IfcRelFillsElement::setRelatingOpeningElement(::Ifc4x3_rc2::IfcOpeningElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcElement* Ifc4x3_rc2::IfcRelFillsElement::RelatedBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelFillsElement::setRelatedBuildingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelFillsElement::declaration() const { return *IFC4X3_RC2_IfcRelFillsElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelFillsElement::Class() { return *IFC4X3_RC2_IfcRelFillsElement_type; }
Ifc4x3_rc2::IfcRelFillsElement::IfcRelFillsElement(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelFillsElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelFillsElement::IfcRelFillsElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcOpeningElement* v5_RelatingOpeningElement, ::Ifc4x3_rc2::IfcElement* v6_RelatedBuildingElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcDistributionControlElement >::ptr Ifc4x3_rc2::IfcRelFlowControlElements::RelatedControlElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcDistributionControlElement >(); }
void Ifc4x3_rc2::IfcRelFlowControlElements::setRelatedControlElements(aggregate_of< ::Ifc4x3_rc2::IfcDistributionControlElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcDistributionFlowElement* Ifc4x3_rc2::IfcRelFlowControlElements::RelatingFlowElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcDistributionFlowElement>(true); }
void Ifc4x3_rc2::IfcRelFlowControlElements::setRelatingFlowElement(::Ifc4x3_rc2::IfcDistributionFlowElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelFlowControlElements::declaration() const { return *IFC4X3_RC2_IfcRelFlowControlElements_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelFlowControlElements::Class() { return *IFC4X3_RC2_IfcRelFlowControlElements_type; }
Ifc4x3_rc2::IfcRelFlowControlElements::IfcRelFlowControlElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelFlowControlElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelFlowControlElements::IfcRelFlowControlElements(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcDistributionControlElement >::ptr v5_RelatedControlElements, ::Ifc4x3_rc2::IfcDistributionFlowElement* v6_RelatingFlowElement) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcInterferenceSelect* Ifc4x3_rc2::IfcRelInterferesElements::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcInterferenceSelect>(true); }
void Ifc4x3_rc2::IfcRelInterferesElements::setRelatingElement(::Ifc4x3_rc2::IfcInterferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcInterferenceSelect* Ifc4x3_rc2::IfcRelInterferesElements::RelatedElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcInterferenceSelect>(true); }
void Ifc4x3_rc2::IfcRelInterferesElements::setRelatedElement(::Ifc4x3_rc2::IfcInterferenceSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcConnectionGeometry* Ifc4x3_rc2::IfcRelInterferesElements::InterferenceGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcConnectionGeometry>(true); }
void Ifc4x3_rc2::IfcRelInterferesElements::setInterferenceGeometry(::Ifc4x3_rc2::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRelInterferesElements::InterferenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcRelInterferesElements::setInterferenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcRelInterferesElements::ImpliedOrder() const {  boost::logic::tribool v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRelInterferesElements::setImpliedOrder(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelInterferesElements::declaration() const { return *IFC4X3_RC2_IfcRelInterferesElements_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelInterferesElements::Class() { return *IFC4X3_RC2_IfcRelInterferesElements_type; }
Ifc4x3_rc2::IfcRelInterferesElements::IfcRelInterferesElements(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelInterferesElements_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelInterferesElements::IfcRelInterferesElements(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcInterferenceSelect* v5_RelatingElement, ::Ifc4x3_rc2::IfcInterferenceSelect* v6_RelatedElement, ::Ifc4x3_rc2::IfcConnectionGeometry* v7_InterferenceGeometry, boost::optional< std::string > v8_InterferenceType, boost::logic::tribool v9_ImpliedOrder) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcObjectDefinition* Ifc4x3_rc2::IfcRelNests::RelatingObject() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcObjectDefinition>(true); }
void Ifc4x3_rc2::IfcRelNests::setRelatingObject(::Ifc4x3_rc2::IfcObjectDefinition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr Ifc4x3_rc2::IfcRelNests::RelatedObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcObjectDefinition >(); }
void Ifc4x3_rc2::IfcRelNests::setRelatedObjects(aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelNests::declaration() const { return *IFC4X3_RC2_IfcRelNests_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelNests::Class() { return *IFC4X3_RC2_IfcRelNests_type; }
Ifc4x3_rc2::IfcRelNests::IfcRelNests(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelNests_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelNests::IfcRelNests(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcObjectDefinition* v5_RelatingObject, aggregate_of< ::Ifc4x3_rc2::IfcObjectDefinition >::ptr v6_RelatedObjects) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPositioningElement* Ifc4x3_rc2::IfcRelPositions::RelatingPositioningElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcPositioningElement>(true); }
void Ifc4x3_rc2::IfcRelPositions::setRelatingPositioningElement(::Ifc4x3_rc2::IfcPositioningElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcProduct >::ptr Ifc4x3_rc2::IfcRelPositions::RelatedProducts() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcProduct >(); }
void Ifc4x3_rc2::IfcRelPositions::setRelatedProducts(aggregate_of< ::Ifc4x3_rc2::IfcProduct >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelPositions::declaration() const { return *IFC4X3_RC2_IfcRelPositions_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelPositions::Class() { return *IFC4X3_RC2_IfcRelPositions_type; }
Ifc4x3_rc2::IfcRelPositions::IfcRelPositions(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelPositions_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelPositions::IfcRelPositions(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcPositioningElement* v5_RelatingPositioningElement, aggregate_of< ::Ifc4x3_rc2::IfcProduct >::ptr v6_RelatedProducts) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElement* Ifc4x3_rc2::IfcRelProjectsElement::RelatingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelProjectsElement::setRelatingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcFeatureElementAddition* Ifc4x3_rc2::IfcRelProjectsElement::RelatedFeatureElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcFeatureElementAddition>(true); }
void Ifc4x3_rc2::IfcRelProjectsElement::setRelatedFeatureElement(::Ifc4x3_rc2::IfcFeatureElementAddition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelProjectsElement::declaration() const { return *IFC4X3_RC2_IfcRelProjectsElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelProjectsElement::Class() { return *IFC4X3_RC2_IfcRelProjectsElement_type; }
Ifc4x3_rc2::IfcRelProjectsElement::IfcRelProjectsElement(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelProjectsElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelProjectsElement::IfcRelProjectsElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcElement* v5_RelatingElement, ::Ifc4x3_rc2::IfcFeatureElementAddition* v6_RelatedFeatureElement) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcSpatialReferenceSelect >::ptr Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::RelatedElements() const {  aggregate_of_instance::ptr es = *data_->getArgument(4); return es->as< ::Ifc4x3_rc2::IfcSpatialReferenceSelect >(); }
void Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::setRelatedElements(aggregate_of< ::Ifc4x3_rc2::IfcSpatialReferenceSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcSpatialElement* Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::RelatingStructure() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcSpatialElement>(true); }
void Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::setRelatingStructure(::Ifc4x3_rc2::IfcSpatialElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::declaration() const { return *IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::Class() { return *IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type; }
Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::IfcRelReferencedInSpatialStructure(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, aggregate_of< ::Ifc4x3_rc2::IfcSpatialReferenceSelect >::ptr v5_RelatedElements, ::Ifc4x3_rc2::IfcSpatialElement* v6_RelatingStructure) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v6_RelatingStructure));data_->setArgument(5,attr);} }

// Function implementations for IfcRelSequence
::Ifc4x3_rc2::IfcProcess* Ifc4x3_rc2::IfcRelSequence::RelatingProcess() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcProcess>(true); }
void Ifc4x3_rc2::IfcRelSequence::setRelatingProcess(::Ifc4x3_rc2::IfcProcess* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcProcess* Ifc4x3_rc2::IfcRelSequence::RelatedProcess() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcProcess>(true); }
void Ifc4x3_rc2::IfcRelSequence::setRelatedProcess(::Ifc4x3_rc2::IfcProcess* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcLagTime* Ifc4x3_rc2::IfcRelSequence::TimeLag() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcLagTime>(true); }
void Ifc4x3_rc2::IfcRelSequence::setTimeLag(::Ifc4x3_rc2::IfcLagTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcSequenceEnum::Value > Ifc4x3_rc2::IfcRelSequence::SequenceType() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSequenceEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcRelSequence::setSequenceType(boost::optional< ::Ifc4x3_rc2::IfcSequenceEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSequenceEnum::ToString(*v)));}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRelSequence::UserDefinedSequenceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcRelSequence::setUserDefinedSequenceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelSequence::declaration() const { return *IFC4X3_RC2_IfcRelSequence_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelSequence::Class() { return *IFC4X3_RC2_IfcRelSequence_type; }
Ifc4x3_rc2::IfcRelSequence::IfcRelSequence(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelSequence_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelSequence::IfcRelSequence(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcProcess* v5_RelatingProcess, ::Ifc4x3_rc2::IfcProcess* v6_RelatedProcess, ::Ifc4x3_rc2::IfcLagTime* v7_TimeLag, boost::optional< ::Ifc4x3_rc2::IfcSequenceEnum::Value > v8_SequenceType, boost::optional< std::string > v9_UserDefinedSequenceType) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSystem* Ifc4x3_rc2::IfcRelServicesBuildings::RelatingSystem() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSystem>(true); }
void Ifc4x3_rc2::IfcRelServicesBuildings::setRelatingSystem(::Ifc4x3_rc2::IfcSystem* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcSpatialElement >::ptr Ifc4x3_rc2::IfcRelServicesBuildings::RelatedBuildings() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcSpatialElement >(); }
void Ifc4x3_rc2::IfcRelServicesBuildings::setRelatedBuildings(aggregate_of< ::Ifc4x3_rc2::IfcSpatialElement >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelServicesBuildings::declaration() const { return *IFC4X3_RC2_IfcRelServicesBuildings_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelServicesBuildings::Class() { return *IFC4X3_RC2_IfcRelServicesBuildings_type; }
Ifc4x3_rc2::IfcRelServicesBuildings::IfcRelServicesBuildings(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelServicesBuildings_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelServicesBuildings::IfcRelServicesBuildings(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcSystem* v5_RelatingSystem, aggregate_of< ::Ifc4x3_rc2::IfcSpatialElement >::ptr v6_RelatedBuildings) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSpaceBoundarySelect* Ifc4x3_rc2::IfcRelSpaceBoundary::RelatingSpace() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSpaceBoundarySelect>(true); }
void Ifc4x3_rc2::IfcRelSpaceBoundary::setRelatingSpace(::Ifc4x3_rc2::IfcSpaceBoundarySelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcElement* Ifc4x3_rc2::IfcRelSpaceBoundary::RelatedBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelSpaceBoundary::setRelatedBuildingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcConnectionGeometry* Ifc4x3_rc2::IfcRelSpaceBoundary::ConnectionGeometry() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcConnectionGeometry>(true); }
void Ifc4x3_rc2::IfcRelSpaceBoundary::setConnectionGeometry(::Ifc4x3_rc2::IfcConnectionGeometry* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::Value Ifc4x3_rc2::IfcRelSpaceBoundary::PhysicalOrVirtualBoundary() const {  return ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcRelSpaceBoundary::setPhysicalOrVirtualBoundary(::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::ToString(v)));data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcInternalOrExternalEnum::Value Ifc4x3_rc2::IfcRelSpaceBoundary::InternalOrExternalBoundary() const {  return ::Ifc4x3_rc2::IfcInternalOrExternalEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcRelSpaceBoundary::setInternalOrExternalBoundary(::Ifc4x3_rc2::IfcInternalOrExternalEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcInternalOrExternalEnum::ToString(v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelSpaceBoundary::declaration() const { return *IFC4X3_RC2_IfcRelSpaceBoundary_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelSpaceBoundary::Class() { return *IFC4X3_RC2_IfcRelSpaceBoundary_type; }
Ifc4x3_rc2::IfcRelSpaceBoundary::IfcRelSpaceBoundary(IfcEntityInstanceData* e) : IfcRelConnects((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelSpaceBoundary_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelSpaceBoundary::IfcRelSpaceBoundary(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_rc2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_rc2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_rc2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary) : IfcRelConnects((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_InternalOrExternalBoundary,::Ifc4x3_rc2::IfcInternalOrExternalEnum::ToString(v9_InternalOrExternalBoundary))));data_->setArgument(8,attr);} }

// Function implementations for IfcRelSpaceBoundary1stLevel
::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel* Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::ParentBoundary() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel>(true); }
void Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::setParentBoundary(::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }

::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::list::ptr Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::InnerBoundaries() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type, 9)->as<IfcRelSpaceBoundary1stLevel>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::declaration() const { return *IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::Class() { return *IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type; }
Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(IfcEntityInstanceData* e) : IfcRelSpaceBoundary((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelSpaceBoundary1stLevel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel::IfcRelSpaceBoundary1stLevel(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_rc2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_rc2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_rc2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary) : IfcRelSpaceBoundary((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_InternalOrExternalBoundary,::Ifc4x3_rc2::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_rc2::IfcRelSpaceBoundary2ndLevel* Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::CorrespondingBoundary() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(10)))->as<::Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel>(true); }
void Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::setCorrespondingBoundary(::Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }

::Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::list::ptr Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::Corresponds() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type, 10)->as<IfcRelSpaceBoundary2ndLevel>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::declaration() const { return *IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::Class() { return *IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type; }
Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(IfcEntityInstanceData* e) : IfcRelSpaceBoundary1stLevel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelSpaceBoundary2ndLevel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel::IfcRelSpaceBoundary2ndLevel(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcSpaceBoundarySelect* v5_RelatingSpace, ::Ifc4x3_rc2::IfcElement* v6_RelatedBuildingElement, ::Ifc4x3_rc2::IfcConnectionGeometry* v7_ConnectionGeometry, ::Ifc4x3_rc2::IfcPhysicalOrVirtualEnum::Value v8_PhysicalOrVirtualBoundary, ::Ifc4x3_rc2::IfcInternalOrExternalEnum::Value v9_InternalOrExternalBoundary, ::Ifc4x3_rc2::IfcRelSpaceBoundary1stLevel* v10_ParentBoundary, ::Ifc4x3_rc2::IfcRelSpaceBoundary2ndLevel* v11_CorrespondingBoundary) : IfcRelSpaceBoundary1stLevel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPhysicalOrVirtualEnum::ToString(v8_PhysicalOrVirtualBoundary))));data_->setArgument(7,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v9_InternalOrExternalBoundary,::Ifc4x3_rc2::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_rc2::IfcElement* Ifc4x3_rc2::IfcRelVoidsElement::RelatingBuildingElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcElement>(true); }
void Ifc4x3_rc2::IfcRelVoidsElement::setRelatingBuildingElement(::Ifc4x3_rc2::IfcElement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcFeatureElementSubtraction* Ifc4x3_rc2::IfcRelVoidsElement::RelatedOpeningElement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcFeatureElementSubtraction>(true); }
void Ifc4x3_rc2::IfcRelVoidsElement::setRelatedOpeningElement(::Ifc4x3_rc2::IfcFeatureElementSubtraction* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRelVoidsElement::declaration() const { return *IFC4X3_RC2_IfcRelVoidsElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelVoidsElement::Class() { return *IFC4X3_RC2_IfcRelVoidsElement_type; }
Ifc4x3_rc2::IfcRelVoidsElement::IfcRelVoidsElement(IfcEntityInstanceData* e) : IfcRelDecomposes((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelVoidsElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelVoidsElement::IfcRelVoidsElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcElement* v5_RelatingBuildingElement, ::Ifc4x3_rc2::IfcFeatureElementSubtraction* v6_RelatedOpeningElement) : IfcRelDecomposes((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRelationship::declaration() const { return *IFC4X3_RC2_IfcRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRelationship::Class() { return *IFC4X3_RC2_IfcRelationship_type; }
Ifc4x3_rc2::IfcRelationship::IfcRelationship(IfcEntityInstanceData* e) : IfcRoot((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRelationship::IfcRelationship(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcRoot((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcReparametrisedCompositeCurveSegment::ParamLength() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment::setParamLength(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment::declaration() const { return *IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment::Class() { return *IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type; }
Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(IfcEntityInstanceData* e) : IfcCompositeCurveSegment((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcReparametrisedCompositeCurveSegment::IfcReparametrisedCompositeCurveSegment(::Ifc4x3_rc2::IfcTransitionCode::Value v1_Transition, bool v2_SameSense, ::Ifc4x3_rc2::IfcCurve* v3_ParentCurve, double v4_ParamLength) : IfcCompositeCurveSegment((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcReparametrisedCompositeCurveSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Transition,::Ifc4x3_rc2::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_rc2::IfcRepresentationContext* Ifc4x3_rc2::IfcRepresentation::ContextOfItems() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcRepresentationContext>(true); }
void Ifc4x3_rc2::IfcRepresentation::setContextOfItems(::Ifc4x3_rc2::IfcRepresentationContext* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRepresentation::RepresentationIdentifier() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcRepresentation::setRepresentationIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRepresentation::RepresentationType() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcRepresentation::setRepresentationType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr Ifc4x3_rc2::IfcRepresentation::Items() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcRepresentationItem >(); }
void Ifc4x3_rc2::IfcRepresentation::setItems(aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }

::Ifc4x3_rc2::IfcRepresentationMap::list::ptr Ifc4x3_rc2::IfcRepresentation::RepresentationMap() const { return data_->getInverse(IFC4X3_RC2_IfcRepresentationMap_type, 1)->as<IfcRepresentationMap>(); }
::Ifc4x3_rc2::IfcPresentationLayerAssignment::list::ptr Ifc4x3_rc2::IfcRepresentation::LayerAssignments() const { return data_->getInverse(IFC4X3_RC2_IfcPresentationLayerAssignment_type, 2)->as<IfcPresentationLayerAssignment>(); }
::Ifc4x3_rc2::IfcProductRepresentation::list::ptr Ifc4x3_rc2::IfcRepresentation::OfProductRepresentation() const { return data_->getInverse(IFC4X3_RC2_IfcProductRepresentation_type, 2)->as<IfcProductRepresentation>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcRepresentation::declaration() const { return *IFC4X3_RC2_IfcRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRepresentation::Class() { return *IFC4X3_RC2_IfcRepresentation_type; }
Ifc4x3_rc2::IfcRepresentation::IfcRepresentation(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRepresentation::IfcRepresentation(::Ifc4x3_rc2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v4_Items) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRepresentationContext::ContextIdentifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcRepresentationContext::setContextIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRepresentationContext::ContextType() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcRepresentationContext::setContextType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }

::Ifc4x3_rc2::IfcRepresentation::list::ptr Ifc4x3_rc2::IfcRepresentationContext::RepresentationsInContext() const { return data_->getInverse(IFC4X3_RC2_IfcRepresentation_type, 0)->as<IfcRepresentation>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcRepresentationContext::declaration() const { return *IFC4X3_RC2_IfcRepresentationContext_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRepresentationContext::Class() { return *IFC4X3_RC2_IfcRepresentationContext_type; }
Ifc4x3_rc2::IfcRepresentationContext::IfcRepresentationContext(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRepresentationContext_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRepresentationContext::IfcRepresentationContext(boost::optional< std::string > v1_ContextIdentifier, boost::optional< std::string > v2_ContextType) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPresentationLayerAssignment::list::ptr Ifc4x3_rc2::IfcRepresentationItem::LayerAssignment() const { return data_->getInverse(IFC4X3_RC2_IfcPresentationLayerAssignment_type, 2)->as<IfcPresentationLayerAssignment>(); }
::Ifc4x3_rc2::IfcStyledItem::list::ptr Ifc4x3_rc2::IfcRepresentationItem::StyledByItem() const { return data_->getInverse(IFC4X3_RC2_IfcStyledItem_type, 0)->as<IfcStyledItem>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcRepresentationItem::declaration() const { return *IFC4X3_RC2_IfcRepresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRepresentationItem::Class() { return *IFC4X3_RC2_IfcRepresentationItem_type; }
Ifc4x3_rc2::IfcRepresentationItem::IfcRepresentationItem(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRepresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRepresentationItem::IfcRepresentationItem() : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRepresentationItem_type);  }

// Function implementations for IfcRepresentationMap
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcRepresentationMap::MappingOrigin() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcRepresentationMap::setMappingOrigin(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcRepresentation* Ifc4x3_rc2::IfcRepresentationMap::MappedRepresentation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcRepresentation>(true); }
void Ifc4x3_rc2::IfcRepresentationMap::setMappedRepresentation(::Ifc4x3_rc2::IfcRepresentation* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }

::Ifc4x3_rc2::IfcShapeAspect::list::ptr Ifc4x3_rc2::IfcRepresentationMap::HasShapeAspects() const { return data_->getInverse(IFC4X3_RC2_IfcShapeAspect_type, 4)->as<IfcShapeAspect>(); }
::Ifc4x3_rc2::IfcMappedItem::list::ptr Ifc4x3_rc2::IfcRepresentationMap::MapUsage() const { return data_->getInverse(IFC4X3_RC2_IfcMappedItem_type, 0)->as<IfcMappedItem>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcRepresentationMap::declaration() const { return *IFC4X3_RC2_IfcRepresentationMap_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRepresentationMap::Class() { return *IFC4X3_RC2_IfcRepresentationMap_type; }
Ifc4x3_rc2::IfcRepresentationMap::IfcRepresentationMap(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRepresentationMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRepresentationMap::IfcRepresentationMap(::Ifc4x3_rc2::IfcAxis2Placement* v1_MappingOrigin, ::Ifc4x3_rc2::IfcRepresentation* v2_MappedRepresentation) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcResource::Identification() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResource::LongDescription() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }

::Ifc4x3_rc2::IfcRelAssignsToResource::list::ptr Ifc4x3_rc2::IfcResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToResource_type, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcResource::declaration() const { return *IFC4X3_RC2_IfcResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcResource::Class() { return *IFC4X3_RC2_IfcResource_type; }
Ifc4x3_rc2::IfcResource::IfcResource(IfcEntityInstanceData* e) : IfcObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcResource::IfcResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr Ifc4x3_rc2::IfcResourceApprovalRelationship::RelatedResourceObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcResourceObjectSelect >(); }
void Ifc4x3_rc2::IfcResourceApprovalRelationship::setRelatedResourceObjects(aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcApproval* Ifc4x3_rc2::IfcResourceApprovalRelationship::RelatingApproval() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcApproval>(true); }
void Ifc4x3_rc2::IfcResourceApprovalRelationship::setRelatingApproval(::Ifc4x3_rc2::IfcApproval* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcResourceApprovalRelationship::declaration() const { return *IFC4X3_RC2_IfcResourceApprovalRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcResourceApprovalRelationship::Class() { return *IFC4X3_RC2_IfcResourceApprovalRelationship_type; }
Ifc4x3_rc2::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcResourceApprovalRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcResourceApprovalRelationship::IfcResourceApprovalRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr v3_RelatedResourceObjects, ::Ifc4x3_rc2::IfcApproval* v4_RelatingApproval) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(2,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_RelatingApproval));data_->setArgument(3,attr);} }

// Function implementations for IfcResourceConstraintRelationship
::Ifc4x3_rc2::IfcConstraint* Ifc4x3_rc2::IfcResourceConstraintRelationship::RelatingConstraint() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcConstraint>(true); }
void Ifc4x3_rc2::IfcResourceConstraintRelationship::setRelatingConstraint(::Ifc4x3_rc2::IfcConstraint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr Ifc4x3_rc2::IfcResourceConstraintRelationship::RelatedResourceObjects() const {  aggregate_of_instance::ptr es = *data_->getArgument(3); return es->as< ::Ifc4x3_rc2::IfcResourceObjectSelect >(); }
void Ifc4x3_rc2::IfcResourceConstraintRelationship::setRelatedResourceObjects(aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcResourceConstraintRelationship::declaration() const { return *IFC4X3_RC2_IfcResourceConstraintRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcResourceConstraintRelationship::Class() { return *IFC4X3_RC2_IfcResourceConstraintRelationship_type; }
Ifc4x3_rc2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(IfcEntityInstanceData* e) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcResourceConstraintRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcResourceConstraintRelationship::IfcResourceConstraintRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description, ::Ifc4x3_rc2::IfcConstraint* v3_RelatingConstraint, aggregate_of< ::Ifc4x3_rc2::IfcResourceObjectSelect >::ptr v4_RelatedResourceObjects) : IfcResourceLevelRelationship((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(3,attr);} }

// Function implementations for IfcResourceLevelRelationship
boost::optional< std::string > Ifc4x3_rc2::IfcResourceLevelRelationship::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcResourceLevelRelationship::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceLevelRelationship::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcResourceLevelRelationship::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcResourceLevelRelationship::declaration() const { return *IFC4X3_RC2_IfcResourceLevelRelationship_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcResourceLevelRelationship::Class() { return *IFC4X3_RC2_IfcResourceLevelRelationship_type; }
Ifc4x3_rc2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcResourceLevelRelationship_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcResourceLevelRelationship::IfcResourceLevelRelationship(boost::optional< std::string > v1_Name, boost::optional< std::string > v2_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcResourceTime::ScheduleWork() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcResourceTime::setScheduleWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcResourceTime::ScheduleUsage() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcResourceTime::setScheduleUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcResourceTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcResourceTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ScheduleContour() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcResourceTime::setScheduleContour(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::LevelingDelay() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcResourceTime::setLevelingDelay(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcResourceTime::IsOverAllocated() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcResourceTime::setIsOverAllocated(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::StatusTime() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcResourceTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ActualWork() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcResourceTime::setActualWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcResourceTime::ActualUsage() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcResourceTime::setActualUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ActualStart() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } std::string v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcResourceTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::ActualFinish() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcResourceTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcResourceTime::RemainingWork() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcResourceTime::setRemainingWork(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcResourceTime::RemainingUsage() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc2::IfcResourceTime::setRemainingUsage(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcResourceTime::Completion() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } double v = *data_->getArgument(17); return v; }
void Ifc4x3_rc2::IfcResourceTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcResourceTime::declaration() const { return *IFC4X3_RC2_IfcResourceTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcResourceTime::Class() { return *IFC4X3_RC2_IfcResourceTime_type; }
Ifc4x3_rc2::IfcResourceTime::IfcResourceTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcResourceTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcResourceTime::IfcResourceTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::IfcAxis1Placement* Ifc4x3_rc2::IfcRevolvedAreaSolid::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAxis1Placement>(true); }
void Ifc4x3_rc2::IfcRevolvedAreaSolid::setAxis(::Ifc4x3_rc2::IfcAxis1Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcRevolvedAreaSolid::Angle() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcRevolvedAreaSolid::setAngle(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRevolvedAreaSolid::declaration() const { return *IFC4X3_RC2_IfcRevolvedAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRevolvedAreaSolid::Class() { return *IFC4X3_RC2_IfcRevolvedAreaSolid_type; }
Ifc4x3_rc2::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(IfcEntityInstanceData* e) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRevolvedAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRevolvedAreaSolid::IfcRevolvedAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcAxis1Placement* v3_Axis, double v4_Angle) : IfcSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProfileDef* Ifc4x3_rc2::IfcRevolvedAreaSolidTapered::EndSweptArea() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcRevolvedAreaSolidTapered::setEndSweptArea(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRevolvedAreaSolidTapered::declaration() const { return *IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRevolvedAreaSolidTapered::Class() { return *IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type; }
Ifc4x3_rc2::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(IfcEntityInstanceData* e) : IfcRevolvedAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRevolvedAreaSolidTapered_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRevolvedAreaSolidTapered::IfcRevolvedAreaSolidTapered(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcAxis1Placement* v3_Axis, double v4_Angle, ::Ifc4x3_rc2::IfcProfileDef* v5_EndSweptArea) : IfcRevolvedAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRightCircularCone::Height() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcRightCircularCone::setHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcRightCircularCone::BottomRadius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcRightCircularCone::setBottomRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRightCircularCone::declaration() const { return *IFC4X3_RC2_IfcRightCircularCone_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRightCircularCone::Class() { return *IFC4X3_RC2_IfcRightCircularCone_type; }
Ifc4x3_rc2::IfcRightCircularCone::IfcRightCircularCone(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRightCircularCone_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRightCircularCone::IfcRightCircularCone(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_BottomRadius) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRightCircularCylinder::Height() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcRightCircularCylinder::setHeight(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcRightCircularCylinder::Radius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcRightCircularCylinder::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRightCircularCylinder::declaration() const { return *IFC4X3_RC2_IfcRightCircularCylinder_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRightCircularCylinder::Class() { return *IFC4X3_RC2_IfcRightCircularCylinder_type; }
Ifc4x3_rc2::IfcRightCircularCylinder::IfcRightCircularCylinder(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRightCircularCylinder_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRightCircularCylinder::IfcRightCircularCylinder(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_Height, double v3_Radius) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRoad::declaration() const { return *IFC4X3_RC2_IfcRoad_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRoad::Class() { return *IFC4X3_RC2_IfcRoad_type; }
Ifc4x3_rc2::IfcRoad::IfcRoad(IfcEntityInstanceData* e) : IfcFacility((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRoad_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRoad::IfcRoad(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcFacility((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRoofTypeEnum::Value > Ifc4x3_rc2::IfcRoof::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcRoofTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcRoof::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcRoofTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcRoofTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRoof::declaration() const { return *IFC4X3_RC2_IfcRoof_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRoof::Class() { return *IFC4X3_RC2_IfcRoof_type; }
Ifc4x3_rc2::IfcRoof::IfcRoof(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRoof_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRoof::IfcRoof(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcRoofTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRoofTypeEnum::Value Ifc4x3_rc2::IfcRoofType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcRoofTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcRoofType::setPredefinedType(::Ifc4x3_rc2::IfcRoofTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcRoofTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRoofType::declaration() const { return *IFC4X3_RC2_IfcRoofType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRoofType::Class() { return *IFC4X3_RC2_IfcRoofType_type; }
Ifc4x3_rc2::IfcRoofType::IfcRoofType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRoofType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRoofType::IfcRoofType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcRoofTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRoofTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcRoot
std::string Ifc4x3_rc2::IfcRoot::GlobalId() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcRoot::setGlobalId(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcOwnerHistory* Ifc4x3_rc2::IfcRoot::OwnerHistory() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcOwnerHistory>(true); }
void Ifc4x3_rc2::IfcRoot::setOwnerHistory(::Ifc4x3_rc2::IfcOwnerHistory* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRoot::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcRoot::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcRoot::Description() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcRoot::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRoot::declaration() const { return *IFC4X3_RC2_IfcRoot_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRoot::Class() { return *IFC4X3_RC2_IfcRoot_type; }
Ifc4x3_rc2::IfcRoot::IfcRoot(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRoot_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRoot::IfcRoot(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRoundedRectangleProfileDef::RoundingRadius() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcRoundedRectangleProfileDef::setRoundingRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcRoundedRectangleProfileDef::declaration() const { return *IFC4X3_RC2_IfcRoundedRectangleProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcRoundedRectangleProfileDef::Class() { return *IFC4X3_RC2_IfcRoundedRectangleProfileDef_type; }
Ifc4x3_rc2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(IfcEntityInstanceData* e) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcRoundedRectangleProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcRoundedRectangleProfileDef::IfcRoundedRectangleProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position, double v4_XDim, double v5_YDim, double v6_RoundingRadius) : IfcRectangleProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcRoundedRectangleProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcSIPrefix::Value > Ifc4x3_rc2::IfcSIUnit::Prefix() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSIPrefix::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcSIUnit::setPrefix(boost::optional< ::Ifc4x3_rc2::IfcSIPrefix::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSIPrefix::ToString(*v)));}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcSIUnitName::Value Ifc4x3_rc2::IfcSIUnit::Name() const {  return ::Ifc4x3_rc2::IfcSIUnitName::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc2::IfcSIUnit::setName(::Ifc4x3_rc2::IfcSIUnitName::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSIUnitName::ToString(v)));data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSIUnit::declaration() const { return *IFC4X3_RC2_IfcSIUnit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSIUnit::Class() { return *IFC4X3_RC2_IfcSIUnit_type; }
Ifc4x3_rc2::IfcSIUnit::IfcSIUnit(IfcEntityInstanceData* e) : IfcNamedUnit((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSIUnit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSIUnit::IfcSIUnit(::Ifc4x3_rc2::IfcUnitEnum::Value v2_UnitType, boost::optional< ::Ifc4x3_rc2::IfcSIPrefix::Value > v3_Prefix, ::Ifc4x3_rc2::IfcSIUnitName::Value v4_Name) : IfcNamedUnit((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcSIUnitName::ToString(v4_Name))));data_->setArgument(3,attr);} }

// Function implementations for IfcSanitaryTerminal
boost::optional< ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value > Ifc4x3_rc2::IfcSanitaryTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSanitaryTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSanitaryTerminal::declaration() const { return *IFC4X3_RC2_IfcSanitaryTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSanitaryTerminal::Class() { return *IFC4X3_RC2_IfcSanitaryTerminal_type; }
Ifc4x3_rc2::IfcSanitaryTerminal::IfcSanitaryTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSanitaryTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSanitaryTerminal::IfcSanitaryTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSanitaryTerminalTypeEnum::Value Ifc4x3_rc2::IfcSanitaryTerminalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSanitaryTerminalType::setPredefinedType(::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSanitaryTerminalType::declaration() const { return *IFC4X3_RC2_IfcSanitaryTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSanitaryTerminalType::Class() { return *IFC4X3_RC2_IfcSanitaryTerminalType_type; }
Ifc4x3_rc2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSanitaryTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSanitaryTerminalType::IfcSanitaryTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSanitaryTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSanitaryTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSchedulingTime
boost::optional< std::string > Ifc4x3_rc2::IfcSchedulingTime::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcSchedulingTime::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > Ifc4x3_rc2::IfcSchedulingTime::DataOrigin() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcDataOriginEnum::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc2::IfcSchedulingTime::setDataOrigin(boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcDataOriginEnum::ToString(*v)));}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSchedulingTime::UserDefinedDataOrigin() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcSchedulingTime::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSchedulingTime::declaration() const { return *IFC4X3_RC2_IfcSchedulingTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSchedulingTime::Class() { return *IFC4X3_RC2_IfcSchedulingTime_type; }
Ifc4x3_rc2::IfcSchedulingTime::IfcSchedulingTime(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSchedulingTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSchedulingTime::IfcSchedulingTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSeamCurve::declaration() const { return *IFC4X3_RC2_IfcSeamCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSeamCurve::Class() { return *IFC4X3_RC2_IfcSeamCurve_type; }
Ifc4x3_rc2::IfcSeamCurve::IfcSeamCurve(IfcEntityInstanceData* e) : IfcSurfaceCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSeamCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSeamCurve::IfcSeamCurve(::Ifc4x3_rc2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_rc2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcSurfaceCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation))));data_->setArgument(2,attr);} }

// Function implementations for IfcSectionProperties
::Ifc4x3_rc2::IfcSectionTypeEnum::Value Ifc4x3_rc2::IfcSectionProperties::SectionType() const {  return ::Ifc4x3_rc2::IfcSectionTypeEnum::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcSectionProperties::setSectionType(::Ifc4x3_rc2::IfcSectionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSectionTypeEnum::ToString(v)));data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcProfileDef* Ifc4x3_rc2::IfcSectionProperties::StartProfile() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcSectionProperties::setStartProfile(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcProfileDef* Ifc4x3_rc2::IfcSectionProperties::EndProfile() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcSectionProperties::setEndProfile(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSectionProperties::declaration() const { return *IFC4X3_RC2_IfcSectionProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSectionProperties::Class() { return *IFC4X3_RC2_IfcSectionProperties_type; }
Ifc4x3_rc2::IfcSectionProperties::IfcSectionProperties(IfcEntityInstanceData* e) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSectionProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSectionProperties::IfcSectionProperties(::Ifc4x3_rc2::IfcSectionTypeEnum::Value v1_SectionType, ::Ifc4x3_rc2::IfcProfileDef* v2_StartProfile, ::Ifc4x3_rc2::IfcProfileDef* v3_EndProfile) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSectionProperties_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_SectionType,::Ifc4x3_rc2::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_rc2::IfcSectionReinforcementProperties::LongitudinalStartPosition() const {  double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcSectionReinforcementProperties::setLongitudinalStartPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcSectionReinforcementProperties::LongitudinalEndPosition() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSectionReinforcementProperties::setLongitudinalEndPosition(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSectionReinforcementProperties::TransversePosition() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcSectionReinforcementProperties::setTransversePosition(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::Value Ifc4x3_rc2::IfcSectionReinforcementProperties::ReinforcementRole() const {  return ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc2::IfcSectionReinforcementProperties::setReinforcementRole(::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::ToString(v)));data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcSectionProperties* Ifc4x3_rc2::IfcSectionReinforcementProperties::SectionDefinition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSectionProperties>(true); }
void Ifc4x3_rc2::IfcSectionReinforcementProperties::setSectionDefinition(::Ifc4x3_rc2::IfcSectionProperties* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcReinforcementBarProperties >::ptr Ifc4x3_rc2::IfcSectionReinforcementProperties::CrossSectionReinforcementDefinitions() const {  aggregate_of_instance::ptr es = *data_->getArgument(5); return es->as< ::Ifc4x3_rc2::IfcReinforcementBarProperties >(); }
void Ifc4x3_rc2::IfcSectionReinforcementProperties::setCrossSectionReinforcementDefinitions(aggregate_of< ::Ifc4x3_rc2::IfcReinforcementBarProperties >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSectionReinforcementProperties::declaration() const { return *IFC4X3_RC2_IfcSectionReinforcementProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSectionReinforcementProperties::Class() { return *IFC4X3_RC2_IfcSectionReinforcementProperties_type; }
Ifc4x3_rc2::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(IfcEntityInstanceData* e) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSectionReinforcementProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSectionReinforcementProperties::IfcSectionReinforcementProperties(double v1_LongitudinalStartPosition, double v2_LongitudinalEndPosition, boost::optional< double > v3_TransversePosition, ::Ifc4x3_rc2::IfcReinforcingBarRoleEnum::Value v4_ReinforcementRole, ::Ifc4x3_rc2::IfcSectionProperties* v5_SectionDefinition, aggregate_of< ::Ifc4x3_rc2::IfcReinforcementBarProperties >::ptr v6_CrossSectionReinforcementDefinitions) : IfcPreDefinedProperties((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcCurve* Ifc4x3_rc2::IfcSectionedSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcSectionedSolid::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr Ifc4x3_rc2::IfcSectionedSolid::CrossSections() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcProfileDef >(); }
void Ifc4x3_rc2::IfcSectionedSolid::setCrossSections(aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSolid::declaration() const { return *IFC4X3_RC2_IfcSectionedSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSolid::Class() { return *IFC4X3_RC2_IfcSectionedSolid_type; }
Ifc4x3_rc2::IfcSectionedSolid::IfcSectionedSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSectionedSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSectionedSolid::IfcSectionedSolid(::Ifc4x3_rc2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v2_CrossSections) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPointByDistanceExpression >::ptr Ifc4x3_rc2::IfcSectionedSolidHorizontal::CrossSectionPositions() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcPointByDistanceExpression >(); }
void Ifc4x3_rc2::IfcSectionedSolidHorizontal::setCrossSectionPositions(aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
bool Ifc4x3_rc2::IfcSectionedSolidHorizontal::FixedAxisVertical() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcSectionedSolidHorizontal::setFixedAxisVertical(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSolidHorizontal::declaration() const { return *IFC4X3_RC2_IfcSectionedSolidHorizontal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSolidHorizontal::Class() { return *IFC4X3_RC2_IfcSectionedSolidHorizontal_type; }
Ifc4x3_rc2::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(IfcEntityInstanceData* e) : IfcSectionedSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSectionedSolidHorizontal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSectionedSolidHorizontal::IfcSectionedSolidHorizontal(::Ifc4x3_rc2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v3_CrossSectionPositions, bool v4_FixedAxisVertical) : IfcSectionedSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCompositeCurve* Ifc4x3_rc2::IfcSectionedSpine::SpineCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCompositeCurve>(true); }
void Ifc4x3_rc2::IfcSectionedSpine::setSpineCurve(::Ifc4x3_rc2::IfcCompositeCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr Ifc4x3_rc2::IfcSectionedSpine::CrossSections() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcProfileDef >(); }
void Ifc4x3_rc2::IfcSectionedSpine::setCrossSections(aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcAxis2Placement3D >::ptr Ifc4x3_rc2::IfcSectionedSpine::CrossSectionPositions() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcAxis2Placement3D >(); }
void Ifc4x3_rc2::IfcSectionedSpine::setCrossSectionPositions(aggregate_of< ::Ifc4x3_rc2::IfcAxis2Placement3D >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSpine::declaration() const { return *IFC4X3_RC2_IfcSectionedSpine_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSpine::Class() { return *IFC4X3_RC2_IfcSectionedSpine_type; }
Ifc4x3_rc2::IfcSectionedSpine::IfcSectionedSpine(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSectionedSpine_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSectionedSpine::IfcSectionedSpine(::Ifc4x3_rc2::IfcCompositeCurve* v1_SpineCurve, aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v2_CrossSections, aggregate_of< ::Ifc4x3_rc2::IfcAxis2Placement3D >::ptr v3_CrossSectionPositions) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurve* Ifc4x3_rc2::IfcSectionedSurface::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcSectionedSurface::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr Ifc4x3_rc2::IfcSectionedSurface::CrossSectionPositions() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcPointByDistanceExpression >(); }
void Ifc4x3_rc2::IfcSectionedSurface::setCrossSectionPositions(aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr Ifc4x3_rc2::IfcSectionedSurface::CrossSections() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcProfileDef >(); }
void Ifc4x3_rc2::IfcSectionedSurface::setCrossSections(aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
bool Ifc4x3_rc2::IfcSectionedSurface::FixedAxisVertical() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcSectionedSurface::setFixedAxisVertical(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSurface::declaration() const { return *IFC4X3_RC2_IfcSectionedSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSectionedSurface::Class() { return *IFC4X3_RC2_IfcSectionedSurface_type; }
Ifc4x3_rc2::IfcSectionedSurface::IfcSectionedSurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSectionedSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSectionedSurface::IfcSectionedSurface(::Ifc4x3_rc2::IfcCurve* v1_Directrix, aggregate_of< ::Ifc4x3_rc2::IfcPointByDistanceExpression >::ptr v2_CrossSectionPositions, aggregate_of< ::Ifc4x3_rc2::IfcProfileDef >::ptr v3_CrossSections, bool v4_FixedAxisVertical) : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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 IfcSegment
::Ifc4x3_rc2::IfcTransitionCode::Value Ifc4x3_rc2::IfcSegment::Transition() const {  return ::Ifc4x3_rc2::IfcTransitionCode::FromString(*data_->getArgument(0)); }
void Ifc4x3_rc2::IfcSegment::setTransition(::Ifc4x3_rc2::IfcTransitionCode::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTransitionCode::ToString(v)));data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSegment::declaration() const { return *IFC4X3_RC2_IfcSegment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSegment::Class() { return *IFC4X3_RC2_IfcSegment_type; }
Ifc4x3_rc2::IfcSegment::IfcSegment(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSegment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSegment::IfcSegment(::Ifc4x3_rc2::IfcTransitionCode::Value v1_Transition) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSegment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_Transition,::Ifc4x3_rc2::IfcTransitionCode::ToString(v1_Transition))));data_->setArgument(0,attr);} }

// Function implementations for IfcSegmentedReferenceCurve
::Ifc4x3_rc2::IfcBoundedCurve* Ifc4x3_rc2::IfcSegmentedReferenceCurve::BaseCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcBoundedCurve>(true); }
void Ifc4x3_rc2::IfcSegmentedReferenceCurve::setBaseCurve(::Ifc4x3_rc2::IfcBoundedCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcCurveSegment >::ptr Ifc4x3_rc2::IfcSegmentedReferenceCurve::Segments() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcCurveSegment >(); }
void Ifc4x3_rc2::IfcSegmentedReferenceCurve::setSegments(aggregate_of< ::Ifc4x3_rc2::IfcCurveSegment >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcPlacement* Ifc4x3_rc2::IfcSegmentedReferenceCurve::EndPoint() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcPlacement>(true); }
void Ifc4x3_rc2::IfcSegmentedReferenceCurve::setEndPoint(::Ifc4x3_rc2::IfcPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSegmentedReferenceCurve::declaration() const { return *IFC4X3_RC2_IfcSegmentedReferenceCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSegmentedReferenceCurve::Class() { return *IFC4X3_RC2_IfcSegmentedReferenceCurve_type; }
Ifc4x3_rc2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSegmentedReferenceCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSegmentedReferenceCurve::IfcSegmentedReferenceCurve(::Ifc4x3_rc2::IfcBoundedCurve* v1_BaseCurve, aggregate_of< ::Ifc4x3_rc2::IfcCurveSegment >::ptr v2_Segments, ::Ifc4x3_rc2::IfcPlacement* v3_EndPoint) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSegmentedReferenceCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_BaseCurve));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_Segments)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_EndPoint));data_->setArgument(2,attr);} }

// Function implementations for IfcSensor
boost::optional< ::Ifc4x3_rc2::IfcSensorTypeEnum::Value > Ifc4x3_rc2::IfcSensor::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSensorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSensor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSensorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSensorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSensor::declaration() const { return *IFC4X3_RC2_IfcSensor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSensor::Class() { return *IFC4X3_RC2_IfcSensor_type; }
Ifc4x3_rc2::IfcSensor::IfcSensor(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSensor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSensor::IfcSensor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSensorTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSensorTypeEnum::Value Ifc4x3_rc2::IfcSensorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSensorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSensorType::setPredefinedType(::Ifc4x3_rc2::IfcSensorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSensorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSensorType::declaration() const { return *IFC4X3_RC2_IfcSensorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSensorType::Class() { return *IFC4X3_RC2_IfcSensorType_type; }
Ifc4x3_rc2::IfcSensorType::IfcSensorType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSensorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSensorType::IfcSensorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSensorTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSensorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSeriesParameterCurve
::Ifc4x3_rc2::IfcPlacement* Ifc4x3_rc2::IfcSeriesParameterCurve::Position() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPlacement>(true); }
void Ifc4x3_rc2::IfcSeriesParameterCurve::setPosition(::Ifc4x3_rc2::IfcPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::vector< double > /*[2:?]*/ Ifc4x3_rc2::IfcSeriesParameterCurve::CoefficientsX() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSeriesParameterCurve::setCoefficientsX(std::vector< double > /*[2:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
std::vector< double > /*[2:?]*/ Ifc4x3_rc2::IfcSeriesParameterCurve::CoefficientsY() const {  std::vector< double > /*[2:?]*/ v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcSeriesParameterCurve::setCoefficientsY(std::vector< double > /*[2:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSeriesParameterCurve::declaration() const { return *IFC4X3_RC2_IfcSeriesParameterCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSeriesParameterCurve::Class() { return *IFC4X3_RC2_IfcSeriesParameterCurve_type; }
Ifc4x3_rc2::IfcSeriesParameterCurve::IfcSeriesParameterCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSeriesParameterCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSeriesParameterCurve::IfcSeriesParameterCurve(::Ifc4x3_rc2::IfcPlacement* v1_Position, std::vector< double > /*[2:?]*/ v2_CoefficientsX, std::vector< double > /*[2:?]*/ v3_CoefficientsY) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSeriesParameterCurve_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Position));data_->setArgument(0,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v2_CoefficientsX));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_CoefficientsY));data_->setArgument(2,attr);} }

// Function implementations for IfcShadingDevice
boost::optional< ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value > Ifc4x3_rc2::IfcShadingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcShadingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcShadingDevice::declaration() const { return *IFC4X3_RC2_IfcShadingDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcShadingDevice::Class() { return *IFC4X3_RC2_IfcShadingDevice_type; }
Ifc4x3_rc2::IfcShadingDevice::IfcShadingDevice(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcShadingDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcShadingDevice::IfcShadingDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcShadingDeviceTypeEnum::Value Ifc4x3_rc2::IfcShadingDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcShadingDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcShadingDeviceType::declaration() const { return *IFC4X3_RC2_IfcShadingDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcShadingDeviceType::Class() { return *IFC4X3_RC2_IfcShadingDeviceType_type; }
Ifc4x3_rc2::IfcShadingDeviceType::IfcShadingDeviceType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcShadingDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcShadingDeviceType::IfcShadingDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcShadingDeviceTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcShadingDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcShapeAspect
aggregate_of< ::Ifc4x3_rc2::IfcShapeModel >::ptr Ifc4x3_rc2::IfcShapeAspect::ShapeRepresentations() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcShapeModel >(); }
void Ifc4x3_rc2::IfcShapeAspect::setShapeRepresentations(aggregate_of< ::Ifc4x3_rc2::IfcShapeModel >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcShapeAspect::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcShapeAspect::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcShapeAspect::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcShapeAspect::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::logic::tribool Ifc4x3_rc2::IfcShapeAspect::ProductDefinitional() const {  boost::logic::tribool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcShapeAspect::setProductDefinitional(boost::logic::tribool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcProductRepresentationSelect* Ifc4x3_rc2::IfcShapeAspect::PartOfProductDefinitionShape() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcProductRepresentationSelect>(true); }
void Ifc4x3_rc2::IfcShapeAspect::setPartOfProductDefinitionShape(::Ifc4x3_rc2::IfcProductRepresentationSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }

::Ifc4x3_rc2::IfcExternalReferenceRelationship::list::ptr Ifc4x3_rc2::IfcShapeAspect::HasExternalReferences() const { return data_->getInverse(IFC4X3_RC2_IfcExternalReferenceRelationship_type, 3)->as<IfcExternalReferenceRelationship>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcShapeAspect::declaration() const { return *IFC4X3_RC2_IfcShapeAspect_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcShapeAspect::Class() { return *IFC4X3_RC2_IfcShapeAspect_type; }
Ifc4x3_rc2::IfcShapeAspect::IfcShapeAspect(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcShapeAspect_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcShapeAspect::IfcShapeAspect(aggregate_of< ::Ifc4x3_rc2::IfcShapeModel >::ptr v1_ShapeRepresentations, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, boost::logic::tribool v4_ProductDefinitional, ::Ifc4x3_rc2::IfcProductRepresentationSelect* v5_PartOfProductDefinitionShape) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcShapeAspect::list::ptr Ifc4x3_rc2::IfcShapeModel::OfShapeAspect() const { return data_->getInverse(IFC4X3_RC2_IfcShapeAspect_type, 0)->as<IfcShapeAspect>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcShapeModel::declaration() const { return *IFC4X3_RC2_IfcShapeModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcShapeModel::Class() { return *IFC4X3_RC2_IfcShapeModel_type; }
Ifc4x3_rc2::IfcShapeModel::IfcShapeModel(IfcEntityInstanceData* e) : IfcRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcShapeModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcShapeModel::IfcShapeModel(::Ifc4x3_rc2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcShapeRepresentation::declaration() const { return *IFC4X3_RC2_IfcShapeRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcShapeRepresentation::Class() { return *IFC4X3_RC2_IfcShapeRepresentation_type; }
Ifc4x3_rc2::IfcShapeRepresentation::IfcShapeRepresentation(IfcEntityInstanceData* e) : IfcShapeModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcShapeRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcShapeRepresentation::IfcShapeRepresentation(::Ifc4x3_rc2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcShell >::ptr Ifc4x3_rc2::IfcShellBasedSurfaceModel::SbsmBoundary() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcShell >(); }
void Ifc4x3_rc2::IfcShellBasedSurfaceModel::setSbsmBoundary(aggregate_of< ::Ifc4x3_rc2::IfcShell >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcShellBasedSurfaceModel::declaration() const { return *IFC4X3_RC2_IfcShellBasedSurfaceModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcShellBasedSurfaceModel::Class() { return *IFC4X3_RC2_IfcShellBasedSurfaceModel_type; }
Ifc4x3_rc2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcShellBasedSurfaceModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcShellBasedSurfaceModel::IfcShellBasedSurfaceModel(aggregate_of< ::Ifc4x3_rc2::IfcShell >::ptr v1_SbsmBoundary) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcShellBasedSurfaceModel_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_SbsmBoundary)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcSign
boost::optional< ::Ifc4x3_rc2::IfcSignTypeEnum::Value > Ifc4x3_rc2::IfcSign::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSignTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSign::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSignTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSignTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSign::declaration() const { return *IFC4X3_RC2_IfcSign_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSign::Class() { return *IFC4X3_RC2_IfcSign_type; }
Ifc4x3_rc2::IfcSign::IfcSign(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSign_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSign::IfcSign(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSignTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSignTypeEnum::Value Ifc4x3_rc2::IfcSignType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSignTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSignType::setPredefinedType(::Ifc4x3_rc2::IfcSignTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSignTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSignType::declaration() const { return *IFC4X3_RC2_IfcSignType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSignType::Class() { return *IFC4X3_RC2_IfcSignType_type; }
Ifc4x3_rc2::IfcSignType::IfcSignType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSignType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSignType::IfcSignType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSignTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSignTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSignal
boost::optional< ::Ifc4x3_rc2::IfcSignalTypeEnum::Value > Ifc4x3_rc2::IfcSignal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSignalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSignal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSignalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSignalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSignal::declaration() const { return *IFC4X3_RC2_IfcSignal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSignal::Class() { return *IFC4X3_RC2_IfcSignal_type; }
Ifc4x3_rc2::IfcSignal::IfcSignal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSignal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSignal::IfcSignal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSignalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSignalTypeEnum::Value Ifc4x3_rc2::IfcSignalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSignalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSignalType::setPredefinedType(::Ifc4x3_rc2::IfcSignalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSignalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSignalType::declaration() const { return *IFC4X3_RC2_IfcSignalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSignalType::Class() { return *IFC4X3_RC2_IfcSignalType_type; }
Ifc4x3_rc2::IfcSignalType::IfcSignalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSignalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSignalType::IfcSignalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSignalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSignalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSimpleProperty


const IfcParse::entity& Ifc4x3_rc2::IfcSimpleProperty::declaration() const { return *IFC4X3_RC2_IfcSimpleProperty_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSimpleProperty::Class() { return *IFC4X3_RC2_IfcSimpleProperty_type; }
Ifc4x3_rc2::IfcSimpleProperty::IfcSimpleProperty(IfcEntityInstanceData* e) : IfcProperty((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSimpleProperty_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSimpleProperty::IfcSimpleProperty(std::string v1_Name, boost::optional< std::string > v2_Description) : IfcProperty((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSimplePropertyTemplateTypeEnum::Value > Ifc4x3_rc2::IfcSimplePropertyTemplate::TemplateType() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setTemplateType(boost::optional< ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::ToString(*v)));}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSimplePropertyTemplate::PrimaryMeasureType() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setPrimaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSimplePropertyTemplate::SecondaryMeasureType() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setSecondaryMeasureType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcPropertyEnumeration* Ifc4x3_rc2::IfcSimplePropertyTemplate::Enumerators() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcPropertyEnumeration>(true); }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setEnumerators(::Ifc4x3_rc2::IfcPropertyEnumeration* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcSimplePropertyTemplate::PrimaryUnit() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setPrimaryUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcSimplePropertyTemplate::SecondaryUnit() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setSecondaryUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSimplePropertyTemplate::Expression() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setExpression(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > Ifc4x3_rc2::IfcSimplePropertyTemplate::AccessState() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStateEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcSimplePropertyTemplate::setAccessState(boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStateEnum::ToString(*v)));}data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSimplePropertyTemplate::declaration() const { return *IFC4X3_RC2_IfcSimplePropertyTemplate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSimplePropertyTemplate::Class() { return *IFC4X3_RC2_IfcSimplePropertyTemplate_type; }
Ifc4x3_rc2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(IfcEntityInstanceData* e) : IfcPropertyTemplate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSimplePropertyTemplate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSimplePropertyTemplate::IfcSimplePropertyTemplate(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< ::Ifc4x3_rc2::IfcSimplePropertyTemplateTypeEnum::Value > v5_TemplateType, boost::optional< std::string > v6_PrimaryMeasureType, boost::optional< std::string > v7_SecondaryMeasureType, ::Ifc4x3_rc2::IfcPropertyEnumeration* v8_Enumerators, ::Ifc4x3_rc2::IfcUnit* v9_PrimaryUnit, ::Ifc4x3_rc2::IfcUnit* v10_SecondaryUnit, boost::optional< std::string > v11_Expression, boost::optional< ::Ifc4x3_rc2::IfcStateEnum::Value > v12_AccessState) : IfcPropertyTemplate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::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_rc2::IfcSite::setRefLatitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< std::vector< int > /*[3:4]*/ > Ifc4x3_rc2::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_rc2::IfcSite::setRefLongitude(boost::optional< std::vector< int > /*[3:4]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSite::RefElevation() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcSite::setRefElevation(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSite::LandTitleNumber() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcSite::setLandTitleNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
::Ifc4x3_rc2::IfcPostalAddress* Ifc4x3_rc2::IfcSite::SiteAddress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(13)))->as<::Ifc4x3_rc2::IfcPostalAddress>(true); }
void Ifc4x3_rc2::IfcSite::setSiteAddress(::Ifc4x3_rc2::IfcPostalAddress* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSite::declaration() const { return *IFC4X3_RC2_IfcSite_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSite::Class() { return *IFC4X3_RC2_IfcSite_type; }
Ifc4x3_rc2::IfcSite::IfcSite(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSite_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSite::IfcSite(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::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_rc2::IfcPostalAddress* v14_SiteAddress) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSlabTypeEnum::Value > Ifc4x3_rc2::IfcSlab::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSlabTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSlab::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSlabTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSlab::declaration() const { return *IFC4X3_RC2_IfcSlab_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSlab::Class() { return *IFC4X3_RC2_IfcSlab_type; }
Ifc4x3_rc2::IfcSlab::IfcSlab(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSlab_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSlab::IfcSlab(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSlabElementedCase::declaration() const { return *IFC4X3_RC2_IfcSlabElementedCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSlabElementedCase::Class() { return *IFC4X3_RC2_IfcSlabElementedCase_type; }
Ifc4x3_rc2::IfcSlabElementedCase::IfcSlabElementedCase(IfcEntityInstanceData* e) : IfcSlab((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSlabElementedCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSlabElementedCase::IfcSlabElementedCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcSlab((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSlabStandardCase::declaration() const { return *IFC4X3_RC2_IfcSlabStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSlabStandardCase::Class() { return *IFC4X3_RC2_IfcSlabStandardCase_type; }
Ifc4x3_rc2::IfcSlabStandardCase::IfcSlabStandardCase(IfcEntityInstanceData* e) : IfcSlab((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSlabStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSlabStandardCase::IfcSlabStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSlabTypeEnum::Value > v9_PredefinedType) : IfcSlab((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSlabTypeEnum::Value Ifc4x3_rc2::IfcSlabType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSlabTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSlabType::setPredefinedType(::Ifc4x3_rc2::IfcSlabTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSlabTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSlabType::declaration() const { return *IFC4X3_RC2_IfcSlabType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSlabType::Class() { return *IFC4X3_RC2_IfcSlabType_type; }
Ifc4x3_rc2::IfcSlabType::IfcSlabType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSlabType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSlabType::IfcSlabType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSlabTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSlabTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSlippageConnectionCondition
boost::optional< double > Ifc4x3_rc2::IfcSlippageConnectionCondition::SlippageX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSlippageConnectionCondition::SlippageY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSlippageConnectionCondition::SlippageZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcSlippageConnectionCondition::setSlippageZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSlippageConnectionCondition::declaration() const { return *IFC4X3_RC2_IfcSlippageConnectionCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSlippageConnectionCondition::Class() { return *IFC4X3_RC2_IfcSlippageConnectionCondition_type; }
Ifc4x3_rc2::IfcSlippageConnectionCondition::IfcSlippageConnectionCondition(IfcEntityInstanceData* e) : IfcStructuralConnectionCondition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSlippageConnectionCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcSolarDeviceTypeEnum::Value > Ifc4x3_rc2::IfcSolarDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSolarDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSolarDevice::declaration() const { return *IFC4X3_RC2_IfcSolarDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSolarDevice::Class() { return *IFC4X3_RC2_IfcSolarDevice_type; }
Ifc4x3_rc2::IfcSolarDevice::IfcSolarDevice(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSolarDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSolarDevice::IfcSolarDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSolarDeviceTypeEnum::Value Ifc4x3_rc2::IfcSolarDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSolarDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSolarDeviceType::declaration() const { return *IFC4X3_RC2_IfcSolarDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSolarDeviceType::Class() { return *IFC4X3_RC2_IfcSolarDeviceType_type; }
Ifc4x3_rc2::IfcSolarDeviceType::IfcSolarDeviceType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSolarDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSolarDeviceType::IfcSolarDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSolarDeviceTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSolarDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSolidModel


const IfcParse::entity& Ifc4x3_rc2::IfcSolidModel::declaration() const { return *IFC4X3_RC2_IfcSolidModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSolidModel::Class() { return *IFC4X3_RC2_IfcSolidModel_type; }
Ifc4x3_rc2::IfcSolidModel::IfcSolidModel(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSolidModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSolidModel::IfcSolidModel() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSolidModel_type);  }

// Function implementations for IfcSolidStratum


const IfcParse::entity& Ifc4x3_rc2::IfcSolidStratum::declaration() const { return *IFC4X3_RC2_IfcSolidStratum_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSolidStratum::Class() { return *IFC4X3_RC2_IfcSolidStratum_type; }
Ifc4x3_rc2::IfcSolidStratum::IfcSolidStratum(IfcEntityInstanceData* e) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSolidStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSolidStratum::IfcSolidStratum(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSpaceTypeEnum::Value > Ifc4x3_rc2::IfcSpace::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSpace::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpaceTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSpace::ElevationWithFlooring() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcSpace::setElevationWithFlooring(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }

::Ifc4x3_rc2::IfcRelCoversSpaces::list::ptr Ifc4x3_rc2::IfcSpace::HasCoverings() const { return data_->getInverse(IFC4X3_RC2_IfcRelCoversSpaces_type, 4)->as<IfcRelCoversSpaces>(); }
::Ifc4x3_rc2::IfcRelSpaceBoundary::list::ptr Ifc4x3_rc2::IfcSpace::BoundedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelSpaceBoundary_type, 4)->as<IfcRelSpaceBoundary>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcSpace::declaration() const { return *IFC4X3_RC2_IfcSpace_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpace::Class() { return *IFC4X3_RC2_IfcSpace_type; }
Ifc4x3_rc2::IfcSpace::IfcSpace(IfcEntityInstanceData* e) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpace_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpace::IfcSpace(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType, boost::optional< ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value > v10_PredefinedType, boost::optional< double > v11_ElevationWithFlooring) : IfcSpatialStructureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcSpaceHeaterTypeEnum::Value > Ifc4x3_rc2::IfcSpaceHeater::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSpaceHeater::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpaceHeater::declaration() const { return *IFC4X3_RC2_IfcSpaceHeater_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpaceHeater::Class() { return *IFC4X3_RC2_IfcSpaceHeater_type; }
Ifc4x3_rc2::IfcSpaceHeater::IfcSpaceHeater(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpaceHeater_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpaceHeater::IfcSpaceHeater(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpaceHeaterTypeEnum::Value Ifc4x3_rc2::IfcSpaceHeaterType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSpaceHeaterType::setPredefinedType(::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpaceHeaterType::declaration() const { return *IFC4X3_RC2_IfcSpaceHeaterType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpaceHeaterType::Class() { return *IFC4X3_RC2_IfcSpaceHeaterType_type; }
Ifc4x3_rc2::IfcSpaceHeaterType::IfcSpaceHeaterType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpaceHeaterType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpaceHeaterType::IfcSpaceHeaterType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSpaceHeaterTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSpaceHeaterTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSpaceType
::Ifc4x3_rc2::IfcSpaceTypeEnum::Value Ifc4x3_rc2::IfcSpaceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSpaceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSpaceType::setPredefinedType(::Ifc4x3_rc2::IfcSpaceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSpaceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSpaceType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcSpaceType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpaceType::declaration() const { return *IFC4X3_RC2_IfcSpaceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpaceType::Class() { return *IFC4X3_RC2_IfcSpaceType_type; }
Ifc4x3_rc2::IfcSpaceType::IfcSpaceType(IfcEntityInstanceData* e) : IfcSpatialStructureElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpaceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpaceType::IfcSpaceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSpaceTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialStructureElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpatialElement::LongName() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcSpatialElement::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }

::Ifc4x3_rc2::IfcRelContainedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcSpatialElement::ContainsElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelContainedInSpatialStructure_type, 5)->as<IfcRelContainedInSpatialStructure>(); }
::Ifc4x3_rc2::IfcRelServicesBuildings::list::ptr Ifc4x3_rc2::IfcSpatialElement::ServicedBySystems() const { return data_->getInverse(IFC4X3_RC2_IfcRelServicesBuildings_type, 5)->as<IfcRelServicesBuildings>(); }
::Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcSpatialElement::ReferencesElements() const { return data_->getInverse(IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type, 5)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcSpatialElement::declaration() const { return *IFC4X3_RC2_IfcSpatialElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpatialElement::Class() { return *IFC4X3_RC2_IfcSpatialElement_type; }
Ifc4x3_rc2::IfcSpatialElement::IfcSpatialElement(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpatialElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpatialElement::IfcSpatialElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSpatialElementType::ElementType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcSpatialElementType::setElementType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpatialElementType::declaration() const { return *IFC4X3_RC2_IfcSpatialElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpatialElementType::Class() { return *IFC4X3_RC2_IfcSpatialElementType_type; }
Ifc4x3_rc2::IfcSpatialElementType::IfcSpatialElementType(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpatialElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpatialElementType::IfcSpatialElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcElementCompositionEnum::Value > Ifc4x3_rc2::IfcSpatialStructureElement::CompositionType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcElementCompositionEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSpatialStructureElement::setCompositionType(boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcElementCompositionEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpatialStructureElement::declaration() const { return *IFC4X3_RC2_IfcSpatialStructureElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpatialStructureElement::Class() { return *IFC4X3_RC2_IfcSpatialStructureElement_type; }
Ifc4x3_rc2::IfcSpatialStructureElement::IfcSpatialStructureElement(IfcEntityInstanceData* e) : IfcSpatialElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpatialStructureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpatialStructureElement::IfcSpatialStructureElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcElementCompositionEnum::Value > v9_CompositionType) : IfcSpatialElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpatialStructureElementType::declaration() const { return *IFC4X3_RC2_IfcSpatialStructureElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpatialStructureElementType::Class() { return *IFC4X3_RC2_IfcSpatialStructureElementType_type; }
Ifc4x3_rc2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(IfcEntityInstanceData* e) : IfcSpatialElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpatialStructureElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpatialStructureElementType::IfcSpatialStructureElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType) : IfcSpatialElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSpatialZoneTypeEnum::Value > Ifc4x3_rc2::IfcSpatialZone::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSpatialZone::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpatialZone::declaration() const { return *IFC4X3_RC2_IfcSpatialZone_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpatialZone::Class() { return *IFC4X3_RC2_IfcSpatialZone_type; }
Ifc4x3_rc2::IfcSpatialZone::IfcSpatialZone(IfcEntityInstanceData* e) : IfcSpatialElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpatialZone_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpatialZone::IfcSpatialZone(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_LongName, boost::optional< ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value > v9_PredefinedType) : IfcSpatialElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSpatialZoneTypeEnum::Value Ifc4x3_rc2::IfcSpatialZoneType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSpatialZoneType::setPredefinedType(::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSpatialZoneType::LongName() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcSpatialZoneType::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSpatialZoneType::declaration() const { return *IFC4X3_RC2_IfcSpatialZoneType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSpatialZoneType::Class() { return *IFC4X3_RC2_IfcSpatialZoneType_type; }
Ifc4x3_rc2::IfcSpatialZoneType::IfcSpatialZoneType(IfcEntityInstanceData* e) : IfcSpatialElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSpatialZoneType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSpatialZoneType::IfcSpatialZoneType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSpatialZoneTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_LongName) : IfcSpatialElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSphere::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSphere::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSphere::declaration() const { return *IFC4X3_RC2_IfcSphere_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSphere::Class() { return *IFC4X3_RC2_IfcSphere_type; }
Ifc4x3_rc2::IfcSphere::IfcSphere(IfcEntityInstanceData* e) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSphere_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSphere::IfcSphere(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcCsgPrimitive3D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSphericalSurface::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSphericalSurface::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSphericalSurface::declaration() const { return *IFC4X3_RC2_IfcSphericalSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSphericalSurface::Class() { return *IFC4X3_RC2_IfcSphericalSurface_type; }
Ifc4x3_rc2::IfcSphericalSurface::IfcSphericalSurface(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSphericalSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSphericalSurface::IfcSphericalSurface(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_Radius) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStackTerminalTypeEnum::Value > Ifc4x3_rc2::IfcStackTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcStackTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStackTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStackTerminal::declaration() const { return *IFC4X3_RC2_IfcStackTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStackTerminal::Class() { return *IFC4X3_RC2_IfcStackTerminal_type; }
Ifc4x3_rc2::IfcStackTerminal::IfcStackTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStackTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStackTerminal::IfcStackTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStackTerminalTypeEnum::Value Ifc4x3_rc2::IfcStackTerminalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcStackTerminalType::setPredefinedType(::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStackTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStackTerminalType::declaration() const { return *IFC4X3_RC2_IfcStackTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStackTerminalType::Class() { return *IFC4X3_RC2_IfcStackTerminalType_type; }
Ifc4x3_rc2::IfcStackTerminalType::IfcStackTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStackTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStackTerminalType::IfcStackTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcStackTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStackTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStair
boost::optional< ::Ifc4x3_rc2::IfcStairTypeEnum::Value > Ifc4x3_rc2::IfcStair::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStairTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcStair::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStairTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStairTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStair::declaration() const { return *IFC4X3_RC2_IfcStair_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStair::Class() { return *IFC4X3_RC2_IfcStair_type; }
Ifc4x3_rc2::IfcStair::IfcStair(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStair_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStair::IfcStair(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcStairTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStairFlight::NumberOfRisers() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } int v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcStairFlight::setNumberOfRisers(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcStairFlight::NumberOfTreads() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } int v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcStairFlight::setNumberOfTreads(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStairFlight::RiserHeight() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcStairFlight::setRiserHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStairFlight::TreadLength() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcStairFlight::setTreadLength(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value > Ifc4x3_rc2::IfcStairFlight::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::FromString(*data_->getArgument(12)); }
void Ifc4x3_rc2::IfcStairFlight::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcStairFlightTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStairFlight::declaration() const { return *IFC4X3_RC2_IfcStairFlight_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStairFlight::Class() { return *IFC4X3_RC2_IfcStairFlight_type; }
Ifc4x3_rc2::IfcStairFlight::IfcStairFlight(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStairFlight_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStairFlight::IfcStairFlight(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::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_rc2::IfcStairFlightTypeEnum::Value > v13_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStairFlightTypeEnum::Value Ifc4x3_rc2::IfcStairFlightType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStairFlightTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcStairFlightType::setPredefinedType(::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStairFlightTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStairFlightType::declaration() const { return *IFC4X3_RC2_IfcStairFlightType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStairFlightType::Class() { return *IFC4X3_RC2_IfcStairFlightType_type; }
Ifc4x3_rc2::IfcStairFlightType::IfcStairFlightType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStairFlightType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStairFlightType::IfcStairFlightType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcStairFlightTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStairFlightTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStairType
::Ifc4x3_rc2::IfcStairTypeEnum::Value Ifc4x3_rc2::IfcStairType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStairTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcStairType::setPredefinedType(::Ifc4x3_rc2::IfcStairTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStairTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStairType::declaration() const { return *IFC4X3_RC2_IfcStairType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStairType::Class() { return *IFC4X3_RC2_IfcStairType_type; }
Ifc4x3_rc2::IfcStairType::IfcStairType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStairType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStairType::IfcStairType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcStairTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStairTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStructuralAction
boost::optional< bool > Ifc4x3_rc2::IfcStructuralAction::DestabilizingLoad() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcStructuralAction::setDestabilizingLoad(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralAction::declaration() const { return *IFC4X3_RC2_IfcStructuralAction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralAction::Class() { return *IFC4X3_RC2_IfcStructuralAction_type; }
Ifc4x3_rc2::IfcStructuralAction::IfcStructuralAction(IfcEntityInstanceData* e) : IfcStructuralActivity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralAction::IfcStructuralAction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralActivity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralLoad* Ifc4x3_rc2::IfcStructuralActivity::AppliedLoad() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcStructuralLoad>(true); }
void Ifc4x3_rc2::IfcStructuralActivity::setAppliedLoad(::Ifc4x3_rc2::IfcStructuralLoad* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value Ifc4x3_rc2::IfcStructuralActivity::GlobalOrLocal() const {  return ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcStructuralActivity::setGlobalOrLocal(::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcGlobalOrLocalEnum::ToString(v)));data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelConnectsStructuralActivity::list::ptr Ifc4x3_rc2::IfcStructuralActivity::AssignedToStructuralItem() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsStructuralActivity_type, 5)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcStructuralActivity::declaration() const { return *IFC4X3_RC2_IfcStructuralActivity_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralActivity::Class() { return *IFC4X3_RC2_IfcStructuralActivity_type; }
Ifc4x3_rc2::IfcStructuralActivity::IfcStructuralActivity(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralActivity_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralActivity::IfcStructuralActivity(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralAnalysisModel
::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::Value Ifc4x3_rc2::IfcStructuralAnalysisModel::PredefinedType() const {  return ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcStructuralAnalysisModel::setPredefinedType(::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::ToString(v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcStructuralAnalysisModel::OrientationOf2DPlane() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcStructuralAnalysisModel::setOrientationOf2DPlane(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadGroup >::ptr > Ifc4x3_rc2::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_rc2::IfcStructuralLoadGroup >(); }
void Ifc4x3_rc2::IfcStructuralAnalysisModel::setLoadedBy(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralResultGroup >::ptr > Ifc4x3_rc2::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_rc2::IfcStructuralResultGroup >(); }
void Ifc4x3_rc2::IfcStructuralAnalysisModel::setHasResults(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralResultGroup >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcObjectPlacement* Ifc4x3_rc2::IfcStructuralAnalysisModel::SharedPlacement() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcObjectPlacement>(true); }
void Ifc4x3_rc2::IfcStructuralAnalysisModel::setSharedPlacement(::Ifc4x3_rc2::IfcObjectPlacement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralAnalysisModel::declaration() const { return *IFC4X3_RC2_IfcStructuralAnalysisModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralAnalysisModel::Class() { return *IFC4X3_RC2_IfcStructuralAnalysisModel_type; }
Ifc4x3_rc2::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralAnalysisModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralAnalysisModel::IfcStructuralAnalysisModel(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcAnalysisModelTypeEnum::Value v6_PredefinedType, ::Ifc4x3_rc2::IfcAxis2Placement3D* v7_OrientationOf2DPlane, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadGroup >::ptr > v8_LoadedBy, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcStructuralResultGroup >::ptr > v9_HasResults, ::Ifc4x3_rc2::IfcObjectPlacement* v10_SharedPlacement) : IfcSystem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcBoundaryCondition* Ifc4x3_rc2::IfcStructuralConnection::AppliedCondition() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcBoundaryCondition>(true); }
void Ifc4x3_rc2::IfcStructuralConnection::setAppliedCondition(::Ifc4x3_rc2::IfcBoundaryCondition* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }

::Ifc4x3_rc2::IfcRelConnectsStructuralMember::list::ptr Ifc4x3_rc2::IfcStructuralConnection::ConnectsStructuralMembers() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsStructuralMember_type, 5)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcStructuralConnection::declaration() const { return *IFC4X3_RC2_IfcStructuralConnection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralConnection::Class() { return *IFC4X3_RC2_IfcStructuralConnection_type; }
Ifc4x3_rc2::IfcStructuralConnection::IfcStructuralConnection(IfcEntityInstanceData* e) : IfcStructuralItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralConnection::IfcStructuralConnection(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralConnectionCondition::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcStructuralConnectionCondition::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralConnectionCondition::declaration() const { return *IFC4X3_RC2_IfcStructuralConnectionCondition_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralConnectionCondition::Class() { return *IFC4X3_RC2_IfcStructuralConnectionCondition_type; }
Ifc4x3_rc2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralConnectionCondition_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralConnectionCondition::IfcStructuralConnectionCondition(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc2::IfcStructuralCurveAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcStructuralCurveAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} }
::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralCurveAction::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcStructuralCurveAction::setPredefinedType(::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveAction::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveAction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveAction::Class() { return *IFC4X3_RC2_IfcStructuralCurveAction_type; }
Ifc4x3_rc2::IfcStructuralCurveAction::IfcStructuralCurveAction(IfcEntityInstanceData* e) : IfcStructuralAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralCurveAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralCurveAction::IfcStructuralCurveAction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcStructuralCurveActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralCurveConnection
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcStructuralCurveConnection::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcStructuralCurveConnection::setAxis(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveConnection::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveConnection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveConnection::Class() { return *IFC4X3_RC2_IfcStructuralCurveConnection_type; }
Ifc4x3_rc2::IfcStructuralCurveConnection::IfcStructuralCurveConnection(IfcEntityInstanceData* e) : IfcStructuralConnection((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralCurveConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralCurveConnection::IfcStructuralCurveConnection(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_rc2::IfcDirection* v9_Axis) : IfcStructuralConnection((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralCurveMemberTypeEnum::Value Ifc4x3_rc2::IfcStructuralCurveMember::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcStructuralCurveMember::setPredefinedType(::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcStructuralCurveMember::Axis() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcStructuralCurveMember::setAxis(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveMember::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveMember_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveMember::Class() { return *IFC4X3_RC2_IfcStructuralCurveMember_type; }
Ifc4x3_rc2::IfcStructuralCurveMember::IfcStructuralCurveMember(IfcEntityInstanceData* e) : IfcStructuralMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralCurveMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralCurveMember::IfcStructuralCurveMember(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_rc2::IfcDirection* v9_Axis) : IfcStructuralMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralCurveMemberVarying::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveMemberVarying_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveMemberVarying::Class() { return *IFC4X3_RC2_IfcStructuralCurveMemberVarying_type; }
Ifc4x3_rc2::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(IfcEntityInstanceData* e) : IfcStructuralCurveMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralCurveMemberVarying_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralCurveMemberVarying::IfcStructuralCurveMemberVarying(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralCurveMemberTypeEnum::Value v8_PredefinedType, ::Ifc4x3_rc2::IfcDirection* v9_Axis) : IfcStructuralCurveMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralCurveActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralCurveReaction::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcStructuralCurveReaction::setPredefinedType(::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveReaction::declaration() const { return *IFC4X3_RC2_IfcStructuralCurveReaction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralCurveReaction::Class() { return *IFC4X3_RC2_IfcStructuralCurveReaction_type; }
Ifc4x3_rc2::IfcStructuralCurveReaction::IfcStructuralCurveReaction(IfcEntityInstanceData* e) : IfcStructuralReaction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralCurveReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralCurveReaction::IfcStructuralCurveReaction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStructuralItem

::Ifc4x3_rc2::IfcRelConnectsStructuralActivity::list::ptr Ifc4x3_rc2::IfcStructuralItem::AssignedStructuralActivity() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsStructuralActivity_type, 4)->as<IfcRelConnectsStructuralActivity>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcStructuralItem::declaration() const { return *IFC4X3_RC2_IfcStructuralItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralItem::Class() { return *IFC4X3_RC2_IfcStructuralItem_type; }
Ifc4x3_rc2::IfcStructuralItem::IfcStructuralItem(IfcEntityInstanceData* e) : IfcProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralItem::IfcStructuralItem(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation) : IfcProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralLinearAction::declaration() const { return *IFC4X3_RC2_IfcStructuralLinearAction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLinearAction::Class() { return *IFC4X3_RC2_IfcStructuralLinearAction_type; }
Ifc4x3_rc2::IfcStructuralLinearAction::IfcStructuralLinearAction(IfcEntityInstanceData* e) : IfcStructuralCurveAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLinearAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLinearAction::IfcStructuralLinearAction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc2::IfcStructuralCurveActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralCurveAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcStructuralCurveActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralLoad
boost::optional< std::string > Ifc4x3_rc2::IfcStructuralLoad::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcStructuralLoad::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoad::declaration() const { return *IFC4X3_RC2_IfcStructuralLoad_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoad::Class() { return *IFC4X3_RC2_IfcStructuralLoad_type; }
Ifc4x3_rc2::IfcStructuralLoad::IfcStructuralLoad(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoad_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLoad::IfcStructuralLoad(boost::optional< std::string > v1_Name) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralLoadCase::setSelfWeightCoefficients(boost::optional< std::vector< double > /*[3:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadCase::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadCase::Class() { return *IFC4X3_RC2_IfcStructuralLoadCase_type; }
Ifc4x3_rc2::IfcStructuralLoadCase::IfcStructuralLoadCase(IfcEntityInstanceData* e) : IfcStructuralLoadGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLoadCase::IfcStructuralLoadCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_rc2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcLoadGroupTypeEnum::ToString(v6_PredefinedType))));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v7_ActionType,::Ifc4x3_rc2::IfcActionTypeEnum::ToString(v7_ActionType))));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_ActionSource,::Ifc4x3_rc2::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_rc2::IfcStructuralLoadOrResult >::ptr Ifc4x3_rc2::IfcStructuralLoadConfiguration::Values() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcStructuralLoadOrResult >(); }
void Ifc4x3_rc2::IfcStructuralLoadConfiguration::setValues(aggregate_of< ::Ifc4x3_rc2::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_rc2::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_rc2::IfcStructuralLoadConfiguration::setLocations(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadConfiguration::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadConfiguration_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadConfiguration::Class() { return *IFC4X3_RC2_IfcStructuralLoadConfiguration_type; }
Ifc4x3_rc2::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(IfcEntityInstanceData* e) : IfcStructuralLoad((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadConfiguration_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLoadConfiguration::IfcStructuralLoadConfiguration(boost::optional< std::string > v1_Name, aggregate_of< ::Ifc4x3_rc2::IfcStructuralLoadOrResult >::ptr v2_Values, boost::optional< std::vector< std::vector< double > > > v3_Locations) : IfcStructuralLoad((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLoadGroupTypeEnum::Value Ifc4x3_rc2::IfcStructuralLoadGroup::PredefinedType() const {  return ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcStructuralLoadGroup::setPredefinedType(::Ifc4x3_rc2::IfcLoadGroupTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcLoadGroupTypeEnum::ToString(v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcActionTypeEnum::Value Ifc4x3_rc2::IfcStructuralLoadGroup::ActionType() const {  return ::Ifc4x3_rc2::IfcActionTypeEnum::FromString(*data_->getArgument(6)); }
void Ifc4x3_rc2::IfcStructuralLoadGroup::setActionType(::Ifc4x3_rc2::IfcActionTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcActionTypeEnum::ToString(v)));data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcActionSourceTypeEnum::Value Ifc4x3_rc2::IfcStructuralLoadGroup::ActionSource() const {  return ::Ifc4x3_rc2::IfcActionSourceTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcStructuralLoadGroup::setActionSource(::Ifc4x3_rc2::IfcActionSourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcActionSourceTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadGroup::Coefficient() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcStructuralLoadGroup::setCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcStructuralLoadGroup::Purpose() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcStructuralLoadGroup::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }

::Ifc4x3_rc2::IfcStructuralResultGroup::list::ptr Ifc4x3_rc2::IfcStructuralLoadGroup::SourceOfResultGroup() const { return data_->getInverse(IFC4X3_RC2_IfcStructuralResultGroup_type, 6)->as<IfcStructuralResultGroup>(); }
::Ifc4x3_rc2::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc2::IfcStructuralLoadGroup::LoadGroupFor() const { return data_->getInverse(IFC4X3_RC2_IfcStructuralAnalysisModel_type, 7)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadGroup::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadGroup_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadGroup::Class() { return *IFC4X3_RC2_IfcStructuralLoadGroup_type; }
Ifc4x3_rc2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLoadGroup::IfcStructuralLoadGroup(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcLoadGroupTypeEnum::Value v6_PredefinedType, ::Ifc4x3_rc2::IfcActionTypeEnum::Value v7_ActionType, ::Ifc4x3_rc2::IfcActionSourceTypeEnum::Value v8_ActionSource, boost::optional< double > v9_Coefficient, boost::optional< std::string > v10_Purpose) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcLoadGroupTypeEnum::ToString(v6_PredefinedType))));data_->setArgument(5,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v7_ActionType,::Ifc4x3_rc2::IfcActionTypeEnum::ToString(v7_ActionType))));data_->setArgument(6,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v8_ActionSource,::Ifc4x3_rc2::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_rc2::IfcStructuralLoadLinearForce::LinearForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearMomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearMomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadLinearForce::LinearMomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcStructuralLoadLinearForce::setLinearMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadLinearForce::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadLinearForce_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadLinearForce::Class() { return *IFC4X3_RC2_IfcStructuralLoadLinearForce_type; }
Ifc4x3_rc2::IfcStructuralLoadLinearForce::IfcStructuralLoadLinearForce(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadLinearForce_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcStructuralLoadOrResult::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadOrResult_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadOrResult::Class() { return *IFC4X3_RC2_IfcStructuralLoadOrResult_type; }
Ifc4x3_rc2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(IfcEntityInstanceData* e) : IfcStructuralLoad((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadOrResult_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLoadOrResult::IfcStructuralLoadOrResult(boost::optional< std::string > v1_Name) : IfcStructuralLoad((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralLoadPlanarForce::PlanarForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadPlanarForce::PlanarForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadPlanarForce::PlanarForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcStructuralLoadPlanarForce::setPlanarForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadPlanarForce::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadPlanarForce_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadPlanarForce::Class() { return *IFC4X3_RC2_IfcStructuralLoadPlanarForce_type; }
Ifc4x3_rc2::IfcStructuralLoadPlanarForce::IfcStructuralLoadPlanarForce(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadPlanarForce_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcStructuralLoadSingleDisplacement::DisplacementX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::DisplacementY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::DisplacementZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setDisplacementZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::RotationalDisplacementRZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::setRotationalDisplacementRZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::Class() { return *IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type; }
Ifc4x3_rc2::IfcStructuralLoadSingleDisplacement::IfcStructuralLoadSingleDisplacement(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadSingleDisplacement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcStructuralLoadSingleDisplacementDistortion::Distortion() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::setDistortion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::Class() { return *IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type; }
Ifc4x3_rc2::IfcStructuralLoadSingleDisplacementDistortion::IfcStructuralLoadSingleDisplacementDistortion(IfcEntityInstanceData* e) : IfcStructuralLoadSingleDisplacement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadSingleDisplacementDistortion_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcStructuralLoadSingleForce::ForceX() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::ForceY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::ForceZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setForceZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::MomentX() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::MomentY() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadSingleForce::MomentZ() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForce::setMomentZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleForce::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleForce_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleForce::Class() { return *IFC4X3_RC2_IfcStructuralLoadSingleForce_type; }
Ifc4x3_rc2::IfcStructuralLoadSingleForce::IfcStructuralLoadSingleForce(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadSingleForce_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcStructuralLoadSingleForceWarping::WarpingMoment() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::setWarpingMoment(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::Class() { return *IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type; }
Ifc4x3_rc2::IfcStructuralLoadSingleForceWarping::IfcStructuralLoadSingleForceWarping(IfcEntityInstanceData* e) : IfcStructuralLoadSingleForce((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadSingleForceWarping_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcStructuralLoadStatic::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadStatic_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadStatic::Class() { return *IFC4X3_RC2_IfcStructuralLoadStatic_type; }
Ifc4x3_rc2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(IfcEntityInstanceData* e) : IfcStructuralLoadOrResult((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadStatic_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralLoadStatic::IfcStructuralLoadStatic(boost::optional< std::string > v1_Name) : IfcStructuralLoadOrResult((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralLoadTemperature::DeltaTConstant() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTConstant(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadTemperature::DeltaTY() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralLoadTemperature::DeltaTZ() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcStructuralLoadTemperature::setDeltaTZ(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadTemperature::declaration() const { return *IFC4X3_RC2_IfcStructuralLoadTemperature_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralLoadTemperature::Class() { return *IFC4X3_RC2_IfcStructuralLoadTemperature_type; }
Ifc4x3_rc2::IfcStructuralLoadTemperature::IfcStructuralLoadTemperature(IfcEntityInstanceData* e) : IfcStructuralLoadStatic((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralLoadTemperature_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcRelConnectsStructuralMember::list::ptr Ifc4x3_rc2::IfcStructuralMember::ConnectedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelConnectsStructuralMember_type, 4)->as<IfcRelConnectsStructuralMember>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcStructuralMember::declaration() const { return *IFC4X3_RC2_IfcStructuralMember_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralMember::Class() { return *IFC4X3_RC2_IfcStructuralMember_type; }
Ifc4x3_rc2::IfcStructuralMember::IfcStructuralMember(IfcEntityInstanceData* e) : IfcStructuralItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralMember::IfcStructuralMember(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation) : IfcStructuralItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralPlanarAction::declaration() const { return *IFC4X3_RC2_IfcStructuralPlanarAction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralPlanarAction::Class() { return *IFC4X3_RC2_IfcStructuralPlanarAction_type; }
Ifc4x3_rc2::IfcStructuralPlanarAction::IfcStructuralPlanarAction(IfcEntityInstanceData* e) : IfcStructuralSurfaceAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralPlanarAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralPlanarAction::IfcStructuralPlanarAction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralSurfaceAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcStructuralSurfaceActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralPointAction


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralPointAction::declaration() const { return *IFC4X3_RC2_IfcStructuralPointAction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralPointAction::Class() { return *IFC4X3_RC2_IfcStructuralPointAction_type; }
Ifc4x3_rc2::IfcStructuralPointAction::IfcStructuralPointAction(IfcEntityInstanceData* e) : IfcStructuralAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralPointAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralPointAction::IfcStructuralPointAction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad) : IfcStructuralAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcStructuralPointConnection::ConditionCoordinateSystem() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcStructuralPointConnection::setConditionCoordinateSystem(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralPointConnection::declaration() const { return *IFC4X3_RC2_IfcStructuralPointConnection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralPointConnection::Class() { return *IFC4X3_RC2_IfcStructuralPointConnection_type; }
Ifc4x3_rc2::IfcStructuralPointConnection::IfcStructuralPointConnection(IfcEntityInstanceData* e) : IfcStructuralConnection((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralPointConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralPointConnection::IfcStructuralPointConnection(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcBoundaryCondition* v8_AppliedCondition, ::Ifc4x3_rc2::IfcAxis2Placement3D* v9_ConditionCoordinateSystem) : IfcStructuralConnection((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralPointReaction::declaration() const { return *IFC4X3_RC2_IfcStructuralPointReaction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralPointReaction::Class() { return *IFC4X3_RC2_IfcStructuralPointReaction_type; }
Ifc4x3_rc2::IfcStructuralPointReaction::IfcStructuralPointReaction(IfcEntityInstanceData* e) : IfcStructuralReaction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralPointReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralPointReaction::IfcStructuralPointReaction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralReaction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralReaction


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralReaction::declaration() const { return *IFC4X3_RC2_IfcStructuralReaction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralReaction::Class() { return *IFC4X3_RC2_IfcStructuralReaction_type; }
Ifc4x3_rc2::IfcStructuralReaction::IfcStructuralReaction(IfcEntityInstanceData* e) : IfcStructuralActivity((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralReaction::IfcStructuralReaction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal) : IfcStructuralActivity((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);} }

// Function implementations for IfcStructuralResultGroup
::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::Value Ifc4x3_rc2::IfcStructuralResultGroup::TheoryType() const {  return ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcStructuralResultGroup::setTheoryType(::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::ToString(v)));data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcStructuralLoadGroup* Ifc4x3_rc2::IfcStructuralResultGroup::ResultForLoadGroup() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcStructuralLoadGroup>(true); }
void Ifc4x3_rc2::IfcStructuralResultGroup::setResultForLoadGroup(::Ifc4x3_rc2::IfcStructuralLoadGroup* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
bool Ifc4x3_rc2::IfcStructuralResultGroup::IsLinear() const {  bool v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcStructuralResultGroup::setIsLinear(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }

::Ifc4x3_rc2::IfcStructuralAnalysisModel::list::ptr Ifc4x3_rc2::IfcStructuralResultGroup::ResultGroupFor() const { return data_->getInverse(IFC4X3_RC2_IfcStructuralAnalysisModel_type, 8)->as<IfcStructuralAnalysisModel>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcStructuralResultGroup::declaration() const { return *IFC4X3_RC2_IfcStructuralResultGroup_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralResultGroup::Class() { return *IFC4X3_RC2_IfcStructuralResultGroup_type; }
Ifc4x3_rc2::IfcStructuralResultGroup::IfcStructuralResultGroup(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralResultGroup_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralResultGroup::IfcStructuralResultGroup(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcAnalysisTheoryTypeEnum::Value v6_TheoryType, ::Ifc4x3_rc2::IfcStructuralLoadGroup* v7_ResultForLoadGroup, bool v8_IsLinear) : IfcGroup((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcProjectedOrTrueLengthEnum::Value > Ifc4x3_rc2::IfcStructuralSurfaceAction::ProjectedOrTrue() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcStructuralSurfaceAction::setProjectedOrTrue(boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::ToString(*v)));}data_->setArgument(10,attr);} }
::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceAction::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcStructuralSurfaceAction::setPredefinedType(::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceAction::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceAction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceAction::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceAction_type; }
Ifc4x3_rc2::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(IfcEntityInstanceData* e) : IfcStructuralAction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralSurfaceAction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralSurfaceAction::IfcStructuralSurfaceAction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, boost::optional< bool > v10_DestabilizingLoad, boost::optional< ::Ifc4x3_rc2::IfcProjectedOrTrueLengthEnum::Value > v11_ProjectedOrTrue, ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value v12_PredefinedType) : IfcStructuralAction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcStructuralSurfaceActivityTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcStructuralSurfaceConnection


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceConnection::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceConnection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceConnection::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceConnection_type; }
Ifc4x3_rc2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(IfcEntityInstanceData* e) : IfcStructuralConnection((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralSurfaceConnection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralSurfaceConnection::IfcStructuralSurfaceConnection(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcBoundaryCondition* v8_AppliedCondition) : IfcStructuralConnection((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcStructuralSurfaceMemberTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceMember::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcStructuralSurfaceMember::setPredefinedType(::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::ToString(v)));data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcStructuralSurfaceMember::Thickness() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcStructuralSurfaceMember::setThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceMember::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceMember_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceMember::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceMember_type; }
Ifc4x3_rc2::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(IfcEntityInstanceData* e) : IfcStructuralMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralSurfaceMember_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralSurfaceMember::IfcStructuralSurfaceMember(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralSurfaceMemberVarying::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceMemberVarying::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type; }
Ifc4x3_rc2::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(IfcEntityInstanceData* e) : IfcStructuralSurfaceMember((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralSurfaceMemberVarying_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralSurfaceMemberVarying::IfcStructuralSurfaceMemberVarying(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralSurfaceMemberTypeEnum::Value v8_PredefinedType, boost::optional< double > v9_Thickness) : IfcStructuralSurfaceMember((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcStructuralSurfaceActivityTypeEnum::Value Ifc4x3_rc2::IfcStructuralSurfaceReaction::PredefinedType() const {  return ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcStructuralSurfaceReaction::setPredefinedType(::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceReaction::declaration() const { return *IFC4X3_RC2_IfcStructuralSurfaceReaction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStructuralSurfaceReaction::Class() { return *IFC4X3_RC2_IfcStructuralSurfaceReaction_type; }
Ifc4x3_rc2::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(IfcEntityInstanceData* e) : IfcStructuralReaction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStructuralSurfaceReaction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStructuralSurfaceReaction::IfcStructuralSurfaceReaction(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, ::Ifc4x3_rc2::IfcStructuralLoad* v8_AppliedLoad, ::Ifc4x3_rc2::IfcGlobalOrLocalEnum::Value v9_GlobalOrLocal, ::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::Value v10_PredefinedType) : IfcStructuralReaction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGlobalOrLocalEnum::ToString(v9_GlobalOrLocal))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_PredefinedType,::Ifc4x3_rc2::IfcStructuralSurfaceActivityTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcStyleModel


const IfcParse::entity& Ifc4x3_rc2::IfcStyleModel::declaration() const { return *IFC4X3_RC2_IfcStyleModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStyleModel::Class() { return *IFC4X3_RC2_IfcStyleModel_type; }
Ifc4x3_rc2::IfcStyleModel::IfcStyleModel(IfcEntityInstanceData* e) : IfcRepresentation((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStyleModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStyleModel::IfcStyleModel(::Ifc4x3_rc2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v4_Items) : IfcRepresentation((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcRepresentationItem* Ifc4x3_rc2::IfcStyledItem::Item() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcRepresentationItem>(true); }
void Ifc4x3_rc2::IfcStyledItem::setItem(::Ifc4x3_rc2::IfcRepresentationItem* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcStyleAssignmentSelect >::ptr Ifc4x3_rc2::IfcStyledItem::Styles() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcStyleAssignmentSelect >(); }
void Ifc4x3_rc2::IfcStyledItem::setStyles(aggregate_of< ::Ifc4x3_rc2::IfcStyleAssignmentSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcStyledItem::Name() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcStyledItem::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcStyledItem::declaration() const { return *IFC4X3_RC2_IfcStyledItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStyledItem::Class() { return *IFC4X3_RC2_IfcStyledItem_type; }
Ifc4x3_rc2::IfcStyledItem::IfcStyledItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStyledItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStyledItem::IfcStyledItem(::Ifc4x3_rc2::IfcRepresentationItem* v1_Item, aggregate_of< ::Ifc4x3_rc2::IfcStyleAssignmentSelect >::ptr v2_Styles, boost::optional< std::string > v3_Name) : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(1,attr);} if (v3_Name) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::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_rc2::IfcStyledRepresentation::declaration() const { return *IFC4X3_RC2_IfcStyledRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcStyledRepresentation::Class() { return *IFC4X3_RC2_IfcStyledRepresentation_type; }
Ifc4x3_rc2::IfcStyledRepresentation::IfcStyledRepresentation(IfcEntityInstanceData* e) : IfcStyleModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcStyledRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcStyledRepresentation::IfcStyledRepresentation(::Ifc4x3_rc2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v4_Items) : IfcStyleModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSubContractResourceTypeEnum::Value > Ifc4x3_rc2::IfcSubContractResource::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcSubContractResource::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSubContractResource::declaration() const { return *IFC4X3_RC2_IfcSubContractResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSubContractResource::Class() { return *IFC4X3_RC2_IfcSubContractResource_type; }
Ifc4x3_rc2::IfcSubContractResource::IfcSubContractResource(IfcEntityInstanceData* e) : IfcConstructionResource((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSubContractResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSubContractResource::IfcSubContractResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcResourceTime* v8_Usage, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcAppliedValue >::ptr > v9_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v10_BaseQuantity, boost::optional< ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value > v11_PredefinedType) : IfcConstructionResource((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSubContractResourceTypeEnum::Value Ifc4x3_rc2::IfcSubContractResourceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcSubContractResourceType::setPredefinedType(::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::ToString(v)));data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSubContractResourceType::declaration() const { return *IFC4X3_RC2_IfcSubContractResourceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSubContractResourceType::Class() { return *IFC4X3_RC2_IfcSubContractResourceType_type; }
Ifc4x3_rc2::IfcSubContractResourceType::IfcSubContractResourceType(IfcEntityInstanceData* e) : IfcConstructionResourceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSubContractResourceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSubContractResourceType::IfcSubContractResourceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcAppliedValue >::ptr > v10_BaseCosts, ::Ifc4x3_rc2::IfcPhysicalQuantity* v11_BaseQuantity, ::Ifc4x3_rc2::IfcSubContractResourceTypeEnum::Value v12_PredefinedType) : IfcConstructionResourceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSubContractResourceTypeEnum::ToString(v12_PredefinedType))));data_->setArgument(11,attr);} }

// Function implementations for IfcSubedge
::Ifc4x3_rc2::IfcEdge* Ifc4x3_rc2::IfcSubedge::ParentEdge() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcEdge>(true); }
void Ifc4x3_rc2::IfcSubedge::setParentEdge(::Ifc4x3_rc2::IfcEdge* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSubedge::declaration() const { return *IFC4X3_RC2_IfcSubedge_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSubedge::Class() { return *IFC4X3_RC2_IfcSubedge_type; }
Ifc4x3_rc2::IfcSubedge::IfcSubedge(IfcEntityInstanceData* e) : IfcEdge((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSubedge_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSubedge::IfcSubedge(::Ifc4x3_rc2::IfcVertex* v1_EdgeStart, ::Ifc4x3_rc2::IfcVertex* v2_EdgeEnd, ::Ifc4x3_rc2::IfcEdge* v3_ParentEdge) : IfcEdge((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurface::declaration() const { return *IFC4X3_RC2_IfcSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurface::Class() { return *IFC4X3_RC2_IfcSurface_type; }
Ifc4x3_rc2::IfcSurface::IfcSurface(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurface::IfcSurface() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSurface_type);  }

// Function implementations for IfcSurfaceCurve
::Ifc4x3_rc2::IfcCurve* Ifc4x3_rc2::IfcSurfaceCurve::Curve3D() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcSurfaceCurve::setCurve3D(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcPcurve >::ptr Ifc4x3_rc2::IfcSurfaceCurve::AssociatedGeometry() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcPcurve >(); }
void Ifc4x3_rc2::IfcSurfaceCurve::setAssociatedGeometry(aggregate_of< ::Ifc4x3_rc2::IfcPcurve >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::Value Ifc4x3_rc2::IfcSurfaceCurve::MasterRepresentation() const {  return ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcSurfaceCurve::setMasterRepresentation(::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::ToString(v)));data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceCurve::declaration() const { return *IFC4X3_RC2_IfcSurfaceCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceCurve::Class() { return *IFC4X3_RC2_IfcSurfaceCurve_type; }
Ifc4x3_rc2::IfcSurfaceCurve::IfcSurfaceCurve(IfcEntityInstanceData* e) : IfcCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceCurve::IfcSurfaceCurve(::Ifc4x3_rc2::IfcCurve* v1_Curve3D, aggregate_of< ::Ifc4x3_rc2::IfcPcurve >::ptr v2_AssociatedGeometry, ::Ifc4x3_rc2::IfcPreferredSurfaceCurveRepresentation::Value v3_MasterRepresentation) : IfcCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcPreferredSurfaceCurveRepresentation::ToString(v3_MasterRepresentation))));data_->setArgument(2,attr);} }

// Function implementations for IfcSurfaceCurveSweptAreaSolid
::Ifc4x3_rc2::IfcSurface* Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::ReferenceSurface() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcSurface>(true); }
void Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::setReferenceSurface(::Ifc4x3_rc2::IfcSurface* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::declaration() const { return *IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::Class() { return *IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type; }
Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(IfcEntityInstanceData* e) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceCurveSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceCurveSweptAreaSolid::IfcSurfaceCurveSweptAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcCurve* v3_Directrix, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v4_StartParam, ::Ifc4x3_rc2::IfcCurveMeasureSelect* v5_EndParam, ::Ifc4x3_rc2::IfcSurface* v6_ReferenceSurface) : IfcDirectrixCurveSweptAreaSolid((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v4_StartParam));data_->setArgument(3,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v5_EndParam));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_rc2::IfcSurfaceFeatureTypeEnum::Value > Ifc4x3_rc2::IfcSurfaceFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSurfaceFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceFeature::declaration() const { return *IFC4X3_RC2_IfcSurfaceFeature_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceFeature::Class() { return *IFC4X3_RC2_IfcSurfaceFeature_type; }
Ifc4x3_rc2::IfcSurfaceFeature::IfcSurfaceFeature(IfcEntityInstanceData* e) : IfcFeatureElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceFeature_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceFeature::IfcSurfaceFeature(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSurfaceFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcDirection* Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::ExtrudedDirection() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::setExtrudedDirection(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
double Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::declaration() const { return *IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::Class() { return *IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type; }
Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(IfcEntityInstanceData* e) : IfcSweptSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceOfLinearExtrusion_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceOfLinearExtrusion::IfcSurfaceOfLinearExtrusion(::Ifc4x3_rc2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcDirection* v3_ExtrudedDirection, double v4_Depth) : IfcSweptSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcAxis1Placement* Ifc4x3_rc2::IfcSurfaceOfRevolution::AxisPosition() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcAxis1Placement>(true); }
void Ifc4x3_rc2::IfcSurfaceOfRevolution::setAxisPosition(::Ifc4x3_rc2::IfcAxis1Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceOfRevolution::declaration() const { return *IFC4X3_RC2_IfcSurfaceOfRevolution_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceOfRevolution::Class() { return *IFC4X3_RC2_IfcSurfaceOfRevolution_type; }
Ifc4x3_rc2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(IfcEntityInstanceData* e) : IfcSweptSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceOfRevolution_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceOfRevolution::IfcSurfaceOfRevolution(::Ifc4x3_rc2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position, ::Ifc4x3_rc2::IfcAxis1Placement* v3_AxisPosition) : IfcSweptSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSurfaceReinforcementArea::setSurfaceReinforcement1(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::vector< double > /*[2:3]*/ > Ifc4x3_rc2::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_rc2::IfcSurfaceReinforcementArea::setSurfaceReinforcement2(boost::optional< std::vector< double > /*[2:3]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSurfaceReinforcementArea::ShearReinforcement() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcSurfaceReinforcementArea::setShearReinforcement(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceReinforcementArea::declaration() const { return *IFC4X3_RC2_IfcSurfaceReinforcementArea_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceReinforcementArea::Class() { return *IFC4X3_RC2_IfcSurfaceReinforcementArea_type; }
Ifc4x3_rc2::IfcSurfaceReinforcementArea::IfcSurfaceReinforcementArea(IfcEntityInstanceData* e) : IfcStructuralLoadOrResult((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceReinforcementArea_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_RC2_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_rc2::IfcSurfaceSide::Value Ifc4x3_rc2::IfcSurfaceStyle::Side() const {  return ::Ifc4x3_rc2::IfcSurfaceSide::FromString(*data_->getArgument(1)); }
void Ifc4x3_rc2::IfcSurfaceStyle::setSide(::Ifc4x3_rc2::IfcSurfaceSide::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSurfaceSide::ToString(v)));data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcSurfaceStyleElementSelect >::ptr Ifc4x3_rc2::IfcSurfaceStyle::Styles() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcSurfaceStyleElementSelect >(); }
void Ifc4x3_rc2::IfcSurfaceStyle::setStyles(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceStyleElementSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyle::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyle::Class() { return *IFC4X3_RC2_IfcSurfaceStyle_type; }
Ifc4x3_rc2::IfcSurfaceStyle::IfcSurfaceStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceStyle::IfcSurfaceStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcSurfaceSide::Value v2_Side, aggregate_of< ::Ifc4x3_rc2::IfcSurfaceStyleElementSelect >::ptr v3_Styles) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurfaceSide::ToString(v2_Side))));data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Styles)->generalize());data_->setArgument(2,attr);} }

// Function implementations for IfcSurfaceStyleLighting
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcSurfaceStyleLighting::DiffuseTransmissionColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleLighting::setDiffuseTransmissionColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcSurfaceStyleLighting::DiffuseReflectionColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleLighting::setDiffuseReflectionColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcSurfaceStyleLighting::TransmissionColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleLighting::setTransmissionColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcSurfaceStyleLighting::ReflectanceColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleLighting::setReflectanceColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleLighting::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleLighting_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleLighting::Class() { return *IFC4X3_RC2_IfcSurfaceStyleLighting_type; }
Ifc4x3_rc2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceStyleLighting_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceStyleLighting::IfcSurfaceStyleLighting(::Ifc4x3_rc2::IfcColourRgb* v1_DiffuseTransmissionColour, ::Ifc4x3_rc2::IfcColourRgb* v2_DiffuseReflectionColour, ::Ifc4x3_rc2::IfcColourRgb* v3_TransmissionColour, ::Ifc4x3_rc2::IfcColourRgb* v4_ReflectanceColour) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurfaceStyleRefraction::RefractionIndex() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } double v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcSurfaceStyleRefraction::setRefractionIndex(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSurfaceStyleRefraction::DispersionFactor() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSurfaceStyleRefraction::setDispersionFactor(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleRefraction::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleRefraction_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleRefraction::Class() { return *IFC4X3_RC2_IfcSurfaceStyleRefraction_type; }
Ifc4x3_rc2::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceStyleRefraction_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceStyleRefraction::IfcSurfaceStyleRefraction(boost::optional< double > v1_RefractionIndex, boost::optional< double > v2_DispersionFactor) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcColourOrFactor* Ifc4x3_rc2::IfcSurfaceStyleRendering::DiffuseColour() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcColourOrFactor>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setDiffuseColour(::Ifc4x3_rc2::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcColourOrFactor* Ifc4x3_rc2::IfcSurfaceStyleRendering::TransmissionColour() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcColourOrFactor>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setTransmissionColour(::Ifc4x3_rc2::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcColourOrFactor* Ifc4x3_rc2::IfcSurfaceStyleRendering::DiffuseTransmissionColour() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcColourOrFactor>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setDiffuseTransmissionColour(::Ifc4x3_rc2::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcColourOrFactor* Ifc4x3_rc2::IfcSurfaceStyleRendering::ReflectionColour() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcColourOrFactor>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setReflectionColour(::Ifc4x3_rc2::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcColourOrFactor* Ifc4x3_rc2::IfcSurfaceStyleRendering::SpecularColour() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcColourOrFactor>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setSpecularColour(::Ifc4x3_rc2::IfcColourOrFactor* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcSpecularHighlightSelect* Ifc4x3_rc2::IfcSurfaceStyleRendering::SpecularHighlight() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcSpecularHighlightSelect>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setSpecularHighlight(::Ifc4x3_rc2::IfcSpecularHighlightSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcReflectanceMethodEnum::Value Ifc4x3_rc2::IfcSurfaceStyleRendering::ReflectanceMethod() const {  return ::Ifc4x3_rc2::IfcReflectanceMethodEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSurfaceStyleRendering::setReflectanceMethod(::Ifc4x3_rc2::IfcReflectanceMethodEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcReflectanceMethodEnum::ToString(v)));data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleRendering::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleRendering_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleRendering::Class() { return *IFC4X3_RC2_IfcSurfaceStyleRendering_type; }
Ifc4x3_rc2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(IfcEntityInstanceData* e) : IfcSurfaceStyleShading((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceStyleRendering_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceStyleRendering::IfcSurfaceStyleRendering(::Ifc4x3_rc2::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency, ::Ifc4x3_rc2::IfcColourOrFactor* v3_DiffuseColour, ::Ifc4x3_rc2::IfcColourOrFactor* v4_TransmissionColour, ::Ifc4x3_rc2::IfcColourOrFactor* v5_DiffuseTransmissionColour, ::Ifc4x3_rc2::IfcColourOrFactor* v6_ReflectionColour, ::Ifc4x3_rc2::IfcColourOrFactor* v7_SpecularColour, ::Ifc4x3_rc2::IfcSpecularHighlightSelect* v8_SpecularHighlight, ::Ifc4x3_rc2::IfcReflectanceMethodEnum::Value v9_ReflectanceMethod) : IfcSurfaceStyleShading((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcReflectanceMethodEnum::ToString(v9_ReflectanceMethod))));data_->setArgument(8,attr);} }

// Function implementations for IfcSurfaceStyleShading
::Ifc4x3_rc2::IfcColourRgb* Ifc4x3_rc2::IfcSurfaceStyleShading::SurfaceColour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcColourRgb>(true); }
void Ifc4x3_rc2::IfcSurfaceStyleShading::setSurfaceColour(::Ifc4x3_rc2::IfcColourRgb* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSurfaceStyleShading::Transparency() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSurfaceStyleShading::setTransparency(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleShading::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleShading_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleShading::Class() { return *IFC4X3_RC2_IfcSurfaceStyleShading_type; }
Ifc4x3_rc2::IfcSurfaceStyleShading::IfcSurfaceStyleShading(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceStyleShading_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceStyleShading::IfcSurfaceStyleShading(::Ifc4x3_rc2::IfcColourRgb* v1_SurfaceColour, boost::optional< double > v2_Transparency) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurfaceTexture >::ptr Ifc4x3_rc2::IfcSurfaceStyleWithTextures::Textures() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcSurfaceTexture >(); }
void Ifc4x3_rc2::IfcSurfaceStyleWithTextures::setTextures(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleWithTextures::declaration() const { return *IFC4X3_RC2_IfcSurfaceStyleWithTextures_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceStyleWithTextures::Class() { return *IFC4X3_RC2_IfcSurfaceStyleWithTextures_type; }
Ifc4x3_rc2::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceStyleWithTextures_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceStyleWithTextures::IfcSurfaceStyleWithTextures(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v1_Textures) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcSurfaceStyleWithTextures_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Textures)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcSurfaceTexture
bool Ifc4x3_rc2::IfcSurfaceTexture::RepeatS() const {  bool v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcSurfaceTexture::setRepeatS(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
bool Ifc4x3_rc2::IfcSurfaceTexture::RepeatT() const {  bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSurfaceTexture::setRepeatT(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcSurfaceTexture::Mode() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcSurfaceTexture::setMode(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* Ifc4x3_rc2::IfcSurfaceTexture::TextureTransform() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcCartesianTransformationOperator2D>(true); }
void Ifc4x3_rc2::IfcSurfaceTexture::setTextureTransform(::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcSurfaceTexture::setParameter(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }

::Ifc4x3_rc2::IfcTextureCoordinate::list::ptr Ifc4x3_rc2::IfcSurfaceTexture::IsMappedBy() const { return data_->getInverse(IFC4X3_RC2_IfcTextureCoordinate_type, 0)->as<IfcTextureCoordinate>(); }
::Ifc4x3_rc2::IfcSurfaceStyleWithTextures::list::ptr Ifc4x3_rc2::IfcSurfaceTexture::UsedInStyles() const { return data_->getInverse(IFC4X3_RC2_IfcSurfaceStyleWithTextures_type, 0)->as<IfcSurfaceStyleWithTextures>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceTexture::declaration() const { return *IFC4X3_RC2_IfcSurfaceTexture_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSurfaceTexture::Class() { return *IFC4X3_RC2_IfcSurfaceTexture_type; }
Ifc4x3_rc2::IfcSurfaceTexture::IfcSurfaceTexture(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSurfaceTexture_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSurfaceTexture::IfcSurfaceTexture(bool v1_RepeatS, bool v2_RepeatT, boost::optional< std::string > v3_Mode, ::Ifc4x3_rc2::IfcCartesianTransformationOperator2D* v4_TextureTransform, boost::optional< std::vector< std::string > /*[1:?]*/ > v5_Parameter) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcProfileDef* Ifc4x3_rc2::IfcSweptAreaSolid::SweptArea() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcSweptAreaSolid::setSweptArea(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcSweptAreaSolid::Position() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcSweptAreaSolid::setPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSweptAreaSolid::declaration() const { return *IFC4X3_RC2_IfcSweptAreaSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSweptAreaSolid::Class() { return *IFC4X3_RC2_IfcSweptAreaSolid_type; }
Ifc4x3_rc2::IfcSweptAreaSolid::IfcSweptAreaSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSweptAreaSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSweptAreaSolid::IfcSweptAreaSolid(::Ifc4x3_rc2::IfcProfileDef* v1_SweptArea, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position) : IfcSolidModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcCurve* Ifc4x3_rc2::IfcSweptDiskSolid::Directrix() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcSweptDiskSolid::setDirectrix(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcSweptDiskSolid::Radius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcSweptDiskSolid::setRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolid::InnerRadius() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcSweptDiskSolid::setInnerRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolid::StartParam() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcSweptDiskSolid::setStartParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcSweptDiskSolid::EndParam() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcSweptDiskSolid::setEndParam(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSweptDiskSolid::declaration() const { return *IFC4X3_RC2_IfcSweptDiskSolid_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSweptDiskSolid::Class() { return *IFC4X3_RC2_IfcSweptDiskSolid_type; }
Ifc4x3_rc2::IfcSweptDiskSolid::IfcSweptDiskSolid(IfcEntityInstanceData* e) : IfcSolidModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSweptDiskSolid_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSweptDiskSolid::IfcSweptDiskSolid(::Ifc4x3_rc2::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_RC2_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_rc2::IfcSweptDiskSolidPolygonal::FilletRadius() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::declaration() const { return *IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::Class() { return *IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type; }
Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(IfcEntityInstanceData* e) : IfcSweptDiskSolid((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSweptDiskSolidPolygonal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSweptDiskSolidPolygonal::IfcSweptDiskSolidPolygonal(::Ifc4x3_rc2::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_RC2_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_rc2::IfcProfileDef* Ifc4x3_rc2::IfcSweptSurface::SweptCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcProfileDef>(true); }
void Ifc4x3_rc2::IfcSweptSurface::setSweptCurve(::Ifc4x3_rc2::IfcProfileDef* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement3D* Ifc4x3_rc2::IfcSweptSurface::Position() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAxis2Placement3D>(true); }
void Ifc4x3_rc2::IfcSweptSurface::setPosition(::Ifc4x3_rc2::IfcAxis2Placement3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSweptSurface::declaration() const { return *IFC4X3_RC2_IfcSweptSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSweptSurface::Class() { return *IFC4X3_RC2_IfcSweptSurface_type; }
Ifc4x3_rc2::IfcSweptSurface::IfcSweptSurface(IfcEntityInstanceData* e) : IfcSurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSweptSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSweptSurface::IfcSweptSurface(::Ifc4x3_rc2::IfcProfileDef* v1_SweptCurve, ::Ifc4x3_rc2::IfcAxis2Placement3D* v2_Position) : IfcSurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSwitchingDeviceTypeEnum::Value > Ifc4x3_rc2::IfcSwitchingDevice::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSwitchingDevice::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSwitchingDevice::declaration() const { return *IFC4X3_RC2_IfcSwitchingDevice_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSwitchingDevice::Class() { return *IFC4X3_RC2_IfcSwitchingDevice_type; }
Ifc4x3_rc2::IfcSwitchingDevice::IfcSwitchingDevice(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSwitchingDevice_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSwitchingDevice::IfcSwitchingDevice(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSwitchingDeviceTypeEnum::Value Ifc4x3_rc2::IfcSwitchingDeviceType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSwitchingDeviceType::setPredefinedType(::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSwitchingDeviceType::declaration() const { return *IFC4X3_RC2_IfcSwitchingDeviceType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSwitchingDeviceType::Class() { return *IFC4X3_RC2_IfcSwitchingDeviceType_type; }
Ifc4x3_rc2::IfcSwitchingDeviceType::IfcSwitchingDeviceType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSwitchingDeviceType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSwitchingDeviceType::IfcSwitchingDeviceType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcSwitchingDeviceTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSwitchingDeviceTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcSystem

::Ifc4x3_rc2::IfcRelServicesBuildings::list::ptr Ifc4x3_rc2::IfcSystem::ServicesBuildings() const { return data_->getInverse(IFC4X3_RC2_IfcRelServicesBuildings_type, 4)->as<IfcRelServicesBuildings>(); }
::Ifc4x3_rc2::IfcRelReferencedInSpatialStructure::list::ptr Ifc4x3_rc2::IfcSystem::ServicesFacilities() const { return data_->getInverse(IFC4X3_RC2_IfcRelReferencedInSpatialStructure_type, 4)->as<IfcRelReferencedInSpatialStructure>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcSystem::declaration() const { return *IFC4X3_RC2_IfcSystem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSystem::Class() { return *IFC4X3_RC2_IfcSystem_type; }
Ifc4x3_rc2::IfcSystem::IfcSystem(IfcEntityInstanceData* e) : IfcGroup((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSystem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSystem::IfcSystem(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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_rc2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc2::IfcSystemFurnitureElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcSystemFurnitureElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSystemFurnitureElement::declaration() const { return *IFC4X3_RC2_IfcSystemFurnitureElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSystemFurnitureElement::Class() { return *IFC4X3_RC2_IfcSystemFurnitureElement_type; }
Ifc4x3_rc2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(IfcEntityInstanceData* e) : IfcFurnishingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSystemFurnitureElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSystemFurnitureElement::IfcSystemFurnitureElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v9_PredefinedType) : IfcFurnishingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcSystemFurnitureElementTypeEnum::Value > Ifc4x3_rc2::IfcSystemFurnitureElementType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcSystemFurnitureElementType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcSystemFurnitureElementType::declaration() const { return *IFC4X3_RC2_IfcSystemFurnitureElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcSystemFurnitureElementType::Class() { return *IFC4X3_RC2_IfcSystemFurnitureElementType_type; }
Ifc4x3_rc2::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(IfcEntityInstanceData* e) : IfcFurnishingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcSystemFurnitureElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcSystemFurnitureElementType::IfcSystemFurnitureElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4x3_rc2::IfcSystemFurnitureElementTypeEnum::Value > v10_PredefinedType) : IfcFurnishingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcTShapeProfileDef::FlangeWidth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcTShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcTShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::FlangeEdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::WebEdgeRadius() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setWebEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::WebSlope() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setWebSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcTShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcTShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTShapeProfileDef::Class() { return *IFC4X3_RC2_IfcTShapeProfileDef_type; }
Ifc4x3_rc2::IfcTShapeProfileDef::IfcTShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTShapeProfileDef::IfcTShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcTShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcTable::Name() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcTable::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableRow >::ptr > Ifc4x3_rc2::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_rc2::IfcTableRow >(); }
void Ifc4x3_rc2::IfcTable::setRows(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableRow >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(1,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableColumn >::ptr > Ifc4x3_rc2::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_rc2::IfcTableColumn >(); }
void Ifc4x3_rc2::IfcTable::setColumns(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableColumn >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTable::declaration() const { return *IFC4X3_RC2_IfcTable_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTable::Class() { return *IFC4X3_RC2_IfcTable_type; }
Ifc4x3_rc2::IfcTable::IfcTable(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTable_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTable::IfcTable(boost::optional< std::string > v1_Name, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableRow >::ptr > v2_Rows, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcTableColumn >::ptr > v3_Columns) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTableColumn::Identifier() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcTableColumn::setIdentifier(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTableColumn::Name() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcTableColumn::setName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTableColumn::Description() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcTableColumn::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcTableColumn::Unit() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcTableColumn::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcReference* Ifc4x3_rc2::IfcTableColumn::ReferencePath() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcReference>(true); }
void Ifc4x3_rc2::IfcTableColumn::setReferencePath(::Ifc4x3_rc2::IfcReference* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTableColumn::declaration() const { return *IFC4X3_RC2_IfcTableColumn_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTableColumn::Class() { return *IFC4X3_RC2_IfcTableColumn_type; }
Ifc4x3_rc2::IfcTableColumn::IfcTableColumn(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTableColumn_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTableColumn::IfcTableColumn(boost::optional< std::string > v1_Identifier, boost::optional< std::string > v2_Name, boost::optional< std::string > v3_Description, ::Ifc4x3_rc2::IfcUnit* v4_Unit, ::Ifc4x3_rc2::IfcReference* v5_ReferencePath) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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< ::Ifc4x3_rc2::IfcValue >::ptr > Ifc4x3_rc2::IfcTableRow::RowCells() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return boost::none; } aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcTableRow::setRowCells(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(0,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcTableRow::IsHeading() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } bool v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcTableRow::setIsHeading(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTableRow::declaration() const { return *IFC4X3_RC2_IfcTableRow_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTableRow::Class() { return *IFC4X3_RC2_IfcTableRow_type; }
Ifc4x3_rc2::IfcTableRow::IfcTableRow(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTableRow_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTableRow::IfcTableRow(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr > v1_RowCells, boost::optional< bool > v2_IsHeading) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTableRow_type);  if (v1_RowCells) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((*v1_RowCells)->generalize());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_rc2::IfcTankTypeEnum::Value > Ifc4x3_rc2::IfcTank::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTankTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcTank::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTankTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTankTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTank::declaration() const { return *IFC4X3_RC2_IfcTank_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTank::Class() { return *IFC4X3_RC2_IfcTank_type; }
Ifc4x3_rc2::IfcTank::IfcTank(IfcEntityInstanceData* e) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTank_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTank::IfcTank(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcTankTypeEnum::Value > v9_PredefinedType) : IfcFlowStorageDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTankTypeEnum::Value Ifc4x3_rc2::IfcTankType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTankTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTankType::setPredefinedType(::Ifc4x3_rc2::IfcTankTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTankTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTankType::declaration() const { return *IFC4X3_RC2_IfcTankType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTankType::Class() { return *IFC4X3_RC2_IfcTankType_type; }
Ifc4x3_rc2::IfcTankType::IfcTankType(IfcEntityInstanceData* e) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTankType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTankType::IfcTankType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTankTypeEnum::Value v10_PredefinedType) : IfcFlowStorageDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTankTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTask
boost::optional< std::string > Ifc4x3_rc2::IfcTask::Status() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTask::setStatus(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTask::WorkMethod() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcTask::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
bool Ifc4x3_rc2::IfcTask::IsMilestone() const {  bool v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcTask::setIsMilestone(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }
boost::optional< int > Ifc4x3_rc2::IfcTask::Priority() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } int v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcTask::setPriority(boost::optional< int > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
::Ifc4x3_rc2::IfcTaskTime* Ifc4x3_rc2::IfcTask::TaskTime() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(11)))->as<::Ifc4x3_rc2::IfcTaskTime>(true); }
void Ifc4x3_rc2::IfcTask::setTaskTime(::Ifc4x3_rc2::IfcTaskTime* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcTaskTypeEnum::Value > Ifc4x3_rc2::IfcTask::PredefinedType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTaskTypeEnum::FromString(*data_->getArgument(12)); }
void Ifc4x3_rc2::IfcTask::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTaskTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTaskTypeEnum::ToString(*v)));}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTask::declaration() const { return *IFC4X3_RC2_IfcTask_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTask::Class() { return *IFC4X3_RC2_IfcTask_type; }
Ifc4x3_rc2::IfcTask::IfcTask(IfcEntityInstanceData* e) : IfcProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTask_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTask::IfcTask(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcTaskTime* v12_TaskTime, boost::optional< ::Ifc4x3_rc2::IfcTaskTypeEnum::Value > v13_PredefinedType) : IfcProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTaskDurationEnum::Value > Ifc4x3_rc2::IfcTaskTime::DurationType() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTaskDurationEnum::FromString(*data_->getArgument(3)); }
void Ifc4x3_rc2::IfcTaskTime::setDurationType(boost::optional< ::Ifc4x3_rc2::IfcTaskDurationEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTaskDurationEnum::ToString(*v)));}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ScheduleDuration() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTaskTime::setScheduleDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ScheduleStart() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTaskTime::setScheduleStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ScheduleFinish() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTaskTime::setScheduleFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::EarlyStart() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTaskTime::setEarlyStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::EarlyFinish() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcTaskTime::setEarlyFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::LateStart() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcTaskTime::setLateStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::LateFinish() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcTaskTime::setLateFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::FreeFloat() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcTaskTime::setFreeFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::TotalFloat() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcTaskTime::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcTaskTime::IsCritical() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } bool v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcTaskTime::setIsCritical(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::StatusTime() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } std::string v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcTaskTime::setStatusTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ActualDuration() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } std::string v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcTaskTime::setActualDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ActualStart() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } std::string v = *data_->getArgument(16); return v; }
void Ifc4x3_rc2::IfcTaskTime::setActualStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::ActualFinish() const { if(!data_->getArgument(17) || data_->getArgument(17)->isNull()) { return boost::none; } std::string v = *data_->getArgument(17); return v; }
void Ifc4x3_rc2::IfcTaskTime::setActualFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(17,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskTime::RemainingTime() const { if(!data_->getArgument(18) || data_->getArgument(18)->isNull()) { return boost::none; } std::string v = *data_->getArgument(18); return v; }
void Ifc4x3_rc2::IfcTaskTime::setRemainingTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(18,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTaskTime::Completion() const { if(!data_->getArgument(19) || data_->getArgument(19)->isNull()) { return boost::none; } double v = *data_->getArgument(19); return v; }
void Ifc4x3_rc2::IfcTaskTime::setCompletion(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(19,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTaskTime::declaration() const { return *IFC4X3_RC2_IfcTaskTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTaskTime::Class() { return *IFC4X3_RC2_IfcTaskTime_type; }
Ifc4x3_rc2::IfcTaskTime::IfcTaskTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTaskTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTaskTime::IfcTaskTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::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_rc2::IfcRecurrencePattern* Ifc4x3_rc2::IfcTaskTimeRecurring::Recurrence() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(20)))->as<::Ifc4x3_rc2::IfcRecurrencePattern>(true); }
void Ifc4x3_rc2::IfcTaskTimeRecurring::setRecurrence(::Ifc4x3_rc2::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(20,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTaskTimeRecurring::declaration() const { return *IFC4X3_RC2_IfcTaskTimeRecurring_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTaskTimeRecurring::Class() { return *IFC4X3_RC2_IfcTaskTimeRecurring_type; }
Ifc4x3_rc2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(IfcEntityInstanceData* e) : IfcTaskTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTaskTimeRecurring_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTaskTimeRecurring::IfcTaskTimeRecurring(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, boost::optional< ::Ifc4x3_rc2::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_rc2::IfcRecurrencePattern* v21_Recurrence) : IfcTaskTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcTaskTypeEnum::Value Ifc4x3_rc2::IfcTaskType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTaskTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTaskType::setPredefinedType(::Ifc4x3_rc2::IfcTaskTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTaskTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTaskType::WorkMethod() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcTaskType::setWorkMethod(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTaskType::declaration() const { return *IFC4X3_RC2_IfcTaskType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTaskType::Class() { return *IFC4X3_RC2_IfcTaskType_type; }
Ifc4x3_rc2::IfcTaskType::IfcTaskType(IfcEntityInstanceData* e) : IfcTypeProcess((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTaskType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTaskType::IfcTaskType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< std::string > v7_Identification, boost::optional< std::string > v8_LongDescription, boost::optional< std::string > v9_ProcessType, ::Ifc4x3_rc2::IfcTaskTypeEnum::Value v10_PredefinedType, boost::optional< std::string > v11_WorkMethod) : IfcTypeProcess((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcTelecomAddress::setTelephoneNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcTelecomAddress::setFacsimileNumbers(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTelecomAddress::PagerNumber() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTelecomAddress::setPagerNumber(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcTelecomAddress::setElectronicMailAddresses(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTelecomAddress::WWWHomePageURL() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTelecomAddress::setWWWHomePageURL(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::vector< std::string > /*[1:?]*/ > Ifc4x3_rc2::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_rc2::IfcTelecomAddress::setMessagingIDs(boost::optional< std::vector< std::string > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTelecomAddress::declaration() const { return *IFC4X3_RC2_IfcTelecomAddress_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTelecomAddress::Class() { return *IFC4X3_RC2_IfcTelecomAddress_type; }
Ifc4x3_rc2::IfcTelecomAddress::IfcTelecomAddress(IfcEntityInstanceData* e) : IfcAddress((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTelecomAddress_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTelecomAddress::IfcTelecomAddress(boost::optional< ::Ifc4x3_rc2::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_RC2_IfcTelecomAddress_type);  if (v1_Purpose) {{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(*v1_Purpose,::Ifc4x3_rc2::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_rc2::IfcTendonTypeEnum::Value > Ifc4x3_rc2::IfcTendon::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTendon::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTendonTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTendonTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcTendon::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcTendon::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::TensionForce() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcTendon::setTensionForce(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::PreStress() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcTendon::setPreStress(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::FrictionCoefficient() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcTendon::setFrictionCoefficient(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::AnchorageSlip() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcTendon::setAnchorageSlip(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendon::MinCurvatureRadius() const { if(!data_->getArgument(16) || data_->getArgument(16)->isNull()) { return boost::none; } double v = *data_->getArgument(16); return v; }
void Ifc4x3_rc2::IfcTendon::setMinCurvatureRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(16,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTendon::declaration() const { return *IFC4X3_RC2_IfcTendon_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTendon::Class() { return *IFC4X3_RC2_IfcTendon_type; }
Ifc4x3_rc2::IfcTendon::IfcTendon(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTendon_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTendon::IfcTendon(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::IfcTendonAnchorTypeEnum::Value > Ifc4x3_rc2::IfcTendonAnchor::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTendonAnchor::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTendonAnchor::declaration() const { return *IFC4X3_RC2_IfcTendonAnchor_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTendonAnchor::Class() { return *IFC4X3_RC2_IfcTendonAnchor_type; }
Ifc4x3_rc2::IfcTendonAnchor::IfcTendonAnchor(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTendonAnchor_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTendonAnchor::IfcTendonAnchor(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, boost::optional< ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value > v10_PredefinedType) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTendonAnchorTypeEnum::Value Ifc4x3_rc2::IfcTendonAnchorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTendonAnchorType::setPredefinedType(::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTendonAnchorType::declaration() const { return *IFC4X3_RC2_IfcTendonAnchorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTendonAnchorType::Class() { return *IFC4X3_RC2_IfcTendonAnchorType_type; }
Ifc4x3_rc2::IfcTendonAnchorType::IfcTendonAnchorType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTendonAnchorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTendonAnchorType::IfcTendonAnchorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTendonAnchorTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTendonAnchorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTendonConduit
::Ifc4x3_rc2::IfcTendonConduitTypeEnum::Value Ifc4x3_rc2::IfcTendonConduit::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTendonConduit::setPredefinedType(::Ifc4x3_rc2::IfcTendonConduitTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTendonConduitTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTendonConduit::declaration() const { return *IFC4X3_RC2_IfcTendonConduit_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTendonConduit::Class() { return *IFC4X3_RC2_IfcTendonConduit_type; }
Ifc4x3_rc2::IfcTendonConduit::IfcTendonConduit(IfcEntityInstanceData* e) : IfcReinforcingElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTendonConduit_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTendonConduit::IfcTendonConduit(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_SteelGrade, ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::Value v10_PredefinedType) : IfcReinforcingElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTendonConduitTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTendonConduitType
::Ifc4x3_rc2::IfcTendonConduitTypeEnum::Value Ifc4x3_rc2::IfcTendonConduitType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTendonConduitType::setPredefinedType(::Ifc4x3_rc2::IfcTendonConduitTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTendonConduitTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTendonConduitType::declaration() const { return *IFC4X3_RC2_IfcTendonConduitType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTendonConduitType::Class() { return *IFC4X3_RC2_IfcTendonConduitType_type; }
Ifc4x3_rc2::IfcTendonConduitType::IfcTendonConduitType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTendonConduitType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTendonConduitType::IfcTendonConduitType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTendonConduitTypeEnum::Value v10_PredefinedType) : IfcReinforcingElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTendonConduitTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTendonType
::Ifc4x3_rc2::IfcTendonTypeEnum::Value Ifc4x3_rc2::IfcTendonType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTendonTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTendonType::setPredefinedType(::Ifc4x3_rc2::IfcTendonTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTendonTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendonType::NominalDiameter() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcTendonType::setNominalDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendonType::CrossSectionArea() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcTendonType::setCrossSectionArea(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTendonType::SheathDiameter() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } double v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcTendonType::setSheathDiameter(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTendonType::declaration() const { return *IFC4X3_RC2_IfcTendonType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTendonType::Class() { return *IFC4X3_RC2_IfcTendonType_type; }
Ifc4x3_rc2::IfcTendonType::IfcTendonType(IfcEntityInstanceData* e) : IfcReinforcingElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTendonType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTendonType::IfcTendonType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::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_RC2_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_rc2::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_rc2::IfcCartesianPointList3D* Ifc4x3_rc2::IfcTessellatedFaceSet::Coordinates() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCartesianPointList3D>(true); }
void Ifc4x3_rc2::IfcTessellatedFaceSet::setCoordinates(::Ifc4x3_rc2::IfcCartesianPointList3D* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }

::Ifc4x3_rc2::IfcIndexedColourMap::list::ptr Ifc4x3_rc2::IfcTessellatedFaceSet::HasColours() const { return data_->getInverse(IFC4X3_RC2_IfcIndexedColourMap_type, 0)->as<IfcIndexedColourMap>(); }
::Ifc4x3_rc2::IfcIndexedTextureMap::list::ptr Ifc4x3_rc2::IfcTessellatedFaceSet::HasTextures() const { return data_->getInverse(IFC4X3_RC2_IfcIndexedTextureMap_type, 1)->as<IfcIndexedTextureMap>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcTessellatedFaceSet::declaration() const { return *IFC4X3_RC2_IfcTessellatedFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTessellatedFaceSet::Class() { return *IFC4X3_RC2_IfcTessellatedFaceSet_type; }
Ifc4x3_rc2::IfcTessellatedFaceSet::IfcTessellatedFaceSet(IfcEntityInstanceData* e) : IfcTessellatedItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTessellatedFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTessellatedFaceSet::IfcTessellatedFaceSet(::Ifc4x3_rc2::IfcCartesianPointList3D* v1_Coordinates) : IfcTessellatedItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTessellatedFaceSet_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Coordinates));data_->setArgument(0,attr);} }

// Function implementations for IfcTessellatedItem


const IfcParse::entity& Ifc4x3_rc2::IfcTessellatedItem::declaration() const { return *IFC4X3_RC2_IfcTessellatedItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTessellatedItem::Class() { return *IFC4X3_RC2_IfcTessellatedItem_type; }
Ifc4x3_rc2::IfcTessellatedItem::IfcTessellatedItem(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTessellatedItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTessellatedItem::IfcTessellatedItem() : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTessellatedItem_type);  }

// Function implementations for IfcTextLiteral
std::string Ifc4x3_rc2::IfcTextLiteral::Literal() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcTextLiteral::setLiteral(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcAxis2Placement* Ifc4x3_rc2::IfcTextLiteral::Placement() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcAxis2Placement>(true); }
void Ifc4x3_rc2::IfcTextLiteral::setPlacement(::Ifc4x3_rc2::IfcAxis2Placement* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcTextPath::Value Ifc4x3_rc2::IfcTextLiteral::Path() const {  return ::Ifc4x3_rc2::IfcTextPath::FromString(*data_->getArgument(2)); }
void Ifc4x3_rc2::IfcTextLiteral::setPath(::Ifc4x3_rc2::IfcTextPath::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTextPath::ToString(v)));data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextLiteral::declaration() const { return *IFC4X3_RC2_IfcTextLiteral_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextLiteral::Class() { return *IFC4X3_RC2_IfcTextLiteral_type; }
Ifc4x3_rc2::IfcTextLiteral::IfcTextLiteral(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextLiteral_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextLiteral::IfcTextLiteral(std::string v1_Literal, ::Ifc4x3_rc2::IfcAxis2Placement* v2_Placement, ::Ifc4x3_rc2::IfcTextPath::Value v3_Path) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTextPath::ToString(v3_Path))));data_->setArgument(2,attr);} }

// Function implementations for IfcTextLiteralWithExtent
::Ifc4x3_rc2::IfcPlanarExtent* Ifc4x3_rc2::IfcTextLiteralWithExtent::Extent() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcPlanarExtent>(true); }
void Ifc4x3_rc2::IfcTextLiteralWithExtent::setExtent(::Ifc4x3_rc2::IfcPlanarExtent* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
std::string Ifc4x3_rc2::IfcTextLiteralWithExtent::BoxAlignment() const {  std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTextLiteralWithExtent::setBoxAlignment(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextLiteralWithExtent::declaration() const { return *IFC4X3_RC2_IfcTextLiteralWithExtent_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextLiteralWithExtent::Class() { return *IFC4X3_RC2_IfcTextLiteralWithExtent_type; }
Ifc4x3_rc2::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(IfcEntityInstanceData* e) : IfcTextLiteral((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextLiteralWithExtent_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextLiteralWithExtent::IfcTextLiteralWithExtent(std::string v1_Literal, ::Ifc4x3_rc2::IfcAxis2Placement* v2_Placement, ::Ifc4x3_rc2::IfcTextPath::Value v3_Path, ::Ifc4x3_rc2::IfcPlanarExtent* v4_Extent, std::string v5_BoxAlignment) : IfcTextLiteral((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTextStyleForDefinedFont* Ifc4x3_rc2::IfcTextStyle::TextCharacterAppearance() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcTextStyleForDefinedFont>(true); }
void Ifc4x3_rc2::IfcTextStyle::setTextCharacterAppearance(::Ifc4x3_rc2::IfcTextStyleForDefinedFont* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcTextStyleTextModel* Ifc4x3_rc2::IfcTextStyle::TextStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcTextStyleTextModel>(true); }
void Ifc4x3_rc2::IfcTextStyle::setTextStyle(::Ifc4x3_rc2::IfcTextStyleTextModel* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcTextFontSelect* Ifc4x3_rc2::IfcTextStyle::TextFontStyle() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcTextFontSelect>(true); }
void Ifc4x3_rc2::IfcTextStyle::setTextFontStyle(::Ifc4x3_rc2::IfcTextFontSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcTextStyle::ModelOrDraughting() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } bool v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTextStyle::setModelOrDraughting(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextStyle::declaration() const { return *IFC4X3_RC2_IfcTextStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextStyle::Class() { return *IFC4X3_RC2_IfcTextStyle_type; }
Ifc4x3_rc2::IfcTextStyle::IfcTextStyle(IfcEntityInstanceData* e) : IfcPresentationStyle((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextStyle::IfcTextStyle(boost::optional< std::string > v1_Name, ::Ifc4x3_rc2::IfcTextStyleForDefinedFont* v2_TextCharacterAppearance, ::Ifc4x3_rc2::IfcTextStyleTextModel* v3_TextStyle, ::Ifc4x3_rc2::IfcTextFontSelect* v4_TextFontStyle, boost::optional< bool > v5_ModelOrDraughting) : IfcPresentationStyle((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTextStyleFontModel::FontFamily() const {  std::vector< std::string > /*[1:?]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::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_rc2::IfcTextStyleFontModel::FontStyle() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcTextStyleFontModel::setFontStyle(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleFontModel::FontVariant() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcTextStyleFontModel::setFontVariant(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleFontModel::FontWeight() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTextStyleFontModel::setFontWeight(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleFontModel::FontSize() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(5)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); }
void Ifc4x3_rc2::IfcTextStyleFontModel::setFontSize(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextStyleFontModel::declaration() const { return *IFC4X3_RC2_IfcTextStyleFontModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextStyleFontModel::Class() { return *IFC4X3_RC2_IfcTextStyleFontModel_type; }
Ifc4x3_rc2::IfcTextStyleFontModel::IfcTextStyleFontModel(IfcEntityInstanceData* e) : IfcPreDefinedTextFont((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextStyleFontModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::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_rc2::IfcSizeSelect* v6_FontSize) : IfcPreDefinedTextFont((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcColour* Ifc4x3_rc2::IfcTextStyleForDefinedFont::Colour() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcColour>(true); }
void Ifc4x3_rc2::IfcTextStyleForDefinedFont::setColour(::Ifc4x3_rc2::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
::Ifc4x3_rc2::IfcColour* Ifc4x3_rc2::IfcTextStyleForDefinedFont::BackgroundColour() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(1)))->as<::Ifc4x3_rc2::IfcColour>(true); }
void Ifc4x3_rc2::IfcTextStyleForDefinedFont::setBackgroundColour(::Ifc4x3_rc2::IfcColour* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextStyleForDefinedFont::declaration() const { return *IFC4X3_RC2_IfcTextStyleForDefinedFont_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextStyleForDefinedFont::Class() { return *IFC4X3_RC2_IfcTextStyleForDefinedFont_type; }
Ifc4x3_rc2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextStyleForDefinedFont_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextStyleForDefinedFont::IfcTextStyleForDefinedFont(::Ifc4x3_rc2::IfcColour* v1_Colour, ::Ifc4x3_rc2::IfcColour* v2_BackgroundColour) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::TextIndent() const { if(!data_->getArgument(0) || data_->getArgument(0)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); }
void Ifc4x3_rc2::IfcTextStyleTextModel::setTextIndent(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleTextModel::TextAlign() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcTextStyleTextModel::setTextAlign(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleTextModel::TextDecoration() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcTextStyleTextModel::setTextDecoration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::LetterSpacing() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); }
void Ifc4x3_rc2::IfcTextStyleTextModel::setLetterSpacing(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::WordSpacing() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(4)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); }
void Ifc4x3_rc2::IfcTextStyleTextModel::setWordSpacing(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTextStyleTextModel::TextTransform() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTextStyleTextModel::setTextTransform(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
::Ifc4x3_rc2::IfcSizeSelect* Ifc4x3_rc2::IfcTextStyleTextModel::LineHeight() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(6)))->as<::Ifc4x3_rc2::IfcSizeSelect>(true); }
void Ifc4x3_rc2::IfcTextStyleTextModel::setLineHeight(::Ifc4x3_rc2::IfcSizeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextStyleTextModel::declaration() const { return *IFC4X3_RC2_IfcTextStyleTextModel_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextStyleTextModel::Class() { return *IFC4X3_RC2_IfcTextStyleTextModel_type; }
Ifc4x3_rc2::IfcTextStyleTextModel::IfcTextStyleTextModel(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextStyleTextModel_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextStyleTextModel::IfcTextStyleTextModel(::Ifc4x3_rc2::IfcSizeSelect* v1_TextIndent, boost::optional< std::string > v2_TextAlign, boost::optional< std::string > v3_TextDecoration, ::Ifc4x3_rc2::IfcSizeSelect* v4_LetterSpacing, ::Ifc4x3_rc2::IfcSizeSelect* v5_WordSpacing, boost::optional< std::string > v6_TextTransform, ::Ifc4x3_rc2::IfcSizeSelect* v7_LineHeight) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcSurfaceTexture >::ptr Ifc4x3_rc2::IfcTextureCoordinate::Maps() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcSurfaceTexture >(); }
void Ifc4x3_rc2::IfcTextureCoordinate::setMaps(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextureCoordinate::declaration() const { return *IFC4X3_RC2_IfcTextureCoordinate_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextureCoordinate::Class() { return *IFC4X3_RC2_IfcTextureCoordinate_type; }
Ifc4x3_rc2::IfcTextureCoordinate::IfcTextureCoordinate(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextureCoordinate_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextureCoordinate::IfcTextureCoordinate(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v1_Maps) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextureCoordinate_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Maps)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcTextureCoordinateGenerator
std::string Ifc4x3_rc2::IfcTextureCoordinateGenerator::Mode() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::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_rc2::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_rc2::IfcTextureCoordinateGenerator::setParameter(boost::optional< std::vector< double > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextureCoordinateGenerator::declaration() const { return *IFC4X3_RC2_IfcTextureCoordinateGenerator_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextureCoordinateGenerator::Class() { return *IFC4X3_RC2_IfcTextureCoordinateGenerator_type; }
Ifc4x3_rc2::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(IfcEntityInstanceData* e) : IfcTextureCoordinate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextureCoordinateGenerator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextureCoordinateGenerator::IfcTextureCoordinateGenerator(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v1_Maps, std::string v2_Mode, boost::optional< std::vector< double > /*[1:?]*/ > v3_Parameter) : IfcTextureCoordinate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTextureVertex >::ptr Ifc4x3_rc2::IfcTextureMap::Vertices() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcTextureVertex >(); }
void Ifc4x3_rc2::IfcTextureMap::setVertices(aggregate_of< ::Ifc4x3_rc2::IfcTextureVertex >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
::Ifc4x3_rc2::IfcFace* Ifc4x3_rc2::IfcTextureMap::MappedTo() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(2)))->as<::Ifc4x3_rc2::IfcFace>(true); }
void Ifc4x3_rc2::IfcTextureMap::setMappedTo(::Ifc4x3_rc2::IfcFace* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTextureMap::declaration() const { return *IFC4X3_RC2_IfcTextureMap_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextureMap::Class() { return *IFC4X3_RC2_IfcTextureMap_type; }
Ifc4x3_rc2::IfcTextureMap::IfcTextureMap(IfcEntityInstanceData* e) : IfcTextureCoordinate((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextureMap_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextureMap::IfcTextureMap(aggregate_of< ::Ifc4x3_rc2::IfcSurfaceTexture >::ptr v1_Maps, aggregate_of< ::Ifc4x3_rc2::IfcTextureVertex >::ptr v2_Vertices, ::Ifc4x3_rc2::IfcFace* v3_MappedTo) : IfcTextureCoordinate((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTextureVertex::Coordinates() const {  std::vector< double > /*[2:2]*/ v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::IfcTextureVertex::declaration() const { return *IFC4X3_RC2_IfcTextureVertex_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextureVertex::Class() { return *IFC4X3_RC2_IfcTextureVertex_type; }
Ifc4x3_rc2::IfcTextureVertex::IfcTextureVertex(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextureVertex_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextureVertex::IfcTextureVertex(std::vector< double > /*[2:2]*/ v1_Coordinates) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTextureVertexList::TexCoordsList() const {  std::vector< std::vector< double > > v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::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_rc2::IfcTextureVertexList::declaration() const { return *IFC4X3_RC2_IfcTextureVertexList_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTextureVertexList::Class() { return *IFC4X3_RC2_IfcTextureVertexList_type; }
Ifc4x3_rc2::IfcTextureVertexList::IfcTextureVertexList(IfcEntityInstanceData* e) : IfcPresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTextureVertexList_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTextureVertexList::IfcTextureVertexList(std::vector< std::vector< double > > v1_TexCoordsList) : IfcPresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTextureVertexList_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_TexCoordsList));data_->setArgument(0,attr);} }

// Function implementations for IfcTimePeriod
std::string Ifc4x3_rc2::IfcTimePeriod::StartTime() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcTimePeriod::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
std::string Ifc4x3_rc2::IfcTimePeriod::EndTime() const {  std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcTimePeriod::setEndTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTimePeriod::declaration() const { return *IFC4X3_RC2_IfcTimePeriod_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTimePeriod::Class() { return *IFC4X3_RC2_IfcTimePeriod_type; }
Ifc4x3_rc2::IfcTimePeriod::IfcTimePeriod(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTimePeriod_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTimePeriod::IfcTimePeriod(std::string v1_StartTime, std::string v2_EndTime) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTimeSeries::Name() const {  std::string v = *data_->getArgument(0); return v; }
void Ifc4x3_rc2::IfcTimeSeries::setName(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTimeSeries::Description() const { if(!data_->getArgument(1) || data_->getArgument(1)->isNull()) { return boost::none; } std::string v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcTimeSeries::setDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
std::string Ifc4x3_rc2::IfcTimeSeries::StartTime() const {  std::string v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcTimeSeries::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }
std::string Ifc4x3_rc2::IfcTimeSeries::EndTime() const {  std::string v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcTimeSeries::setEndTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::Value Ifc4x3_rc2::IfcTimeSeries::TimeSeriesDataType() const {  return ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcTimeSeries::setTimeSeriesDataType(::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::ToString(v)));data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcDataOriginEnum::Value Ifc4x3_rc2::IfcTimeSeries::DataOrigin() const {  return ::Ifc4x3_rc2::IfcDataOriginEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcTimeSeries::setDataOrigin(::Ifc4x3_rc2::IfcDataOriginEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcDataOriginEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTimeSeries::UserDefinedDataOrigin() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTimeSeries::setUserDefinedDataOrigin(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcUnit* Ifc4x3_rc2::IfcTimeSeries::Unit() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(7)))->as<::Ifc4x3_rc2::IfcUnit>(true); }
void Ifc4x3_rc2::IfcTimeSeries::setUnit(::Ifc4x3_rc2::IfcUnit* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(7,attr);} }

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

const IfcParse::entity& Ifc4x3_rc2::IfcTimeSeries::declaration() const { return *IFC4X3_RC2_IfcTimeSeries_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTimeSeries::Class() { return *IFC4X3_RC2_IfcTimeSeries_type; }
Ifc4x3_rc2::IfcTimeSeries::IfcTimeSeries(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTimeSeries_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTimeSeries::IfcTimeSeries(std::string v1_Name, boost::optional< std::string > v2_Description, std::string v3_StartTime, std::string v4_EndTime, ::Ifc4x3_rc2::IfcTimeSeriesDataTypeEnum::Value v5_TimeSeriesDataType, ::Ifc4x3_rc2::IfcDataOriginEnum::Value v6_DataOrigin, boost::optional< std::string > v7_UserDefinedDataOrigin, ::Ifc4x3_rc2::IfcUnit* v8_Unit) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTimeSeriesDataTypeEnum::ToString(v5_TimeSeriesDataType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_DataOrigin,::Ifc4x3_rc2::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< ::Ifc4x3_rc2::IfcValue >::ptr Ifc4x3_rc2::IfcTimeSeriesValue::ListValues() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcValue >(); }
void Ifc4x3_rc2::IfcTimeSeriesValue::setListValues(aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTimeSeriesValue::declaration() const { return *IFC4X3_RC2_IfcTimeSeriesValue_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTimeSeriesValue::Class() { return *IFC4X3_RC2_IfcTimeSeriesValue_type; }
Ifc4x3_rc2::IfcTimeSeriesValue::IfcTimeSeriesValue(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTimeSeriesValue_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTimeSeriesValue::IfcTimeSeriesValue(aggregate_of< ::Ifc4x3_rc2::IfcValue >::ptr v1_ListValues) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTimeSeriesValue_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_ListValues)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcTopologicalRepresentationItem


const IfcParse::entity& Ifc4x3_rc2::IfcTopologicalRepresentationItem::declaration() const { return *IFC4X3_RC2_IfcTopologicalRepresentationItem_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTopologicalRepresentationItem::Class() { return *IFC4X3_RC2_IfcTopologicalRepresentationItem_type; }
Ifc4x3_rc2::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem(IfcEntityInstanceData* e) : IfcRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTopologicalRepresentationItem_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTopologicalRepresentationItem::IfcTopologicalRepresentationItem() : IfcRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTopologicalRepresentationItem_type);  }

// Function implementations for IfcTopologyRepresentation


const IfcParse::entity& Ifc4x3_rc2::IfcTopologyRepresentation::declaration() const { return *IFC4X3_RC2_IfcTopologyRepresentation_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTopologyRepresentation::Class() { return *IFC4X3_RC2_IfcTopologyRepresentation_type; }
Ifc4x3_rc2::IfcTopologyRepresentation::IfcTopologyRepresentation(IfcEntityInstanceData* e) : IfcShapeModel((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTopologyRepresentation_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTopologyRepresentation::IfcTopologyRepresentation(::Ifc4x3_rc2::IfcRepresentationContext* v1_ContextOfItems, boost::optional< std::string > v2_RepresentationIdentifier, boost::optional< std::string > v3_RepresentationType, aggregate_of< ::Ifc4x3_rc2::IfcRepresentationItem >::ptr v4_Items) : IfcShapeModel((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcToroidalSurface::MajorRadius() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcToroidalSurface::setMajorRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }
double Ifc4x3_rc2::IfcToroidalSurface::MinorRadius() const {  double v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcToroidalSurface::setMinorRadius(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(2,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcToroidalSurface::declaration() const { return *IFC4X3_RC2_IfcToroidalSurface_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcToroidalSurface::Class() { return *IFC4X3_RC2_IfcToroidalSurface_type; }
Ifc4x3_rc2::IfcToroidalSurface::IfcToroidalSurface(IfcEntityInstanceData* e) : IfcElementarySurface((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcToroidalSurface_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcToroidalSurface::IfcToroidalSurface(::Ifc4x3_rc2::IfcAxis2Placement3D* v1_Position, double v2_MajorRadius, double v3_MinorRadius) : IfcElementarySurface((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTrackElementTypeEnum::Value > Ifc4x3_rc2::IfcTrackElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcTrackElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTrackElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTrackElement::declaration() const { return *IFC4X3_RC2_IfcTrackElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTrackElement::Class() { return *IFC4X3_RC2_IfcTrackElement_type; }
Ifc4x3_rc2::IfcTrackElement::IfcTrackElement(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTrackElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTrackElement::IfcTrackElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTrackElementTypeEnum::Value Ifc4x3_rc2::IfcTrackElementType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTrackElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTrackElementType::setPredefinedType(::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTrackElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTrackElementType::declaration() const { return *IFC4X3_RC2_IfcTrackElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTrackElementType::Class() { return *IFC4X3_RC2_IfcTrackElementType_type; }
Ifc4x3_rc2::IfcTrackElementType::IfcTrackElementType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTrackElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTrackElementType::IfcTrackElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTrackElementTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTrackElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTransformer
boost::optional< ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value > Ifc4x3_rc2::IfcTransformer::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTransformerTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcTransformer::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTransformerTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTransformer::declaration() const { return *IFC4X3_RC2_IfcTransformer_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTransformer::Class() { return *IFC4X3_RC2_IfcTransformer_type; }
Ifc4x3_rc2::IfcTransformer::IfcTransformer(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTransformer_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTransformer::IfcTransformer(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTransformerTypeEnum::Value Ifc4x3_rc2::IfcTransformerType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTransformerTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTransformerType::setPredefinedType(::Ifc4x3_rc2::IfcTransformerTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTransformerTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTransformerType::declaration() const { return *IFC4X3_RC2_IfcTransformerType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTransformerType::Class() { return *IFC4X3_RC2_IfcTransformerType_type; }
Ifc4x3_rc2::IfcTransformerType::IfcTransformerType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTransformerType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTransformerType::IfcTransformerType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTransformerTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTransformerTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTransitionCurveSegment2D
boost::optional< double > Ifc4x3_rc2::IfcTransitionCurveSegment2D::StartRadius() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return boost::none; } double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setStartRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(3,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcTransitionCurveSegment2D::EndRadius() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setEndRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
bool Ifc4x3_rc2::IfcTransitionCurveSegment2D::IsStartRadiusCCW() const {  bool v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setIsStartRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
bool Ifc4x3_rc2::IfcTransitionCurveSegment2D::IsEndRadiusCCW() const {  bool v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setIsEndRadiusCCW(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
::Ifc4x3_rc2::IfcTransitionCurveType::Value Ifc4x3_rc2::IfcTransitionCurveSegment2D::TransitionCurveType() const {  return ::Ifc4x3_rc2::IfcTransitionCurveType::FromString(*data_->getArgument(7)); }
void Ifc4x3_rc2::IfcTransitionCurveSegment2D::setTransitionCurveType(::Ifc4x3_rc2::IfcTransitionCurveType::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTransitionCurveType::ToString(v)));data_->setArgument(7,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTransitionCurveSegment2D::declaration() const { return *IFC4X3_RC2_IfcTransitionCurveSegment2D_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTransitionCurveSegment2D::Class() { return *IFC4X3_RC2_IfcTransitionCurveSegment2D_type; }
Ifc4x3_rc2::IfcTransitionCurveSegment2D::IfcTransitionCurveSegment2D(IfcEntityInstanceData* e) : IfcCurveSegment2D((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTransitionCurveSegment2D_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTransitionCurveSegment2D::IfcTransitionCurveSegment2D(::Ifc4x3_rc2::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_rc2::IfcTransitionCurveType::Value v8_TransitionCurveType) : IfcCurveSegment2D((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTransitionCurveType::ToString(v8_TransitionCurveType))));data_->setArgument(7,attr);} }

// Function implementations for IfcTransportElement
::Ifc4x3_rc2::IfcTransportElementTypeSelect* Ifc4x3_rc2::IfcTransportElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcTransportElementTypeSelect>(true); }
void Ifc4x3_rc2::IfcTransportElement::setPredefinedType(::Ifc4x3_rc2::IfcTransportElementTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTransportElement::declaration() const { return *IFC4X3_RC2_IfcTransportElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTransportElement::Class() { return *IFC4X3_RC2_IfcTransportElement_type; }
Ifc4x3_rc2::IfcTransportElement::IfcTransportElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTransportElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTransportElement::IfcTransportElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc2::IfcTransportElementTypeSelect* v9_PredefinedType) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTransportElementTypeSelect* Ifc4x3_rc2::IfcTransportElementType::PredefinedType() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(9)))->as<::Ifc4x3_rc2::IfcTransportElementTypeSelect>(true); }
void Ifc4x3_rc2::IfcTransportElementType::setPredefinedType(::Ifc4x3_rc2::IfcTransportElementTypeSelect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTransportElementType::declaration() const { return *IFC4X3_RC2_IfcTransportElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTransportElementType::Class() { return *IFC4X3_RC2_IfcTransportElementType_type; }
Ifc4x3_rc2::IfcTransportElementType::IfcTransportElementType(IfcEntityInstanceData* e) : IfcElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTransportElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTransportElementType::IfcTransportElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTransportElementTypeSelect* v10_PredefinedType) : IfcElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTrapeziumProfileDef::BottomXDim() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcTrapeziumProfileDef::setBottomXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcTrapeziumProfileDef::TopXDim() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTrapeziumProfileDef::setTopXDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcTrapeziumProfileDef::YDim() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTrapeziumProfileDef::setYDim(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcTrapeziumProfileDef::TopXOffset() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTrapeziumProfileDef::setTopXOffset(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTrapeziumProfileDef::declaration() const { return *IFC4X3_RC2_IfcTrapeziumProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTrapeziumProfileDef::Class() { return *IFC4X3_RC2_IfcTrapeziumProfileDef_type; }
Ifc4x3_rc2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTrapeziumProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTrapeziumProfileDef::IfcTrapeziumProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::IfcAxis2Placement2D* v3_Position, double v4_BottomXDim, double v5_TopXDim, double v6_YDim, double v7_TopXOffset) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcTrapeziumProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::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_rc2::IfcTriangulatedFaceSet::setNormals(boost::optional< std::vector< std::vector< double > > > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(1,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcTriangulatedFaceSet::Closed() const { if(!data_->getArgument(2) || data_->getArgument(2)->isNull()) { return boost::none; } bool v = *data_->getArgument(2); return v; }
void Ifc4x3_rc2::IfcTriangulatedFaceSet::setClosed(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(2,attr);} }
std::vector< std::vector< int > > Ifc4x3_rc2::IfcTriangulatedFaceSet::CoordIndex() const {  std::vector< std::vector< int > > v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::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_rc2::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_rc2::IfcTriangulatedFaceSet::setPnIndex(boost::optional< std::vector< int > /*[1:?]*/ > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTriangulatedFaceSet::declaration() const { return *IFC4X3_RC2_IfcTriangulatedFaceSet_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTriangulatedFaceSet::Class() { return *IFC4X3_RC2_IfcTriangulatedFaceSet_type; }
Ifc4x3_rc2::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(IfcEntityInstanceData* e) : IfcTessellatedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTriangulatedFaceSet_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTriangulatedFaceSet::IfcTriangulatedFaceSet(::Ifc4x3_rc2::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_RC2_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_rc2::IfcTriangulatedIrregularNetwork::Flags() const {  std::vector< int > /*[1:?]*/ v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcTriangulatedIrregularNetwork::setFlags(std::vector< int > /*[1:?]*/ v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTriangulatedIrregularNetwork::declaration() const { return *IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTriangulatedIrregularNetwork::Class() { return *IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type; }
Ifc4x3_rc2::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(IfcEntityInstanceData* e) : IfcTriangulatedFaceSet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTriangulatedIrregularNetwork_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTriangulatedIrregularNetwork::IfcTriangulatedIrregularNetwork(::Ifc4x3_rc2::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_RC2_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_rc2::IfcCurve* Ifc4x3_rc2::IfcTrimmedCurve::BasisCurve() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcCurve>(true); }
void Ifc4x3_rc2::IfcTrimmedCurve::setBasisCurve(::Ifc4x3_rc2::IfcCurve* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcTrimmingSelect >::ptr Ifc4x3_rc2::IfcTrimmedCurve::Trim1() const {  aggregate_of_instance::ptr es = *data_->getArgument(1); return es->as< ::Ifc4x3_rc2::IfcTrimmingSelect >(); }
void Ifc4x3_rc2::IfcTrimmedCurve::setTrim1(aggregate_of< ::Ifc4x3_rc2::IfcTrimmingSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(1,attr);} }
aggregate_of< ::Ifc4x3_rc2::IfcTrimmingSelect >::ptr Ifc4x3_rc2::IfcTrimmedCurve::Trim2() const {  aggregate_of_instance::ptr es = *data_->getArgument(2); return es->as< ::Ifc4x3_rc2::IfcTrimmingSelect >(); }
void Ifc4x3_rc2::IfcTrimmedCurve::setTrim2(aggregate_of< ::Ifc4x3_rc2::IfcTrimmingSelect >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(2,attr);} }
bool Ifc4x3_rc2::IfcTrimmedCurve::SenseAgreement() const {  bool v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcTrimmedCurve::setSenseAgreement(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
::Ifc4x3_rc2::IfcTrimmingPreference::Value Ifc4x3_rc2::IfcTrimmedCurve::MasterRepresentation() const {  return ::Ifc4x3_rc2::IfcTrimmingPreference::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcTrimmedCurve::setMasterRepresentation(::Ifc4x3_rc2::IfcTrimmingPreference::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTrimmingPreference::ToString(v)));data_->setArgument(4,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTrimmedCurve::declaration() const { return *IFC4X3_RC2_IfcTrimmedCurve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTrimmedCurve::Class() { return *IFC4X3_RC2_IfcTrimmedCurve_type; }
Ifc4x3_rc2::IfcTrimmedCurve::IfcTrimmedCurve(IfcEntityInstanceData* e) : IfcBoundedCurve((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTrimmedCurve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTrimmedCurve::IfcTrimmedCurve(::Ifc4x3_rc2::IfcCurve* v1_BasisCurve, aggregate_of< ::Ifc4x3_rc2::IfcTrimmingSelect >::ptr v2_Trim1, aggregate_of< ::Ifc4x3_rc2::IfcTrimmingSelect >::ptr v3_Trim2, bool v4_SenseAgreement, ::Ifc4x3_rc2::IfcTrimmingPreference::Value v5_MasterRepresentation) : IfcBoundedCurve((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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)->generalize());data_->setArgument(1,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v3_Trim2)->generalize());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_rc2::IfcTrimmingPreference::ToString(v5_MasterRepresentation))));data_->setArgument(4,attr);} }

// Function implementations for IfcTubeBundle
boost::optional< ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value > Ifc4x3_rc2::IfcTubeBundle::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcTubeBundle::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcTubeBundleTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTubeBundle::declaration() const { return *IFC4X3_RC2_IfcTubeBundle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTubeBundle::Class() { return *IFC4X3_RC2_IfcTubeBundle_type; }
Ifc4x3_rc2::IfcTubeBundle::IfcTubeBundle(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTubeBundle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTubeBundle::IfcTubeBundle(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcTubeBundleTypeEnum::Value Ifc4x3_rc2::IfcTubeBundleType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcTubeBundleType::setPredefinedType(::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcTubeBundleTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcTubeBundleType::declaration() const { return *IFC4X3_RC2_IfcTubeBundleType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTubeBundleType::Class() { return *IFC4X3_RC2_IfcTubeBundleType_type; }
Ifc4x3_rc2::IfcTubeBundleType::IfcTubeBundleType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTubeBundleType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTubeBundleType::IfcTubeBundleType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcTubeBundleTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTubeBundleTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcTypeObject
boost::optional< std::string > Ifc4x3_rc2::IfcTypeObject::ApplicableOccurrence() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcTypeObject::setApplicableOccurrence(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr > Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >(); }
void Ifc4x3_rc2::IfcTypeObject::setHasPropertySets(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPropertySetDefinition >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(5,attr);} }

::Ifc4x3_rc2::IfcRelDefinesByType::list::ptr Ifc4x3_rc2::IfcTypeObject::Types() const { return data_->getInverse(IFC4X3_RC2_IfcRelDefinesByType_type, 5)->as<IfcRelDefinesByType>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcTypeObject::declaration() const { return *IFC4X3_RC2_IfcTypeObject_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTypeObject::Class() { return *IFC4X3_RC2_IfcTypeObject_type; }
Ifc4x3_rc2::IfcTypeObject::IfcTypeObject(IfcEntityInstanceData* e) : IfcObjectDefinition((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTypeObject_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTypeObject::IfcTypeObject(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets) : IfcObjectDefinition((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTypeProcess::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTypeProcess::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTypeProcess::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTypeProcess::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTypeProcess::ProcessType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcTypeProcess::setProcessType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelAssignsToProcess::list::ptr Ifc4x3_rc2::IfcTypeProcess::OperatesOn() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToProcess_type, 6)->as<IfcRelAssignsToProcess>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcTypeProcess::declaration() const { return *IFC4X3_RC2_IfcTypeProcess_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTypeProcess::Class() { return *IFC4X3_RC2_IfcTypeProcess_type; }
Ifc4x3_rc2::IfcTypeProcess::IfcTypeProcess(IfcEntityInstanceData* e) : IfcTypeObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTypeProcess_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTypeProcess::IfcTypeProcess(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_RC2_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_rc2::IfcRepresentationMap >::ptr > Ifc4x3_rc2::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_rc2::IfcRepresentationMap >(); }
void Ifc4x3_rc2::IfcTypeProduct::setRepresentationMaps(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTypeProduct::Tag() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTypeProduct::setTag(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }

::Ifc4x3_rc2::IfcRelAssignsToProduct::list::ptr Ifc4x3_rc2::IfcTypeProduct::ReferencedBy() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToProduct_type, 6)->as<IfcRelAssignsToProduct>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcTypeProduct::declaration() const { return *IFC4X3_RC2_IfcTypeProduct_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTypeProduct::Class() { return *IFC4X3_RC2_IfcTypeProduct_type; }
Ifc4x3_rc2::IfcTypeProduct::IfcTypeProduct(IfcEntityInstanceData* e) : IfcTypeObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTypeProduct_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTypeProduct::IfcTypeProduct(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag) : IfcTypeObject((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcTypeResource::Identification() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcTypeResource::setIdentification(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTypeResource::LongDescription() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } std::string v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcTypeResource::setLongDescription(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcTypeResource::ResourceType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcTypeResource::setResourceType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }

::Ifc4x3_rc2::IfcRelAssignsToResource::list::ptr Ifc4x3_rc2::IfcTypeResource::ResourceOf() const { return data_->getInverse(IFC4X3_RC2_IfcRelAssignsToResource_type, 6)->as<IfcRelAssignsToResource>(); }

const IfcParse::entity& Ifc4x3_rc2::IfcTypeResource::declaration() const { return *IFC4X3_RC2_IfcTypeResource_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcTypeResource::Class() { return *IFC4X3_RC2_IfcTypeResource_type; }
Ifc4x3_rc2::IfcTypeResource::IfcTypeResource(IfcEntityInstanceData* e) : IfcTypeObject((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcTypeResource_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcTypeResource::IfcTypeResource(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_RC2_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_rc2::IfcUShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcUShapeProfileDef::FlangeWidth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcUShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcUShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcUShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcUShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcUShapeProfileDef::FlangeSlope() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcUShapeProfileDef::setFlangeSlope(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcUShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcUShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcUShapeProfileDef::Class() { return *IFC4X3_RC2_IfcUShapeProfileDef_type; }
Ifc4x3_rc2::IfcUShapeProfileDef::IfcUShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcUShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcUShapeProfileDef::IfcUShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcUShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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< ::Ifc4x3_rc2::IfcUnit >::ptr Ifc4x3_rc2::IfcUnitAssignment::Units() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcUnit >(); }
void Ifc4x3_rc2::IfcUnitAssignment::setUnits(aggregate_of< ::Ifc4x3_rc2::IfcUnit >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcUnitAssignment::declaration() const { return *IFC4X3_RC2_IfcUnitAssignment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcUnitAssignment::Class() { return *IFC4X3_RC2_IfcUnitAssignment_type; }
Ifc4x3_rc2::IfcUnitAssignment::IfcUnitAssignment(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcUnitAssignment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcUnitAssignment::IfcUnitAssignment(aggregate_of< ::Ifc4x3_rc2::IfcUnit >::ptr v1_Units) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcUnitAssignment_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_Units)->generalize());data_->setArgument(0,attr);} }

// Function implementations for IfcUnitaryControlElement
boost::optional< ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value > Ifc4x3_rc2::IfcUnitaryControlElement::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcUnitaryControlElement::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryControlElement::declaration() const { return *IFC4X3_RC2_IfcUnitaryControlElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryControlElement::Class() { return *IFC4X3_RC2_IfcUnitaryControlElement_type; }
Ifc4x3_rc2::IfcUnitaryControlElement::IfcUnitaryControlElement(IfcEntityInstanceData* e) : IfcDistributionControlElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcUnitaryControlElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcUnitaryControlElement::IfcUnitaryControlElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value > v9_PredefinedType) : IfcDistributionControlElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcUnitaryControlElementTypeEnum::Value Ifc4x3_rc2::IfcUnitaryControlElementType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcUnitaryControlElementType::setPredefinedType(::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryControlElementType::declaration() const { return *IFC4X3_RC2_IfcUnitaryControlElementType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryControlElementType::Class() { return *IFC4X3_RC2_IfcUnitaryControlElementType_type; }
Ifc4x3_rc2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(IfcEntityInstanceData* e) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcUnitaryControlElementType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcUnitaryControlElementType::IfcUnitaryControlElementType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcUnitaryControlElementTypeEnum::Value v10_PredefinedType) : IfcDistributionControlElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcUnitaryControlElementTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcUnitaryEquipment
boost::optional< ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value > Ifc4x3_rc2::IfcUnitaryEquipment::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcUnitaryEquipment::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryEquipment::declaration() const { return *IFC4X3_RC2_IfcUnitaryEquipment_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryEquipment::Class() { return *IFC4X3_RC2_IfcUnitaryEquipment_type; }
Ifc4x3_rc2::IfcUnitaryEquipment::IfcUnitaryEquipment(IfcEntityInstanceData* e) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcUnitaryEquipment_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcUnitaryEquipment::IfcUnitaryEquipment(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value > v9_PredefinedType) : IfcEnergyConversionDevice((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcUnitaryEquipmentTypeEnum::Value Ifc4x3_rc2::IfcUnitaryEquipmentType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcUnitaryEquipmentType::setPredefinedType(::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryEquipmentType::declaration() const { return *IFC4X3_RC2_IfcUnitaryEquipmentType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcUnitaryEquipmentType::Class() { return *IFC4X3_RC2_IfcUnitaryEquipmentType_type; }
Ifc4x3_rc2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(IfcEntityInstanceData* e) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcUnitaryEquipmentType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcUnitaryEquipmentType::IfcUnitaryEquipmentType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcUnitaryEquipmentTypeEnum::Value v10_PredefinedType) : IfcEnergyConversionDeviceType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcUnitaryEquipmentTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcValve
boost::optional< ::Ifc4x3_rc2::IfcValveTypeEnum::Value > Ifc4x3_rc2::IfcValve::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcValveTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcValve::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcValveTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcValveTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcValve::declaration() const { return *IFC4X3_RC2_IfcValve_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcValve::Class() { return *IFC4X3_RC2_IfcValve_type; }
Ifc4x3_rc2::IfcValve::IfcValve(IfcEntityInstanceData* e) : IfcFlowController((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcValve_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcValve::IfcValve(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcValveTypeEnum::Value > v9_PredefinedType) : IfcFlowController((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcValveTypeEnum::Value Ifc4x3_rc2::IfcValveType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcValveTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcValveType::setPredefinedType(::Ifc4x3_rc2::IfcValveTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcValveTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcValveType::declaration() const { return *IFC4X3_RC2_IfcValveType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcValveType::Class() { return *IFC4X3_RC2_IfcValveType_type; }
Ifc4x3_rc2::IfcValveType::IfcValveType(IfcEntityInstanceData* e) : IfcFlowControllerType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcValveType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcValveType::IfcValveType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcValveTypeEnum::Value v10_PredefinedType) : IfcFlowControllerType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcValveTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcVector
::Ifc4x3_rc2::IfcDirection* Ifc4x3_rc2::IfcVector::Orientation() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcDirection>(true); }
void Ifc4x3_rc2::IfcVector::setOrientation(::Ifc4x3_rc2::IfcDirection* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }
double Ifc4x3_rc2::IfcVector::Magnitude() const {  double v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::IfcVector::setMagnitude(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(1,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVector::declaration() const { return *IFC4X3_RC2_IfcVector_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVector::Class() { return *IFC4X3_RC2_IfcVector_type; }
Ifc4x3_rc2::IfcVector::IfcVector(IfcEntityInstanceData* e) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVector_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVector::IfcVector(::Ifc4x3_rc2::IfcDirection* v1_Orientation, double v2_Magnitude) : IfcGeometricRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcVertex::declaration() const { return *IFC4X3_RC2_IfcVertex_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVertex::Class() { return *IFC4X3_RC2_IfcVertex_type; }
Ifc4x3_rc2::IfcVertex::IfcVertex(IfcEntityInstanceData* e) : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVertex_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVertex::IfcVertex() : IfcTopologicalRepresentationItem((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVertex_type);  }

// Function implementations for IfcVertexLoop
::Ifc4x3_rc2::IfcVertex* Ifc4x3_rc2::IfcVertexLoop::LoopVertex() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcVertex>(true); }
void Ifc4x3_rc2::IfcVertexLoop::setLoopVertex(::Ifc4x3_rc2::IfcVertex* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVertexLoop::declaration() const { return *IFC4X3_RC2_IfcVertexLoop_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVertexLoop::Class() { return *IFC4X3_RC2_IfcVertexLoop_type; }
Ifc4x3_rc2::IfcVertexLoop::IfcVertexLoop(IfcEntityInstanceData* e) : IfcLoop((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVertexLoop_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVertexLoop::IfcVertexLoop(::Ifc4x3_rc2::IfcVertex* v1_LoopVertex) : IfcLoop((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVertexLoop_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_LoopVertex));data_->setArgument(0,attr);} }

// Function implementations for IfcVertexPoint
::Ifc4x3_rc2::IfcPoint* Ifc4x3_rc2::IfcVertexPoint::VertexGeometry() const {  return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(0)))->as<::Ifc4x3_rc2::IfcPoint>(true); }
void Ifc4x3_rc2::IfcVertexPoint::setVertexGeometry(::Ifc4x3_rc2::IfcPoint* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(0,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVertexPoint::declaration() const { return *IFC4X3_RC2_IfcVertexPoint_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVertexPoint::Class() { return *IFC4X3_RC2_IfcVertexPoint_type; }
Ifc4x3_rc2::IfcVertexPoint::IfcVertexPoint(IfcEntityInstanceData* e) : IfcVertex((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVertexPoint_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVertexPoint::IfcVertexPoint(::Ifc4x3_rc2::IfcPoint* v1_VertexGeometry) : IfcVertex((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_IfcVertexPoint_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v1_VertexGeometry));data_->setArgument(0,attr);} }

// Function implementations for IfcVibrationDamper
boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc2::IfcVibrationDamper::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcVibrationDamper::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVibrationDamper::declaration() const { return *IFC4X3_RC2_IfcVibrationDamper_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVibrationDamper::Class() { return *IFC4X3_RC2_IfcVibrationDamper_type; }
Ifc4x3_rc2::IfcVibrationDamper::IfcVibrationDamper(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVibrationDamper_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVibrationDamper::IfcVibrationDamper(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVibrationDamperTypeEnum::Value > Ifc4x3_rc2::IfcVibrationDamperType::PredefinedType() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcVibrationDamperType::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::ToString(*v)));}data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVibrationDamperType::declaration() const { return *IFC4X3_RC2_IfcVibrationDamperType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVibrationDamperType::Class() { return *IFC4X3_RC2_IfcVibrationDamperType_type; }
Ifc4x3_rc2::IfcVibrationDamperType::IfcVibrationDamperType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVibrationDamperType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVibrationDamperType::IfcVibrationDamperType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, boost::optional< ::Ifc4x3_rc2::IfcVibrationDamperTypeEnum::Value > v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVibrationIsolatorTypeEnum::Value > Ifc4x3_rc2::IfcVibrationIsolator::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcVibrationIsolator::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVibrationIsolator::declaration() const { return *IFC4X3_RC2_IfcVibrationIsolator_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVibrationIsolator::Class() { return *IFC4X3_RC2_IfcVibrationIsolator_type; }
Ifc4x3_rc2::IfcVibrationIsolator::IfcVibrationIsolator(IfcEntityInstanceData* e) : IfcElementComponent((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVibrationIsolator_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVibrationIsolator::IfcVibrationIsolator(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value > v9_PredefinedType) : IfcElementComponent((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcVibrationIsolatorTypeEnum::Value Ifc4x3_rc2::IfcVibrationIsolatorType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcVibrationIsolatorType::setPredefinedType(::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVibrationIsolatorType::declaration() const { return *IFC4X3_RC2_IfcVibrationIsolatorType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVibrationIsolatorType::Class() { return *IFC4X3_RC2_IfcVibrationIsolatorType_type; }
Ifc4x3_rc2::IfcVibrationIsolatorType::IfcVibrationIsolatorType(IfcEntityInstanceData* e) : IfcElementComponentType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVibrationIsolatorType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVibrationIsolatorType::IfcVibrationIsolatorType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcVibrationIsolatorTypeEnum::Value v10_PredefinedType) : IfcElementComponentType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcVibrationIsolatorTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcVirtualElement


const IfcParse::entity& Ifc4x3_rc2::IfcVirtualElement::declaration() const { return *IFC4X3_RC2_IfcVirtualElement_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVirtualElement::Class() { return *IFC4X3_RC2_IfcVirtualElement_type; }
Ifc4x3_rc2::IfcVirtualElement::IfcVirtualElement(IfcEntityInstanceData* e) : IfcElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVirtualElement_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVirtualElement::IfcVirtualElement(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcGridAxis >::ptr Ifc4x3_rc2::IfcVirtualGridIntersection::IntersectingAxes() const {  aggregate_of_instance::ptr es = *data_->getArgument(0); return es->as< ::Ifc4x3_rc2::IfcGridAxis >(); }
void Ifc4x3_rc2::IfcVirtualGridIntersection::setIntersectingAxes(aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((v)->generalize());data_->setArgument(0,attr);} }
std::vector< double > /*[2:3]*/ Ifc4x3_rc2::IfcVirtualGridIntersection::OffsetDistances() const {  std::vector< double > /*[2:3]*/ v = *data_->getArgument(1); return v; }
void Ifc4x3_rc2::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_rc2::IfcVirtualGridIntersection::declaration() const { return *IFC4X3_RC2_IfcVirtualGridIntersection_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVirtualGridIntersection::Class() { return *IFC4X3_RC2_IfcVirtualGridIntersection_type; }
Ifc4x3_rc2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(IfcEntityInstanceData* e) : IfcUtil::IfcBaseEntity() { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVirtualGridIntersection_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVirtualGridIntersection::IfcVirtualGridIntersection(aggregate_of< ::Ifc4x3_rc2::IfcGridAxis >::ptr v1_IntersectingAxes, std::vector< double > /*[2:3]*/ v2_OffsetDistances) : IfcUtil::IfcBaseEntity() {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcVoidStratum::declaration() const { return *IFC4X3_RC2_IfcVoidStratum_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVoidStratum::Class() { return *IFC4X3_RC2_IfcVoidStratum_type; }
Ifc4x3_rc2::IfcVoidStratum::IfcVoidStratum(IfcEntityInstanceData* e) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVoidStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVoidStratum::IfcVoidStratum(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcVoidingFeatureTypeEnum::Value > Ifc4x3_rc2::IfcVoidingFeature::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcVoidingFeature::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcVoidingFeature::declaration() const { return *IFC4X3_RC2_IfcVoidingFeature_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcVoidingFeature::Class() { return *IFC4X3_RC2_IfcVoidingFeature_type; }
Ifc4x3_rc2::IfcVoidingFeature::IfcVoidingFeature(IfcEntityInstanceData* e) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcVoidingFeature_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcVoidingFeature::IfcVoidingFeature(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcVoidingFeatureTypeEnum::Value > v9_PredefinedType) : IfcFeatureElementSubtraction((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWallTypeEnum::Value > Ifc4x3_rc2::IfcWall::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWallTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcWall::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWallTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWall::declaration() const { return *IFC4X3_RC2_IfcWall_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWall::Class() { return *IFC4X3_RC2_IfcWall_type; }
Ifc4x3_rc2::IfcWall::IfcWall(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWall_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWall::IfcWall(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWallElementedCase::declaration() const { return *IFC4X3_RC2_IfcWallElementedCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWallElementedCase::Class() { return *IFC4X3_RC2_IfcWallElementedCase_type; }
Ifc4x3_rc2::IfcWallElementedCase::IfcWallElementedCase(IfcEntityInstanceData* e) : IfcWall((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWallElementedCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWallElementedCase::IfcWallElementedCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcWall((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWallStandardCase::declaration() const { return *IFC4X3_RC2_IfcWallStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWallStandardCase::Class() { return *IFC4X3_RC2_IfcWallStandardCase_type; }
Ifc4x3_rc2::IfcWallStandardCase::IfcWallStandardCase(IfcEntityInstanceData* e) : IfcWall((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWallStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWallStandardCase::IfcWallStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcWallTypeEnum::Value > v9_PredefinedType) : IfcWall((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWallTypeEnum::Value Ifc4x3_rc2::IfcWallType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcWallTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcWallType::setPredefinedType(::Ifc4x3_rc2::IfcWallTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWallTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWallType::declaration() const { return *IFC4X3_RC2_IfcWallType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWallType::Class() { return *IFC4X3_RC2_IfcWallType_type; }
Ifc4x3_rc2::IfcWallType::IfcWallType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWallType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWallType::IfcWallType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcWallTypeEnum::Value v10_PredefinedType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWallTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcWasteTerminal
boost::optional< ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value > Ifc4x3_rc2::IfcWasteTerminal::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcWasteTerminal::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWasteTerminal::declaration() const { return *IFC4X3_RC2_IfcWasteTerminal_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWasteTerminal::Class() { return *IFC4X3_RC2_IfcWasteTerminal_type; }
Ifc4x3_rc2::IfcWasteTerminal::IfcWasteTerminal(IfcEntityInstanceData* e) : IfcFlowTerminal((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWasteTerminal_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWasteTerminal::IfcWasteTerminal(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value > v9_PredefinedType) : IfcFlowTerminal((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWasteTerminalTypeEnum::Value Ifc4x3_rc2::IfcWasteTerminalType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcWasteTerminalType::setPredefinedType(::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::ToString(v)));data_->setArgument(9,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWasteTerminalType::declaration() const { return *IFC4X3_RC2_IfcWasteTerminalType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWasteTerminalType::Class() { return *IFC4X3_RC2_IfcWasteTerminalType_type; }
Ifc4x3_rc2::IfcWasteTerminalType::IfcWasteTerminalType(IfcEntityInstanceData* e) : IfcFlowTerminalType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWasteTerminalType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWasteTerminalType::IfcWasteTerminalType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcWasteTerminalTypeEnum::Value v10_PredefinedType) : IfcFlowTerminalType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWasteTerminalTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);} }

// Function implementations for IfcWaterStratum


const IfcParse::entity& Ifc4x3_rc2::IfcWaterStratum::declaration() const { return *IFC4X3_RC2_IfcWaterStratum_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWaterStratum::Class() { return *IFC4X3_RC2_IfcWaterStratum_type; }
Ifc4x3_rc2::IfcWaterStratum::IfcWaterStratum(IfcEntityInstanceData* e) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWaterStratum_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWaterStratum::IfcWaterStratum(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag) : IfcGeotechnicalStratum((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWindow::OverallHeight() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcWindow::setOverallHeight(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindow::OverallWidth() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcWindow::setOverallWidth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > Ifc4x3_rc2::IfcWindow::PredefinedType() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWindowTypeEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcWindow::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWindowTypeEnum::ToString(*v)));}data_->setArgument(10,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > Ifc4x3_rc2::IfcWindow::PartitioningType() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(11)); }
void Ifc4x3_rc2::IfcWindow::setPartitioningType(boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::ToString(*v)));}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWindow::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcWindow::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWindow::declaration() const { return *IFC4X3_RC2_IfcWindow_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWindow::Class() { return *IFC4X3_RC2_IfcWindow_type; }
Ifc4x3_rc2::IfcWindow::IfcWindow(IfcEntityInstanceData* e) : IfcBuiltElement((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWindow_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWindow::IfcWindow(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElement((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcWindowLiningProperties::LiningDepth() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningThickness() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::TransomThickness() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setTransomThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::MullionThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setMullionThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::FirstTransomOffset() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setFirstTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::SecondTransomOffset() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } double v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setSecondTransomOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::FirstMullionOffset() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } double v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setFirstMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::SecondMullionOffset() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } double v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setSecondMullionOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcWindowLiningProperties::ShapeAspectStyle() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(12)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); }
void Ifc4x3_rc2::IfcWindowLiningProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(12,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningOffset() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } double v = *data_->getArgument(13); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningOffset(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(13,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningToPanelOffsetX() const { if(!data_->getArgument(14) || data_->getArgument(14)->isNull()) { return boost::none; } double v = *data_->getArgument(14); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningToPanelOffsetX(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(14,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowLiningProperties::LiningToPanelOffsetY() const { if(!data_->getArgument(15) || data_->getArgument(15)->isNull()) { return boost::none; } double v = *data_->getArgument(15); return v; }
void Ifc4x3_rc2::IfcWindowLiningProperties::setLiningToPanelOffsetY(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(15,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWindowLiningProperties::declaration() const { return *IFC4X3_RC2_IfcWindowLiningProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWindowLiningProperties::Class() { return *IFC4X3_RC2_IfcWindowLiningProperties_type; }
Ifc4x3_rc2::IfcWindowLiningProperties::IfcWindowLiningProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWindowLiningProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWindowLiningProperties::IfcWindowLiningProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_RC2_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_rc2::IfcWindowPanelOperationEnum::Value Ifc4x3_rc2::IfcWindowPanelProperties::OperationType() const {  return ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::FromString(*data_->getArgument(4)); }
void Ifc4x3_rc2::IfcWindowPanelProperties::setOperationType(::Ifc4x3_rc2::IfcWindowPanelOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowPanelOperationEnum::ToString(v)));data_->setArgument(4,attr);} }
::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value Ifc4x3_rc2::IfcWindowPanelProperties::PanelPosition() const {  return ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::FromString(*data_->getArgument(5)); }
void Ifc4x3_rc2::IfcWindowPanelProperties::setPanelPosition(::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowPanelPositionEnum::ToString(v)));data_->setArgument(5,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowPanelProperties::FrameDepth() const { if(!data_->getArgument(6) || data_->getArgument(6)->isNull()) { return boost::none; } double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcWindowPanelProperties::setFrameDepth(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcWindowPanelProperties::FrameThickness() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcWindowPanelProperties::setFrameThickness(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
::Ifc4x3_rc2::IfcShapeAspect* Ifc4x3_rc2::IfcWindowPanelProperties::ShapeAspectStyle() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(8)))->as<::Ifc4x3_rc2::IfcShapeAspect>(true); }
void Ifc4x3_rc2::IfcWindowPanelProperties::setShapeAspectStyle(::Ifc4x3_rc2::IfcShapeAspect* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWindowPanelProperties::declaration() const { return *IFC4X3_RC2_IfcWindowPanelProperties_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWindowPanelProperties::Class() { return *IFC4X3_RC2_IfcWindowPanelProperties_type; }
Ifc4x3_rc2::IfcWindowPanelProperties::IfcWindowPanelProperties(IfcEntityInstanceData* e) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWindowPanelProperties_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWindowPanelProperties::IfcWindowPanelProperties(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, ::Ifc4x3_rc2::IfcWindowPanelOperationEnum::Value v5_OperationType, ::Ifc4x3_rc2::IfcWindowPanelPositionEnum::Value v6_PanelPosition, boost::optional< double > v7_FrameDepth, boost::optional< double > v8_FrameThickness, ::Ifc4x3_rc2::IfcShapeAspect* v9_ShapeAspectStyle) : IfcPreDefinedPropertySet((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWindowPanelOperationEnum::ToString(v5_OperationType))));data_->setArgument(4,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v6_PanelPosition,::Ifc4x3_rc2::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_rc2::IfcWindowStandardCase::declaration() const { return *IFC4X3_RC2_IfcWindowStandardCase_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWindowStandardCase::Class() { return *IFC4X3_RC2_IfcWindowStandardCase_type; }
Ifc4x3_rc2::IfcWindowStandardCase::IfcWindowStandardCase(IfcEntityInstanceData* e) : IfcWindow((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWindowStandardCase_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWindowStandardCase::IfcWindowStandardCase(std::string v1_GlobalId, ::Ifc4x3_rc2::IfcOwnerHistory* v2_OwnerHistory, boost::optional< std::string > v3_Name, boost::optional< std::string > v4_Description, boost::optional< std::string > v5_ObjectType, ::Ifc4x3_rc2::IfcObjectPlacement* v6_ObjectPlacement, ::Ifc4x3_rc2::IfcProductRepresentation* v7_Representation, boost::optional< std::string > v8_Tag, boost::optional< double > v9_OverallHeight, boost::optional< double > v10_OverallWidth, boost::optional< ::Ifc4x3_rc2::IfcWindowTypeEnum::Value > v11_PredefinedType, boost::optional< ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value > v12_PartitioningType, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcWindow((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::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_rc2::IfcWindowStyleConstructionEnum::Value Ifc4x3_rc2::IfcWindowStyle::ConstructionType() const {  return ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcWindowStyle::setConstructionType(::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::ToString(v)));data_->setArgument(8,attr);} }
::Ifc4x3_rc2::IfcWindowStyleOperationEnum::Value Ifc4x3_rc2::IfcWindowStyle::OperationType() const {  return ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcWindowStyle::setOperationType(::Ifc4x3_rc2::IfcWindowStyleOperationEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowStyleOperationEnum::ToString(v)));data_->setArgument(9,attr);} }
bool Ifc4x3_rc2::IfcWindowStyle::ParameterTakesPrecedence() const {  bool v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcWindowStyle::setParameterTakesPrecedence(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(10,attr);} }
bool Ifc4x3_rc2::IfcWindowStyle::Sizeable() const {  bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcWindowStyle::setSizeable(bool v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWindowStyle::declaration() const { return *IFC4X3_RC2_IfcWindowStyle_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWindowStyle::Class() { return *IFC4X3_RC2_IfcWindowStyle_type; }
Ifc4x3_rc2::IfcWindowStyle::IfcWindowStyle(IfcEntityInstanceData* e) : IfcTypeProduct((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWindowStyle_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWindowStyle::IfcWindowStyle(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, ::Ifc4x3_rc2::IfcWindowStyleConstructionEnum::Value v9_ConstructionType, ::Ifc4x3_rc2::IfcWindowStyleOperationEnum::Value v10_OperationType, bool v11_ParameterTakesPrecedence, bool v12_Sizeable) : IfcTypeProduct((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWindowStyleConstructionEnum::ToString(v9_ConstructionType))));data_->setArgument(8,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v10_OperationType,::Ifc4x3_rc2::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_rc2::IfcWindowTypeEnum::Value Ifc4x3_rc2::IfcWindowType::PredefinedType() const {  return ::Ifc4x3_rc2::IfcWindowTypeEnum::FromString(*data_->getArgument(9)); }
void Ifc4x3_rc2::IfcWindowType::setPredefinedType(::Ifc4x3_rc2::IfcWindowTypeEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowTypeEnum::ToString(v)));data_->setArgument(9,attr);} }
::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value Ifc4x3_rc2::IfcWindowType::PartitioningType() const {  return ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::FromString(*data_->getArgument(10)); }
void Ifc4x3_rc2::IfcWindowType::setPartitioningType(::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(v,::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::ToString(v)));data_->setArgument(10,attr);} }
boost::optional< bool > Ifc4x3_rc2::IfcWindowType::ParameterTakesPrecedence() const { if(!data_->getArgument(11) || data_->getArgument(11)->isNull()) { return boost::none; } bool v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcWindowType::setParameterTakesPrecedence(boost::optional< bool > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWindowType::UserDefinedPartitioningType() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcWindowType::setUserDefinedPartitioningType(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWindowType::declaration() const { return *IFC4X3_RC2_IfcWindowType_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWindowType::Class() { return *IFC4X3_RC2_IfcWindowType_type; }
Ifc4x3_rc2::IfcWindowType::IfcWindowType(IfcEntityInstanceData* e) : IfcBuiltElementType((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWindowType_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWindowType::IfcWindowType(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcPropertySetDefinition >::ptr > v6_HasPropertySets, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcRepresentationMap >::ptr > v7_RepresentationMaps, boost::optional< std::string > v8_Tag, boost::optional< std::string > v9_ElementType, ::Ifc4x3_rc2::IfcWindowTypeEnum::Value v10_PredefinedType, ::Ifc4x3_rc2::IfcWindowTypePartitioningEnum::Value v11_PartitioningType, boost::optional< bool > v12_ParameterTakesPrecedence, boost::optional< std::string > v13_UserDefinedPartitioningType) : IfcBuiltElementType((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::IfcWindowTypeEnum::ToString(v10_PredefinedType))));data_->setArgument(9,attr);}{IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v11_PartitioningType,::Ifc4x3_rc2::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_rc2::IfcWorkTime >::ptr > Ifc4x3_rc2::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_rc2::IfcWorkTime >(); }
void Ifc4x3_rc2::IfcWorkCalendar::setWorkingTimes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > Ifc4x3_rc2::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_rc2::IfcWorkTime >(); }
void Ifc4x3_rc2::IfcWorkCalendar::setExceptionTimes(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
boost::optional< ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Value > Ifc4x3_rc2::IfcWorkCalendar::PredefinedType() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::FromString(*data_->getArgument(8)); }
void Ifc4x3_rc2::IfcWorkCalendar::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::ToString(*v)));}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWorkCalendar::declaration() const { return *IFC4X3_RC2_IfcWorkCalendar_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWorkCalendar::Class() { return *IFC4X3_RC2_IfcWorkCalendar_type; }
Ifc4x3_rc2::IfcWorkCalendar::IfcWorkCalendar(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWorkCalendar_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWorkCalendar::IfcWorkCalendar(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::IfcWorkTime >::ptr > v7_WorkingTimes, boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcWorkTime >::ptr > v8_ExceptionTimes, boost::optional< ::Ifc4x3_rc2::IfcWorkCalendarTypeEnum::Value > v9_PredefinedType) : IfcControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWorkControl::CreationDate() const {  std::string v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcWorkControl::setCreationDate(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > Ifc4x3_rc2::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_rc2::IfcPerson >(); }
void Ifc4x3_rc2::IfcWorkControl::setCreators(boost::optional< aggregate_of< ::Ifc4x3_rc2::IfcPerson >::ptr > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set((*v)->generalize());}data_->setArgument(7,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::Purpose() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } std::string v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcWorkControl::setPurpose(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::Duration() const { if(!data_->getArgument(9) || data_->getArgument(9)->isNull()) { return boost::none; } std::string v = *data_->getArgument(9); return v; }
void Ifc4x3_rc2::IfcWorkControl::setDuration(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(9,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::TotalFloat() const { if(!data_->getArgument(10) || data_->getArgument(10)->isNull()) { return boost::none; } std::string v = *data_->getArgument(10); return v; }
void Ifc4x3_rc2::IfcWorkControl::setTotalFloat(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(10,attr);} }
std::string Ifc4x3_rc2::IfcWorkControl::StartTime() const {  std::string v = *data_->getArgument(11); return v; }
void Ifc4x3_rc2::IfcWorkControl::setStartTime(std::string v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(11,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWorkControl::FinishTime() const { if(!data_->getArgument(12) || data_->getArgument(12)->isNull()) { return boost::none; } std::string v = *data_->getArgument(12); return v; }
void Ifc4x3_rc2::IfcWorkControl::setFinishTime(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(12,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWorkControl::declaration() const { return *IFC4X3_RC2_IfcWorkControl_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWorkControl::Class() { return *IFC4X3_RC2_IfcWorkControl_type; }
Ifc4x3_rc2::IfcWorkControl::IfcWorkControl(IfcEntityInstanceData* e) : IfcControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWorkControl_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWorkControl::IfcWorkControl(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_RC2_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_rc2::IfcWorkPlanTypeEnum::Value > Ifc4x3_rc2::IfcWorkPlan::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc2::IfcWorkPlan::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkPlanTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkPlanTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWorkPlan::declaration() const { return *IFC4X3_RC2_IfcWorkPlan_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWorkPlan::Class() { return *IFC4X3_RC2_IfcWorkPlan_type; }
Ifc4x3_rc2::IfcWorkPlan::IfcWorkPlan(IfcEntityInstanceData* e) : IfcWorkControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWorkPlan_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWorkPlan::IfcWorkPlan(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcWorkPlanTypeEnum::Value > v14_PredefinedType) : IfcWorkControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcWorkScheduleTypeEnum::Value > Ifc4x3_rc2::IfcWorkSchedule::PredefinedType() const { if(!data_->getArgument(13) || data_->getArgument(13)->isNull()) { return boost::none; } return ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::FromString(*data_->getArgument(13)); }
void Ifc4x3_rc2::IfcWorkSchedule::setPredefinedType(boost::optional< ::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::Value > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(IfcWrite::IfcWriteArgument::EnumerationReference(*v,::Ifc4x3_rc2::IfcWorkScheduleTypeEnum::ToString(*v)));}data_->setArgument(13,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWorkSchedule::declaration() const { return *IFC4X3_RC2_IfcWorkSchedule_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWorkSchedule::Class() { return *IFC4X3_RC2_IfcWorkSchedule_type; }
Ifc4x3_rc2::IfcWorkSchedule::IfcWorkSchedule(IfcEntityInstanceData* e) : IfcWorkControl((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWorkSchedule_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWorkSchedule::IfcWorkSchedule(std::string v1_GlobalId, ::Ifc4x3_rc2::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_rc2::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_rc2::IfcWorkScheduleTypeEnum::Value > v14_PredefinedType) : IfcWorkControl((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcRecurrencePattern* Ifc4x3_rc2::IfcWorkTime::RecurrencePattern() const { if(!data_->getArgument(3) || data_->getArgument(3)->isNull()) { return nullptr; } return ((IfcUtil::IfcBaseClass*)(*data_->getArgument(3)))->as<::Ifc4x3_rc2::IfcRecurrencePattern>(true); }
void Ifc4x3_rc2::IfcWorkTime::setRecurrencePattern(::Ifc4x3_rc2::IfcRecurrencePattern* v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWorkTime::Start() const { if(!data_->getArgument(4) || data_->getArgument(4)->isNull()) { return boost::none; } std::string v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcWorkTime::setStart(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(4,attr);} }
boost::optional< std::string > Ifc4x3_rc2::IfcWorkTime::Finish() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcWorkTime::setFinish(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcWorkTime::declaration() const { return *IFC4X3_RC2_IfcWorkTime_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcWorkTime::Class() { return *IFC4X3_RC2_IfcWorkTime_type; }
Ifc4x3_rc2::IfcWorkTime::IfcWorkTime(IfcEntityInstanceData* e) : IfcSchedulingTime((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcWorkTime_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcWorkTime::IfcWorkTime(boost::optional< std::string > v1_Name, boost::optional< ::Ifc4x3_rc2::IfcDataOriginEnum::Value > v2_DataOrigin, boost::optional< std::string > v3_UserDefinedDataOrigin, ::Ifc4x3_rc2::IfcRecurrencePattern* v4_RecurrencePattern, boost::optional< std::string > v5_Start, boost::optional< std::string > v6_Finish) : IfcSchedulingTime((IfcEntityInstanceData*)0) {data_ = new IfcEntityInstanceData(IFC4X3_RC2_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_rc2::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_rc2::IfcZShapeProfileDef::Depth() const {  double v = *data_->getArgument(3); return v; }
void Ifc4x3_rc2::IfcZShapeProfileDef::setDepth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(3,attr);} }
double Ifc4x3_rc2::IfcZShapeProfileDef::FlangeWidth() const {  double v = *data_->getArgument(4); return v; }
void Ifc4x3_rc2::IfcZShapeProfileDef::setFlangeWidth(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(4,attr);} }
double Ifc4x3_rc2::IfcZShapeProfileDef::WebThickness() const {  double v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcZShapeProfileDef::setWebThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(5,attr);} }
double Ifc4x3_rc2::IfcZShapeProfileDef::FlangeThickness() const {  double v = *data_->getArgument(6); return v; }
void Ifc4x3_rc2::IfcZShapeProfileDef::setFlangeThickness(double v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set(v);data_->setArgument(6,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcZShapeProfileDef::FilletRadius() const { if(!data_->getArgument(7) || data_->getArgument(7)->isNull()) { return boost::none; } double v = *data_->getArgument(7); return v; }
void Ifc4x3_rc2::IfcZShapeProfileDef::setFilletRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(7,attr);} }
boost::optional< double > Ifc4x3_rc2::IfcZShapeProfileDef::EdgeRadius() const { if(!data_->getArgument(8) || data_->getArgument(8)->isNull()) { return boost::none; } double v = *data_->getArgument(8); return v; }
void Ifc4x3_rc2::IfcZShapeProfileDef::setEdgeRadius(boost::optional< double > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(8,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcZShapeProfileDef::declaration() const { return *IFC4X3_RC2_IfcZShapeProfileDef_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcZShapeProfileDef::Class() { return *IFC4X3_RC2_IfcZShapeProfileDef_type; }
Ifc4x3_rc2::IfcZShapeProfileDef::IfcZShapeProfileDef(IfcEntityInstanceData* e) : IfcParameterizedProfileDef((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcZShapeProfileDef_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcZShapeProfileDef::IfcZShapeProfileDef(::Ifc4x3_rc2::IfcProfileTypeEnum::Value v1_ProfileType, boost::optional< std::string > v2_ProfileName, ::Ifc4x3_rc2::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_RC2_IfcZShapeProfileDef_type); {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();attr->set((IfcWrite::IfcWriteArgument::EnumerationReference(v1_ProfileType,::Ifc4x3_rc2::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_rc2::IfcZone::LongName() const { if(!data_->getArgument(5) || data_->getArgument(5)->isNull()) { return boost::none; } std::string v = *data_->getArgument(5); return v; }
void Ifc4x3_rc2::IfcZone::setLongName(boost::optional< std::string > v) { {IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument();if (v) {attr->set(*v);}data_->setArgument(5,attr);} }


const IfcParse::entity& Ifc4x3_rc2::IfcZone::declaration() const { return *IFC4X3_RC2_IfcZone_type; }
const IfcParse::entity& Ifc4x3_rc2::IfcZone::Class() { return *IFC4X3_RC2_IfcZone_type; }
Ifc4x3_rc2::IfcZone::IfcZone(IfcEntityInstanceData* e) : IfcSystem((IfcEntityInstanceData*)0) { if (!e) return; if (e->type() != IFC4X3_RC2_IfcZone_type) throw IfcException("Unable to find keyword in schema"); data_ = e; }
Ifc4x3_rc2::IfcZone::IfcZone(std::string v1_GlobalId, ::Ifc4x3_rc2::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_RC2_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); } }

